# Whova MCP tools

> Every Whova MCP tool on the Cotlet server: tool names, input schemas, a tools/call example and an example result for each tool.

Source: https://cotlet.dev/docs/mcp/whova

Docs sections: [Get started](https://cotlet.dev/docs.md) · [REST API](https://cotlet.dev/docs/api.md) · [MCP](https://cotlet.dev/docs/mcp.md) · [SDKs & CLI](https://cotlet.dev/docs/sdks.md) · [Integrations](https://cotlet.dev/docs/integrations.md)

11 tools for Whova on the Cotlet MCP server. Your agent picks them from tools/list.

- MCP server: `https://cotlet.dev/mcp/v1`
- Connects with: Your own Whova organizer account for the event
- Integration page: https://cotlet.dev/integrations/whova-api-mcp-server

## Endpoints

| Endpoint | Access | Description |
|---|---|---|
| `whova_list_events` | read | Events you can manage as an organizer, with dates and status. |
| `whova_list_attendees` | read | Attendees of an event with email, company, ticket type, audience type and check-in status. |
| `whova_list_registrations` | read | Registration orders with registrant, ticket type and order date, newest first. |
| `whova_list_sessions` | read | Agenda sessions with time, tracks, speakers and description, in agenda order. |
| `whova_list_speakers` | read | Speakers of an event from the Speaker Center, with their sessions. |
| `whova_get_post_event_report` | read | The post-event report of an event as text sections, available after the event ends. |
| `whova_add_session` | write | Add a session to the agenda in Session Manager. |
| `whova_update_session` | write | Change the time, tracks, speakers or description of an existing session. |
| `whova_add_attendee` | write | Create or update one attendee by name and email. |
| `whova_send_announcement` | write | Post an announcement for the attendees of an event. |
| `whova_message_speakers` | write | Email all speakers of an event, or the ones you list, through Whova. |

## List events

MCP tool: `whova_list_events`

Access: read.

Returns every event of your organizer account, newest first. Use event_id from each item in the other tools. Dates are in the time zone of the event.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `status` | enum | no | upcoming, past or all. Default: upcoming. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "whova_list_events",
    "arguments": {}
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "events": [
      {
        "event_id": "284611",
        "name": "Northwind Summit 2026",
        "start": "2026-10-21",
        "end": "2026-10-23",
        "status": "upcoming"
      },
      {
        "event_id": "271905",
        "name": "Northwind Summit 2025",
        "start": "2025-10-14",
        "end": "2025-10-16",
        "status": "past"
      }
    ]
  },
  "isError": false
}
```

## List attendees

MCP tool: `whova_list_attendees`

Access: read.

Lists attendees of one event. Filter by ticket type or audience type, or by check-in status to see who has not arrived. Pages hold up to 500 attendees; pass next_cursor back as cursor for the next page.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `event_id` | string | yes | Event ID from list_events. |
| `ticket_type` | string | no | Only holders of this ticket type, as named in your event. |
| `audience_type` | string | no | Only attendees with this audience type, as named in your event. |
| `checked_in` | boolean | no | true for checked-in attendees, false for those not checked in. |
| `limit` | integer | no | 1 to 500. Default: 100. |
| `cursor` | string | no | Next page cursor from the previous call. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "whova_list_attendees",
    "arguments": {
      "event_id": "event_8c41d2"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "attendees": [
      {
        "attendee_id": "at_5521",
        "first_name": "Maya",
        "last_name": "Ortiz",
        "email": "maya@example.com",
        "company": "Northwind Labs",
        "ticket_type": "Full Pass",
        "audience_type": "Attendee",
        "checked_in": false
      }
    ],
    "next_cursor": null
  },
  "isError": false
}
```

## List registrations

MCP tool: `whova_list_registrations`

Access: read.

Lists registration orders of one event, newest first. Filter by date or ticket type to get only what is new since your last check. Pages hold up to 500 orders; pass next_cursor back as cursor.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `event_id` | string | yes | Event ID from list_events. |
| `since` | date | no | Only orders placed on or after this date. |
| `ticket_type` | string | no | Only orders with this ticket type. |
| `limit` | integer | no | 1 to 500. Default: 100. |
| `cursor` | string | no | Next page cursor from the previous call. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "whova_list_registrations",
    "arguments": {
      "event_id": "event_8c41d2"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "orders": [
      {
        "order_id": "ord_80231",
        "registrant": "Maya Ortiz",
        "email": "maya@example.com",
        "ticket_type": "Full Pass",
        "ordered_at": "2026-10-10T14:12:00Z"
      },
      {
        "order_id": "ord_80229",
        "registrant": "Leo Brandt",
        "email": "leo@example.com",
        "ticket_type": "Student",
        "ordered_at": "2026-10-10T09:40:00Z"
      }
    ],
    "next_cursor": null
  },
  "isError": false
}
```

## List sessions

MCP tool: `whova_list_sessions`

Access: read.

Lists the sessions of one event in agenda order. Filter by day or track. Use session_id with update_session. Times carry the time zone of the event.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `event_id` | string | yes | Event ID from list_events. |
| `date` | date | no | Only sessions on this day. |
| `track` | string | no | Only sessions in this track. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "whova_list_sessions",
    "arguments": {
      "event_id": "event_8c41d2"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "sessions": [
      {
        "session_id": "s_30871",
        "title": "Breakout: Pricing workshop",
        "start": "2026-10-22T14:00:00-07:00",
        "end": "2026-10-22T15:00:00-07:00",
        "tracks": [
          "Workshops"
        ],
        "speakers": [
          "Jon Pike"
        ]
      }
    ]
  },
  "isError": false
}
```

## List speakers

MCP tool: `whova_list_speakers`

Access: read.

Lists the speakers of one event with the sessions each one speaks in. Speakers added to a session appear here automatically. Use it to build the recipient list for message_speakers.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `event_id` | string | yes | Event ID from list_events. |
| `session_id` | string | no | Only speakers of this session. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "whova_list_speakers",
    "arguments": {
      "event_id": "event_8c41d2"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "speakers": [
      {
        "speaker_id": "sp_204",
        "name": "Dana Reyes",
        "email": "dana@example.com",
        "sessions": [
          "Opening keynote"
        ]
      }
    ]
  },
  "isError": false
}
```

## Get post-event report

MCP tool: `whova_get_post_event_report`

Access: read.

Returns the post-event report of one finished event as titled sections with their figures. Pass section to read one part, for example Sponsors and exhibitors. Whova releases the report only after the organizer requests it under Tools > Report; until then the call fails with a not-ready error.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `event_id` | string | yes | Event ID from list_events. |
| `section` | string | no | Section title as shown in the report. Default: all sections. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "whova_get_post_event_report",
    "arguments": {
      "event_id": "271905",
      "section": "Sponsors and exhibitors"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "event_id": "271905",
    "sections": [
      {
        "title": "Sponsors and exhibitors",
        "text": "Total sponsor impressions, exhibitor leads and attendee profile views, then impressions per sponsor."
      }
    ]
  },
  "isError": false
}
```

## Add session

MCP tool: `whova_add_session`

Access: write.

Creates one session in the agenda of one event. Speakers you name also appear in the Speaker Center. The session shows in the event app agenda at once. It reaches no one directly and one update_session or a delete in Whova undoes it, so it runs without asking.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `event_id` | string | yes | Event ID from list_events. |
| `title` | string | yes | Session title. |
| `start` | datetime | yes | Start, ISO 8601 with time zone. |
| `end` | datetime | yes | End, ISO 8601 with time zone. |
| `tracks` | string[] | no | Tracks the session belongs to, as named in your event. |
| `speakers` | string[] | no | Speaker names. |
| `description` | string | no | Session description. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "whova_add_session",
    "arguments": {
      "event_id": "event_8c41d2",
      "title": "title",
      "start": "2026-10-01T09:00:00Z",
      "end": "2026-10-01T09:00:00Z"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "session_id": "s_30902",
    "event_id": "284611",
    "title": "Opening keynote",
    "start": "2026-10-21T09:00:00-07:00",
    "end": "2026-10-21T09:45:00-07:00",
    "tracks": [
      "Main stage"
    ],
    "speakers": [
      "Dana Reyes"
    ],
    "status": "created"
  },
  "isError": false
}
```

## Update session

MCP tool: `whova_update_session`

Access: write.

Changes the fields you send and leaves the others as they are. Moving a block of sessions means one call per session. It reaches no one directly and one more call restores the old values, so it runs without asking.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `event_id` | string | yes | Event ID from list_events. |
| `session_id` | string | yes | Session ID from list_sessions. |
| `title` | string | no | New title. |
| `start` | datetime | no | New start, ISO 8601 with time zone. |
| `end` | datetime | no | New end, ISO 8601 with time zone. |
| `tracks` | string[] | no | Replaces the tracks. |
| `speakers` | string[] | no | Replaces the speakers. |
| `description` | string | no | New description. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "whova_update_session",
    "arguments": {
      "event_id": "284611",
      "session_id": "s_30871",
      "start": "2026-10-22T15:00:00-07:00",
      "end": "2026-10-22T16:00:00-07:00"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "session_id": "s_30871",
    "event_id": "284611",
    "title": "Breakout: Pricing workshop",
    "start": "2026-10-22T15:00:00-07:00",
    "end": "2026-10-22T16:00:00-07:00",
    "status": "updated"
  },
  "isError": false
}
```

## Add attendee

MCP tool: `whova_add_attendee`

Access: write. Confirm: waits for the user's OK before it runs.

Creates the attendee, or updates the one with the same email. The attendee appears in the event's attendee list. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `event_id` | string | yes | Event ID from list_events. |
| `first_name` | string | yes | First name. |
| `last_name` | string | yes | Last name. |
| `email` | string | yes | Attendee email. |
| `company` | string | no | Company or organization. |
| `title` | string | no | Job title. |
| `ticket_type` | string | no | Ticket type, as named in your event. |
| `audience_type` | string | no | Audience type, as named in your event. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "whova_add_attendee",
    "arguments": {
      "event_id": "event_8c41d2",
      "first_name": "first name",
      "last_name": "last name",
      "email": "jane@example.com"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "attendee_id": "at_5530",
    "event_id": "284611",
    "email": "sam@example.com",
    "status": "created"
  },
  "isError": false
}
```

## Send announcement

MCP tool: `whova_send_announcement`

Access: write. Confirm: waits for the user's OK before it runs.

Posts an announcement to the attendees of one event. App users get it as a push notification, and Whova also connects announcements to attendees' email, so people without the app are notified. It reaches every attendee at once. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `event_id` | string | yes | Event ID from list_events. |
| `message` | string | yes | Announcement text. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "whova_send_announcement",
    "arguments": {
      "event_id": "284611",
      "message": "The opening keynote has moved to Hall B. Doors open at 8:45."
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "announcement_id": "ann_90314",
    "event_id": "284611",
    "status": "sent"
  },
  "isError": false
}
```

## Message speakers

MCP tool: `whova_message_speakers`

Access: write. Confirm: waits for the user's OK before it runs.

Sends an email to speakers through Whova's speaker messaging. Leave speaker_ids out to email all speakers of the event. Speakers receive it from Whova, not from your own address. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `event_id` | string | yes | Event ID from list_events. |
| `subject` | string | yes | Email subject. |
| `body` | string | yes | Email body. |
| `speaker_ids` | string[] | no | Speaker IDs from list_speakers. Default: all speakers. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "whova_message_speakers",
    "arguments": {
      "event_id": "284611",
      "subject": "Your session at Northwind Summit: 21 Oct, 9:00 AM",
      "body": "Hi Dana, you open the summit with the keynote on 21 Oct, 9:00 to 9:45 AM on the Main stage. Please keep the talk to 40 minutes plus 5 for questions.",
      "speaker_ids": [
        "sp_204"
      ]
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "message_id": "msg_4107",
    "event_id": "284611",
    "recipients": 18,
    "status": "sent"
  },
  "isError": false
}
```
