MCP tools reference
Partiful MCP tools
13 tools for Partiful on the Cotlet MCP server. Your agent picks them from tools/list.
- MCP server
- https://cotlet.dev/mcp/v1
- Connects with
- Your own Partiful host account
- Integration page
- Partiful
| Endpoint | Access | Description |
|---|---|---|
| partiful_list_events | read | Events you host, with date, status and guest counts. |
| partiful_get_event | read | Full event: title, description, start and end, location, RSVP deadline, guest limit, Guest Approval and waitlist settings, link. |
| partiful_list_guests | read | Guests of an event with RSVP status, check-in and Guest Questionnaire answers. |
| partiful_export_guest_list | read | The guest list as a CSV file link, the same file as the Export CSV button. |
| partiful_list_past_guests | read | People you can invite: your past guests and mutuals, optionally from one past event. |
| partiful_create_event | write | New event page. Nobody is invited until you call invite_guests. |
| partiful_update_event | write | Change the details or settings of an event you host. |
| partiful_duplicate_event | write | Copy an event with its settings to a new date. The copy has no guests yet. |
| partiful_invite_guests | write | Invite past guests and mutuals through Partiful, or anyone by email. |
| partiful_approve_guests | write | Approve pending guests on a Guest Approval event. |
| partiful_check_in_guests | write | Mark guests as checked in at the door, or undo it. |
| partiful_send_text_blast | write | Text a message to guests by RSVP status. Partiful allows up to 10 Text Blasts per event. |
| partiful_cancel_event | write | Cancel an event. Partiful notifies the guests. |
List events
readMCP tool partiful_list_events
Returns your events with start time, whether the event is canceled and counts of guests by RSVP status. Use event_id from each item in the other tools. Pages hold up to 50 events; pass next_cursor back as cursor for the next page.
Parameters
| Name | Type | Description |
|---|---|---|
| when | enum | upcoming, past or all. Default: upcoming. |
| limit | integer | 1 to 50. Default: 20. |
| cursor | string | Next page cursor from the previous call. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "partiful_list_events",
"arguments": {}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"events": [
{
"event_id": "evt_hK3vQ9xL",
"title": "Rooftop dinner",
"start_at": "2026-10-17T19:00:00-04:00",
"status": "active",
"guests": {
"going": 28,
"maybe": 9,
"cant_go": 4,
"invited": 31,
"pending": 0
}
},
{
"event_id": "evt_pL8wN2aD",
"title": "Launch party",
"start_at": "2026-10-24T20:00:00-04:00",
"status": "active",
"guests": {
"going": 52,
"maybe": 6,
"cant_go": 11,
"invited": 60,
"pending": 3
}
}
],
"next_cursor": null
},
"isError": false
} Get event
readMCP tool partiful_get_event
Returns one event with its details and the settings you chose in Event Settings: guest limit, waitlist, Guest Approval and the Guest Questionnaire questions. Use it before update_event to see what is set now.
Parameters
| Name | Type | Description |
|---|---|---|
| event_id required | string | Event ID from list_events. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "partiful_get_event",
"arguments": {
"event_id": "event_8c41d2"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"event_id": "evt_hK3vQ9xL",
"title": "Rooftop dinner",
"start_at": "2026-10-17T19:00:00-04:00",
"end_at": "2026-10-17T23:00:00-04:00",
"location": "21 Mercer St, New York",
"description": "Bring a drink to share.",
"rsvp_deadline": "2026-10-15T18:00:00-04:00",
"max_guests": 60,
"waitlist": true,
"guest_approval": false,
"questions": [
"Dietary restrictions"
],
"url": "https://partiful.com/e/hK3vQ9xLexample"
},
"isError": false
} List guests
readMCP tool partiful_list_guests
Returns the guests of one event, each with RSVP status, whether they are checked in and their answers to your Guest Questionnaire. Filter by status to see only pending guests or only the ones going. Pages hold up to 200 guests; pass next_cursor back as cursor for the next page.
Parameters
| Name | Type | Description |
|---|---|---|
| event_id required | string | Event ID from list_events. |
| status | enum | all, going, maybe, cant_go, invited, waitlist or pending. Default: all. |
| checked_in | boolean | Only guests who are checked in (true) or not (false). |
| limit | integer | 1 to 200. Default: 100. |
| cursor | string | Next page cursor from the previous call. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "partiful_list_guests",
"arguments": {
"event_id": "event_8c41d2"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"guests": [
{
"guest_id": "g_41aa",
"name": "Maya Chen",
"status": "going",
"checked_in": false,
"answers": [
{
"question": "Dietary restrictions",
"answer": "Vegetarian"
}
]
},
{
"guest_id": "g_41ab",
"name": "Leo Park",
"status": "going",
"checked_in": false,
"answers": [
{
"question": "Dietary restrictions",
"answer": "Peanut allergy"
}
]
}
],
"next_cursor": null
},
"isError": false
} Export guest list
readMCP tool partiful_export_guest_list
Returns a link to the CSV that Partiful's Export CSV button produces, limited to the RSVP statuses you choose. It includes Guest Questionnaire answers. Your agent or n8n flow reads the file and appends the rows to a sheet or CRM.
Parameters
| Name | Type | Description |
|---|---|---|
| event_id required | string | Event ID from list_events. |
| statuses | string[] | RSVP statuses to include: going, maybe, cant_go, invited, waitlist, pending. Default: all. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "partiful_export_guest_list",
"arguments": {
"event_id": "evt_hK3vQ9xL",
"statuses": [
"going"
]
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"event_id": "evt_hK3vQ9xL",
"statuses": [
"going"
],
"guests": 28,
"download_url": "https://cotlet.dev/api/v1/files/exports/partiful/evt_hK3vQ9xL-going.csv"
},
"isError": false
} List past guests
readMCP tool partiful_list_past_guests
Returns people you can invite again: guests who attended your events and mutuals. Filter to one past event to invite only the people who came to it. Use user_id from each item in invite_guests. Pages hold up to 200 people.
Parameters
| Name | Type | Description |
|---|---|---|
| from_event_id | string | Only people from this past event. |
| query | string | Search by name. |
| limit | integer | 1 to 200. Default: 50. |
| cursor | string | Next page cursor from the previous call. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "partiful_list_past_guests",
"arguments": {}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"people": [
{
"user_id": "u_2f81",
"name": "Maya Chen",
"attended": 3
},
{
"user_id": "u_2f93",
"name": "Leo Park",
"attended": 2
}
],
"next_cursor": null
},
"isError": false
} Create event
writeMCP tool partiful_create_event
Creates an event page on your account. Nobody is invited and nothing is sent, so there is no confirmation; one call to update_event or cancel_event changes it. Guest Approval and the Guest Questionnaire are set here, the same way as in Event Settings.
Parameters
| Name | Type | Description |
|---|---|---|
| title required | string | Event title. |
| start_at required | datetime | ISO 8601 with time zone. |
| end_at | datetime | ISO 8601 with time zone. |
| location | string | Address or place name. |
| description | string | Event details shown on the page. |
| rsvp_deadline | datetime | Last moment guests can RSVP. |
| max_guests | integer | Guest limit; with the waitlist on, extra RSVPs go to the waitlist. |
| guest_approval | boolean | Guests ask to get on the list and you approve them. Default: false. |
| questions | string[] | Guest Questionnaire questions, short answer. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "partiful_create_event",
"arguments": {
"title": "title",
"start_at": "2026-10-01T09:00:00Z"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"event_id": "evt_bK7dR3nM",
"title": "Book club: November",
"start_at": "2026-11-14T19:00:00-05:00",
"status": "active",
"url": "https://partiful.com/e/bK7dR3nMexample"
},
"isError": false
} Update event
writeMCP tool partiful_update_event
Changes the fields you pass and leaves the rest as it is. It sends nothing itself, so there is no confirmation, and another call restores the old values. Use get_event first to see the current values.
Parameters
| Name | Type | Description |
|---|---|---|
| event_id required | string | Event ID from list_events. |
| fields required | object | Any of title, start_at, end_at, location, description, rsvp_deadline, max_guests, guest_approval. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "partiful_update_event",
"arguments": {
"event_id": "event_8c41d2",
"fields": "fields"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"event_id": "evt_hK3vQ9xL",
"updated": [
"location"
],
"location": "88 Bleecker St, New York"
},
"isError": false
} Duplicate event
writeMCP tool partiful_duplicate_event
Does what Clone Event does in Partiful: copies the event details to a new event on the date you give. Guests are not copied, so re-invite them with invite_guests. It sends nothing, so there is no confirmation.
Parameters
| Name | Type | Description |
|---|---|---|
| event_id required | string | Event ID from list_events. |
| start_at required | datetime | Start of the new event, ISO 8601 with time zone. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "partiful_duplicate_event",
"arguments": {
"event_id": "event_8c41d2",
"start_at": "2026-10-01T09:00:00Z"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"event_id": "evt_bK7dR3nM",
"copied_from": "evt_aQ4tX9cE",
"start_at": "2026-11-14T19:00:00-05:00",
"guests": 0
},
"isError": false
} MCP tool partiful_invite_guests
Invites people you pick from list_past_guests and sends email invites to the addresses you give. Partiful caps invites per event at 1,000 in total and 500 by email; a call over the cap fails. Invitees reached by email still log in with their phone number to RSVP. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| event_id required | string | Event ID from list_events. |
| user_ids | string[] | People from list_past_guests. |
| emails | string[] | Email addresses to invite. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "partiful_invite_guests",
"arguments": {
"event_id": "evt_bK7dR3nM",
"user_ids": [
"u_2f81",
"u_2f93"
]
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"event_id": "evt_bK7dR3nM",
"invited": 2,
"by_email": 0,
"status": "sent"
},
"isError": false
} MCP tool partiful_approve_guests
Marks the guests you name as Approved on an event that has Guest Approval on. Only approved guests have access to the event. Guests you leave alone stay Pending. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| event_id required | string | Event ID from list_events. |
| guest_ids required | string[] | Guest IDs from list_guests. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "partiful_approve_guests",
"arguments": {
"event_id": "evt_pL8wN2aD",
"guest_ids": [
"g_41aa",
"g_41ab"
]
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"event_id": "evt_pL8wN2aD",
"approved": 2,
"still_pending": 1
},
"isError": false
} Check in guests
writeMCP tool partiful_check_in_guests
Checks in the guests you name, like checking them in manually from the guest list. Guests are not notified, and set undo to true to remove a check-in, so it runs without asking first.
Parameters
| Name | Type | Description |
|---|---|---|
| event_id required | string | Event ID from list_events. |
| guest_ids required | string[] | Guest IDs from list_guests. |
| undo | boolean | Remove the check-in instead. Default: false. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "partiful_check_in_guests",
"arguments": {
"event_id": "event_8c41d2",
"guest_ids": [
"guest ids"
]
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"event_id": "evt_hK3vQ9xL",
"checked_in": 2,
"undo": false
},
"isError": false
} MCP tool partiful_send_text_blast
Sends one Text Blast to the guests in the statuses you pick, the same as New Blast on the event page. It reaches guests who RSVP'd or were invited directly through Partiful; guests invited by email get it by email until they RSVP. Returns how many people it went to and how many blasts are left. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| event_id required | string | Event ID from list_events. |
| message required | string | Message text. |
| statuses required | string[] | Who receives it: going, maybe, cant_go, invited. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "partiful_send_text_blast",
"arguments": {
"event_id": "evt_hK3vQ9xL",
"message": "Door code is 4512. We start at 7:30, see you soon!",
"statuses": [
"going",
"maybe"
]
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"blast_id": "bl_8Fq2Lw0Zr4",
"event_id": "evt_hK3vQ9xL",
"recipients": 37,
"by_status": {
"going": 28,
"maybe": 9
},
"blasts_left": 7,
"sent_at": "2026-10-17T18:42:05-04:00"
},
"isError": false
} MCP tool partiful_cancel_event
Cancels the event the way Cancel Event does in Partiful. Guests are notified; Partiful has no way to cancel without telling them. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| event_id required | string | Event ID from list_events. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "partiful_cancel_event",
"arguments": {
"event_id": "event_8c41d2"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"event_id": "evt_hK3vQ9xL",
"status": "canceled",
"guests_notified": true
},
"isError": false
}