Partiful MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Partiful MCP Servershow me the guest list for my birthday party and who's approved"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Partiful API and MCP server, self-hosted
A Partiful API and a Partiful MCP server you run on your own computer, in Python, on the session of your own Google Chrome. All 14 Partiful tools we run in production at Cotlet: events, guest lists with questionnaire answers, the Export CSV file, check-in, Guest Approval, invites and Text Blasts.
Partiful has no public API and no official MCP server. This repo gives you both:
MCP server for Claude Code, Claude Desktop, Cursor, Codex and any MCP client, over stdio or HTTP. Setup
REST API on
http://127.0.0.1:8787/api/v1/partiful, with OpenAPI docs at/docs. SetupPython:
call("list_guests", event_id="..."), plus 9 ready scripts inexamples/.
It is for technical people who want to run it themselves, for personal use only (license). If you want it running 24/7 on a server, kept working when Partiful changes its site, for a team or a business, use the hosted version at cotlet.dev.
git clone https://github.com/cotletdev/partiful-api-mcp-server.git && cd partiful-api-mcp-server
python3 -m venv .venv && . .venv/bin/activate && pip install -e .
partiful-mcp connect # reads your Partiful session from Chrome
partiful-mcp call list_events
claude mcp add partiful -- "$PWD/.venv/bin/partiful-mcp" mcpContents
Related MCP server: byob
How it works
AI agent (MCP) / script (REST, Python) ──▶ partiful-mcp on your computer ──your Partiful sign-in──▶ api.partiful.com
▲ Firestore
partiful-mcp connect ───────┘ reads it once from your Chrome (DevTools Protocol)You sign in to Partiful in your own Chrome, with your phone number and the code Partiful texts you.
partiful-mcp connectattaches to that Chrome through the Chrome DevTools Protocol. It reads the partiful.com cookies and, from a partiful.com tab, the signed-in user that the Partiful web app keeps in IndexedDB (Firebase, with its refresh token). If no Partiful tab is open, it opens one in the background and closes it again. Both are saved to~/.config/partiful-api-mcp/session.json, readable by your user only.Every tool call is a request to the endpoints the Partiful web app calls itself: its functions on
api.partiful.com, and Firestore for guest lists and event edits. Requests go out with curl_cffi, which copies Chrome's TLS fingerprint. No headless browser runs.
Partiful's sign-in token lasts an hour. The server renews it from the saved refresh token at Google's securetoken.googleapis.com, the way the web app does, so you connect once and not every hour. When Partiful ends the session, the server reads it from Chrome again, if Chrome is open with remote debugging on.
Requirements
Python 3.11 or newer.
Google Chrome 144 or newer, signed in to Partiful on partiful.com. Any Chrome or Chromium works with a debugging port.
macOS, Linux or Windows.
A Partiful account that hosts the events. Reading and changing an event's guest list, approvals, check-in, invites and Text Blasts work for events you host or cohost.
get_eventopens any event your account can see.
Install
git clone https://github.com/cotletdev/partiful-api-mcp-server.git
cd partiful-api-mcp-server
python3 -m venv .venv
. .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e .
partiful-mcp --versionWith uv: uv venv && uv pip install -e ., then uv run partiful-mcp ....
Setting it up with an AI agent (Claude Code, Codex, Cursor)? Open it in this folder and ask it to set up the repo: AGENTS.md tells it every step, and it asks you only for the steps in Chrome.
To update: git pull && pip install -e .. We copy every change of the hosted Partiful tools into this repo.
Connect your Chrome
Option A: your everyday Chrome (recommended)
Open
chrome://inspect/#remote-debuggingin Chrome and switch remote debugging on. Chrome then accepts DevTools connections from programs on this computer, and asks you before each one.Make sure you are signed in at partiful.com.
Run:
partiful-mcp connectChrome asks whether to allow the connection. Click Allow.
Saved 16 Partiful cookies and 1 sign-in keys to /Users/you/.config/partiful-api-mcp/session.json
Signed in to Partiful as Maya ChenYou can switch remote debugging off again afterwards. Leave it on if you want the server to pick up a new session by itself after Partiful signs you out.
connect looks for Chrome's DevToolsActivePort file in the default profile folder. For Chrome Beta, Canary or a custom profile folder, pass --profile-dir "<folder>".
Option B: a Chrome with a debugging port
Chrome does not open a debugging port on your default profile, so start a separate one, sign in to Partiful there once, and connect to it:
# macOS
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --remote-debugging-port=9222 --user-data-dir="$HOME/.chrome-partiful"
# Linux
google-chrome --remote-debugging-port=9222 --user-data-dir="$HOME/.chrome-partiful"
# Windows
"C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222 --user-data-dir="%USERPROFILE%\.chrome-partiful"
partiful-mcp connect --cdp http://127.0.0.1:9222--cdp also takes a ws:// DevTools URL, for example of a Chrome on another machine reached over an SSH tunnel.
There is no paste-a-cookie option. Partiful's API takes the signed-in user from the browser's IndexedDB, not a cookie, so connect needs a running Chrome once. After that the session file works on its own, also on a machine without Chrome.
Check the session at any time:
partiful-mcp statusMCP server
The MCP server lists every tool with its input schema, a description written for agents, and hints: read tools are marked read-only, and tools that invite, text, approve or delete are marked so your client asks before running them.
Claude Code
claude mcp add partiful -- /path/to/partiful-api-mcp-server/.venv/bin/partiful-mcp mcp
# read only:
claude mcp add partiful -- /path/to/partiful-api-mcp-server/.venv/bin/partiful-mcp mcp --read-onlyClaude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"partiful": {
"command": "/path/to/partiful-api-mcp-server/.venv/bin/partiful-mcp",
"args": ["mcp"]
}
}
}Cursor
~/.cursor/mcp.json, the same block as Claude Desktop. A ready copy is in mcp.json.
Codex
~/.codex/config.toml:
[mcp_servers.partiful]
command = "/path/to/partiful-api-mcp-server/.venv/bin/partiful-mcp"
args = ["mcp"]Over HTTP
partiful-mcp serve also serves MCP over streamable HTTP at http://127.0.0.1:8787/mcp, for clients that take a URL:
partiful-mcp serve
claude mcp add --transport http partiful http://127.0.0.1:8787/mcpThen ask your agent things like:
Who is going to Friday's dinner, and what dietary restrictions did they put in the questionnaire?
Approve all pending guests to my launch party who answered with a company name, and list the rest for me.
Copy last month's book club for November 14 at 7pm and invite the people who came.
Text everyone who is Going or Maybe to my rooftop dinner that the door code is 4512.
REST API
partiful-mcp serve # http://127.0.0.1:8787, MCP at /mcp, docs at /docsEach tool has its own route under /api/v1/partiful, the same paths as the hosted API at cotlet.dev, so code written against one works with the other. Path parts and the query string are arguments, and a JSON body adds the rest.
curl 'http://127.0.0.1:8787/api/v1/partiful/events?when=past'
curl 'http://127.0.0.1:8787/api/v1/partiful/events/hK3vQ9xLm2Pa7RtYc4Wd/guests?status=going'
curl -X PATCH http://127.0.0.1:8787/api/v1/partiful/events/hK3vQ9xLm2Pa7RtYc4Wd \
-H 'Content-Type: application/json' \
-d '{"location": "21 Mercer St, New York"}'Any tool by name, body as its arguments:
curl -X POST http://127.0.0.1:8787/api/v1/partiful/tools/list_guests -d '{"event_id": "hK3vQ9xLm2Pa7RtYc4Wd"}'GET /api/v1/partiful/tools: every tool with its route, input schema and an example answer.GET /docs: interactive OpenAPI docs,GET /openapi.jsonthe schema, for n8n, Postman or a generated client.Answers are JSON. Lists return
next_cursor; pass it back ascursorfor the next page.
The server listens on 127.0.0.1 only. To reach it from another device of yours, set a token, and every request then needs Authorization: Bearer <token>:
PARTIFUL_MCP_TOKEN=$(openssl rand -hex 24) partiful-mcp serve --host 0.0.0.0Python and the example scripts
Straight from Python, no server needed:
from partiful_api_mcp import call
from partiful_api_mcp.scripting import paginate, write_rows
events = call("list_events")["events"]
going = list(paginate("list_guests", {"event_id": events[0]["event_id"], "status": "going"}, "guests"))
write_rows(going, "going.csv")
call("update_event", event_id=events[0]["event_id"], location="21 Mercer St, New York")Or one tool from the shell: partiful-mcp call list_guests event_id=hK3vQ9xLm2Pa7RtYc4Wd status=pending, or with a JSON object.
Ready scripts in examples/. Each prints JSON or text, takes --out file.csv or --out file.json where it makes sense, and --help:
Script | What it does |
Events you host, with date, status and guests per RSVP status. | |
Saves the same CSV as the Export CSV button. | |
Guests of one or more events as sheet rows, one column per questionnaire question. | |
Each questionnaire answer with how many guests gave it and who, plus who has not answered. | |
Approves pending guests whose answers match | |
Checks guests in by name, or undoes it. | |
Past guests and mutuals you can invite, | |
Copies an event to a new date and invites the people who were going. | |
A Text Blast to chosen RSVP statuses, after showing how many people it reaches. |
python examples/export_guest_list.py --event hK3vQ9xLm2Pa7RtYc4Wd --status going --out rsvps.csv
python examples/approve_pending_guests.py --event hK3vQ9xLm2Pa7RtYc4Wd --match inc --dry-runOn a schedule, cron on your own computer works while it is on: 0 8 * * 1 cd ~/partiful-api-mcp-server && .venv/bin/python examples/export_rsvps.py --event <id> --status going --out rsvps.csv.
All 14 tools
event_id is the id in the event's link: hK3vQ9xLm2Pa7RtYc4Wd for partiful.com/e/hK3vQ9xLm2Pa7RtYc4Wd. list_events returns it. partiful-mcp tools prints this list, partiful-mcp tools --json adds the input schemas.
Events
Tool | Access | REST route | What it does |
| read |
| Events you host, with date, status and guest counts. |
| read |
| Full event: title, description, start and end, location, RSVP deadline, guest limit, Guest Approval and waitlist settings, link. |
| write |
| New event page. Nobody is invited until you call invite_guests. |
| write |
| Change the details or settings of an event you host. |
| write |
| Copy an event with its settings to a new date. The copy has no guests yet. |
| write |
| Cancel an event. Partiful notifies the guests. |
| write |
| Delete an event you host for everyone, with its guest list. |
Guest list
Tool | Access | REST route | What it does |
| read |
| Guests of an event with RSVP status, check-in and Guest Questionnaire answers. |
| read |
| The guest list as CSV, the same file as the Export CSV button. |
| write |
| Mark guests as checked in at the door, or undo it. |
| write |
| Approve pending guests on a Guest Approval event. |
Invites and Text Blasts
Tool | Access | REST route | What it does |
| read |
| People you can invite: your past guests and mutuals. |
| write |
| Invite past guests and mutuals through Partiful, or anyone by email. |
| write |
| Text a message to guests by RSVP status. Partiful allows up to 10 Text Blasts per event. |
Not built: inviting phone numbers (Partiful takes phone contacts only in its app), rejecting or removing guests, changing a guest's RSVP, cohosts, comments and photos, replies to a Text Blast, tickets, themes and Discover. Never built, on purpose: your Partiful sign-in, phone number, name and profile, and anything that moves money. Every request passes a guard that refuses those Partiful paths.
Configuration
Variable | Default | What it does |
|
| Folder of |
| Proxy for every request to Partiful, e.g. | |
|
| |
| Bearer token required by | |
|
| Address of |
Security and your Partiful account
No codes, no password. Partiful signs you in with a texted code. This code never asks for it: it reads the session Chrome already holds.
The session file is yours.
session.jsonis created with mode 0600 and holds the partiful.com cookies and the Firebase refresh token. Anyone who has it can act as you on Partiful, so keep it out of git and shared folders.Local by default.
servebinds to127.0.0.1and refuses another address withoutPARTIFUL_MCP_TOKEN.Three hosts only. Requests and redirects go only to partiful.com,
securetoken.googleapis.com(token renewal) andfirestore.googleapis.com(guest lists, event edits).Read-only mode.
--read-onlyorPARTIFUL_MCP_READ_ONLY=1exposes the 5 read tools only.Actions reach real people. Invites, Text Blasts, approvals and cancellations go out to real phones and inboxes at once, and a blast cannot be pulled back. MCP clients ask before running them; a script does not, so try it on a test event first.
Do not spam. Partiful caps Text Blasts at 10 per event and invites at 1,000 per event. You are responsible for what runs in your account.
Errors
The REST API answers {"error": "<code>", "message": "..."}. The MCP server returns the same code and message as a tool error.
Status | Code | What to do |
401 |
| No session, or Partiful signed you out. Sign in to Partiful in Chrome and run |
403 |
| Only a host of the event can do this. |
403 |
| The server runs read-only, or the request would change your Partiful account. |
403 |
| Partiful refused the request or showed a bot check. Open partiful.com in Chrome once, then retry. |
409 |
| Partiful asks for a CAPTCHA. Solve it in Chrome. |
422 |
| An argument is missing or wrong; the message names it. |
429 |
| Partiful is limiting the account. Wait a few minutes. |
502 |
| Partiful answered with an error, or changed its site. |
Self-hosted or hosted
This repo | ||
Tools | the same 14 | the same 14 |
Runs | on your computer, while it is on | in the cloud, 24/7 |
Partiful session | your Chrome, cookies and refresh token in a local file | your own Cloud Browser in the EU, profile encrypted with AES-256-GCM |
When Partiful changes its site |
| fixed for you, every tool tested daily |
Approvals | your MCP client asks per call | invites, Text Blasts and approvals wait for your OK, switchable per tool |
Works with | MCP clients on your machine, local scripts | Claude.ai and ChatGPT connectors, n8n, Make, Zapier, any HTTP client |
Who may use it | you, for personal use | teams, businesses, agencies |
Price | free | free 7-day trial with 2,000 credits, no card; then one-time packs from $29 for 5,000 credits |
On the hosted version a successful Partiful call uses 25 credits, failed calls are free, and the Cloud Browser uses 50 credits a day while it has an app enabled for agents. Full pricing.
FAQ
Does Partiful have an official API? No. Partiful has no public API, no developer docs and no webhooks, and its help center documents no Zapier or Make connection. Guest data leaves Partiful only as a CSV you export by hand with the Export CSV button. Details: cotlet.dev/integrations/partiful-api-mcp-server.
Is there a Partiful MCP server for Claude, ChatGPT or Cursor?
Yes, this one runs on your machine: partiful-mcp mcp for Claude Code, Claude Desktop, Cursor and Codex. ChatGPT and Claude.ai connectors need a public HTTPS URL, which the hosted Partiful MCP server gives you.
Can I export a Partiful guest list to CSV or Google Sheets?
Yes: python examples/export_guest_list.py --event <id> --out guests.csv saves the Export CSV file, and examples/export_rsvps.py gives one row per guest with a column per questionnaire question, for a sheet. Phone numbers and emails are not in either, as in Partiful's own export.
Can it send Text Blasts?
Yes, send_text_blast to the RSVP statuses you choose. Partiful allows 10 per event and does not say how many are left, and a blast to Invited works only up to 100 people. A sent blast cannot be edited or pulled back.
Can it invite people by phone number?
No. Partiful takes phone contacts only in its app. invite_guests invites Partiful users from list_past_guests and anyone by email.
Why does it need my Chrome? To read your Partiful session without a texted code. Chrome is used once per sign-in, not for each call: the hourly token renewal goes to Google directly.
What happens when Partiful signs me out?
Calls fail with auth_expired. With Chrome remote debugging on, the server reads the new session on the next call (click Allow when Chrome asks); otherwise sign in on partiful.com and run partiful-mcp connect again.
Can it run on a VPS or in Docker?
Technically yes: connect once on a machine with Chrome and copy session.json to the server, into PARTIFUL_MCP_HOME. Partiful then sees your session from a datacenter IP, which looks less like you, and the license allows it only on a server you alone use. For an always-on setup the hosted version keeps your session in your own Cloud Browser on a fixed IP.
Will my Partiful account get banned? Requests carry Chrome's fingerprint and go out one at a time, as you would click. Nobody can promise a platform never acts. Keep to your normal use and do not blast or invite people who did not ask for it.
Can I use it at work or for my clients? No, the license is for personal use by one person. For a team, a company or client work, use Cotlet or write to contact@cotlet.dev.
Is it open source? The source is public, the license is not an open source license: personal use only, no business use, no hosting for others.
A tool broke or I need another one. Open an issue with the tool name and the error message.
License
Cotlet Personal Use License 1.0. In short:
Allowed: one person, on their own computers, with their own Partiful accounts, for their own purposes. Changing the code for yourself, and a GitHub fork under the same license.
Not allowed: any use in or for a company or organization, your own business included; letting other people use your instance (shared server, team machine, cloud service); selling or offering it or a service built on it.
Maintained by Cotlet (@cotletdev). Partiful is a trademark of its owner. This project is unofficial and not affiliated with, endorsed or sponsored by Partiful.
This server cannot be deployed
Maintenance
Related MCP Connectors
Read your events, sales, orders and attendees from your AI assistant. OAuth sign-in, read only.
Run in-person events from your AI: create events, manage tickets, attendees, broadcasts.
SocialLoop: AI-native event platform — sell tickets, manage guests, run affiliates & promo codes.
Talk to your live-events CRM (campaigns, analytics, paid ads, segments) in Claude and ChatGPT.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceLets local AI agents drive the Chrome browser a user already has open, including signed-in sessions, by listing tabs, reading page text and actionable elements, then clicking, filling, selecting, scrolling, navigating, and capturing viewport screenshots without exporting cookies. Runs as a dependency-free local stdio process over Native Messaging, with per-tab leases, automatic reconnection, and pause/write-action controls.MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to drive the user's real, already-logged-in Chrome browser locally, so they can read and navigate pages, click, type, fill forms, take screenshots, and inspect cookies, tabs, console, and network traffic without headless browsers or remote-debugging ports.1 npmISC
- AlicenseNot gradedqualityAmaintenanceLets AI coding tools drive the real, already-logged-in Chrome browser over local stdio—snapshotting and reading pages, clicking, typing, managing tabs, capturing screenshots, and inspecting network, console, storage, and cookies—without opening a remote-debugging port. It installs as a Chrome extension plus native-messaging bridge, so agents work in the user's authenticated sessions while passing bot detection.1 npmISC
- AlicenseNot gradedqualityCmaintenanceLets an AI agent drive the Chrome you already have open — with your existing tabs, logins, and IP — through CDP over stdio. Exposes tools for opening background tabs, clicking, typing, running JS, taking snapshots, and issuing raw CDP commands without disrupting the visible tab.MIT