MCP tools reference
Meetup MCP tools
14 tools for Meetup on the Cotlet MCP server. Your agent picks them from tools/list.
- MCP server
- https://cotlet.dev/mcp/v1
- Connects with
- Your own Meetup account, as organizer or co-organizer of the group
- Integration page
- Meetup
| Endpoint | Access | Description |
|---|---|---|
| meetup_list_groups | read | Groups you organize or co-organize, with member count and your role. |
| meetup_list_events | read | Events of a group with date, RSVP counts, attendee limit and status. |
| meetup_get_event | read | Full event: title, description, time, venue or online link, hosts, fee and settings. |
| meetup_list_attendees | read | RSVPs of an event with guests, answers and check-in status. |
| meetup_list_members | read | Members of your group with join date and role. |
| meetup_create_event | write | New event as a draft, or published without an announcement. |
| meetup_copy_event | write | Copy a past event to a new date, keeping its description, venue and settings. |
| meetup_update_event | write | Change the title, time, description, venue or attendee limit of an upcoming event. |
| meetup_announce_event | write | Send the announcement of a published event to your members. |
| meetup_update_attendee | write | Mark a member as attending, remove them, or move them off the waitlist. |
| meetup_mark_attendance | write | Set check-in status for attendees of an event, from 1 hour before it starts. |
| meetup_message_attendees | write | Send a message to the people who RSVPed going to an upcoming or past event. |
| meetup_message_members | write | Contact members of your group who opted in to organizer announcements. |
| meetup_cancel_event | write | Cancel an upcoming event. Attendees are notified and it cannot be undone. |
List groups
readMCP tool meetup_list_groups
Returns every group where you are organizer or co-organizer. Use group_urlname from each item as the group parameter of the other tools.
Parameters
No parameters.
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "meetup_list_groups",
"arguments": {}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"groups": [
{
"group_urlname": "tech-founders-berlin",
"name": "Tech Founders Berlin",
"role": "organizer",
"members": 2140
}
]
},
"isError": false
} List events
readMCP tool meetup_list_events
Lists events of one group, soonest first for upcoming and newest first for past. Each item has the going and waitlist counts. get_event returns the full text.
Parameters
| Name | Type | Description |
|---|---|---|
| group_urlname required | string | Group URL name, e.g. tech-founders-berlin. |
| status | enum | upcoming, past, draft or cancelled. 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": "meetup_list_events",
"arguments": {
"group_urlname": "https://example.com"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"events": [
{
"event_id": "311204587",
"title": "Python Night #23",
"start_time": "2026-10-08T19:00:00+02:00",
"status": "past",
"going": 38,
"waitlist": 0,
"attendee_limit": 40
}
],
"next_cursor": null
},
"isError": false
} Get event
readMCP tool meetup_get_event
Returns one event with its full description, venue or online link, hosts and settings such as the attendee limit. Use it before copy_event or update_event.
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": "meetup_get_event",
"arguments": {
"event_id": "event_8c41d2"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"event_id": "311204587",
"title": "Python Night #23",
"description": "Lightning talks and pizza.",
"start_time": "2026-10-08T19:00:00+02:00",
"duration_minutes": 120,
"venue": {
"name": "Co-Work Mitte",
"address": "Torstr. 1",
"city": "Berlin"
},
"attendee_limit": 40,
"hosts": [
"Dana K."
]
},
"isError": false
} List attendees
readMCP tool meetup_list_attendees
Returns the RSVPs of one event with the guests each member brings, answers to your event questions and check-in status. Filter by status to see the waitlist or the no-shows.
Parameters
| Name | Type | Description |
|---|---|---|
| event_id required | string | Event ID from list_events. |
| status | enum | going, waitlist, not_going, checked_in, no_show or all. Default: going. |
| cursor | string | Next page cursor from the previous call. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "meetup_list_attendees",
"arguments": {
"event_id": "event_8c41d2"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"attendees": [
{
"member_id": "402118",
"name": "Ana L.",
"status": "going",
"guests": 1,
"checked_in": false
}
],
"next_cursor": null
},
"isError": false
} List members
readMCP tool meetup_list_members
Lists members of one group, newest first. Filter by join date to find new members. Pages hold up to 200 members; pass next_cursor back as cursor.
Parameters
| Name | Type | Description |
|---|---|---|
| group_urlname required | string | Group URL name, e.g. tech-founders-berlin. |
| joined_since | date | Only members who joined on or after this date. |
| 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": "meetup_list_members",
"arguments": {
"group_urlname": "https://example.com"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"members": [
{
"member_id": "402118",
"name": "Ana L.",
"role": "member",
"joined_at": "2026-10-01T18:21:00Z"
}
],
"next_cursor": "eyJvZmZzZXQiOjEwMH0"
},
"isError": false
} MCP tool meetup_create_event
Creates an event in your group. It is saved as a draft unless publish is true. A published event is visible to everyone, but members are told only when you call announce_event. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| group_urlname required | string | Group URL name, e.g. tech-founders-berlin. |
| title required | string | Under 80 characters. |
| start_time required | datetime | ISO 8601 with time zone. |
| duration_minutes | integer | Default: 120. |
| description | string | Event description, Markdown. |
| venue | object | name, address and city, or online_url for an online event. |
| attendee_limit | integer | Turns on the waitlist when reached. |
| publish | boolean | Publish now or keep as draft. Default: false. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "meetup_create_event",
"arguments": {
"group_urlname": "tech-founders-berlin",
"title": "Intro to SQL",
"start_time": "2026-11-03T19:00:00+01:00",
"duration_minutes": 120,
"venue": {
"name": "Co-Work Mitte",
"address": "Torstr. 1",
"city": "Berlin"
},
"attendee_limit": 40,
"publish": false
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"event_id": "311990021",
"status": "draft",
"title": "Intro to SQL",
"start_time": "2026-11-03T19:00:00+01:00"
},
"isError": false
} MCP tool meetup_copy_event
Creates a new event from an existing one with the same description, venue and settings, at a new start time. It is a draft unless publish is true. 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. |
| start_time required | datetime | New start, ISO 8601 with time zone. |
| title | string | New title. Default: the old one. |
| publish | boolean | Publish now or keep as draft. Default: false. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "meetup_copy_event",
"arguments": {
"event_id": "311204587",
"start_time": "2026-11-12T19:00:00+01:00",
"title": "Python Night #24",
"publish": true
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"event_id": "311988140",
"status": "draft",
"announced": false,
"start_time": "2026-11-12T19:00:00+01:00",
"url": "https://www.meetup.com/yourgroup/events/311988140/"
},
"isError": false
} MCP tool meetup_update_event
Changes fields of an upcoming event. Only the fields you pass change. Edits to a published event are visible to members and attendees. 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. |
| fields required | object | Any of title, start_time, duration_minutes, description, venue, attendee_limit. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "meetup_update_event",
"arguments": {
"event_id": "event_8c41d2",
"fields": "fields"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"event_id": "311988140",
"status": "updated",
"changed": [
"attendee_limit"
]
},
"isError": false
} MCP tool meetup_announce_event
Sends the announcement of one published event to the members of your group. Drafts cannot be announced. 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": "meetup_announce_event",
"arguments": {
"event_id": "event_8c41d2"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"event_id": "311988140",
"announced": true
},
"isError": false
} MCP tool meetup_update_attendee
Changes the RSVP of one member for one event. Moving off the waitlist needs a free spot under the attendee limit. The member sees the change. 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. |
| member_id required | string | Member ID from list_attendees or list_members. |
| action required | enum | mark_attending, remove or move_from_waitlist. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "meetup_update_attendee",
"arguments": {
"event_id": "event_8c41d2",
"member_id": "member_8c41d2",
"action": "mark_attending"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"event_id": "311204587",
"member_id": "402118",
"status": "going"
},
"isError": false
} Mark attendance
writeMCP tool meetup_mark_attendance
Sets the status of many attendees in one call, from 1 hour before the event starts, also after it has ended. It sends nothing to members and one more call changes the status again, so it runs without asking first.
Parameters
| Name | Type | Description |
|---|---|---|
| event_id required | string | Event ID from list_events. |
| member_ids required | string[] | Member IDs from list_attendees. |
| status required | enum | checked_in, no_show or not_coming. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "meetup_mark_attendance",
"arguments": {
"event_id": "311204587",
"member_ids": [
"402118",
"402119"
],
"status": "no_show"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"event_id": "311204587",
"updated": 2,
"status": "no_show"
},
"isError": false
} MCP tool meetup_message_attendees
Sends one message with a subject to the people who RSVPed going to an upcoming or past event, under your name. Returns how many people it reached. 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. |
| subject required | string | Message subject. |
| body required | string | Message text. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "meetup_message_attendees",
"arguments": {
"event_id": "311988140",
"subject": "Room 204 and 19:30 start tonight",
"body": "Python Night moved to room 204 at Co-Work Mitte and starts at 19:30. Same building, same talks."
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"event_id": "311204587",
"status": "sent",
"recipients": 38
},
"isError": false
} MCP tool meetup_message_members
Sends one message to the members of your group who opted in to organizer announcements, under your name. Returns how many people it reached. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| group_urlname required | string | Group URL name, e.g. tech-founders-berlin. |
| subject required | string | Message subject. |
| body required | string | Message text. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "meetup_message_members",
"arguments": {
"group_urlname": "https://example.com",
"subject": "subject",
"body": "body"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"group_urlname": "tech-founders-berlin",
"status": "sent",
"recipients": 1760
},
"isError": false
} MCP tool meetup_cancel_event
Cancels one upcoming event. Attendees are notified and the cancellation cannot be undone. 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": "meetup_cancel_event",
"arguments": {
"event_id": "event_8c41d2"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"event_id": "311988140",
"status": "cancelled"
},
"isError": false
}