Connect an AI assistant with MCP
Updated September 29, 2026
Passmint has a hosted MCP server, so an AI assistant can work with your passes for you. Ask it to issue a pass, check whether someone added it to their wallet, see if a ticket has been scanned, or report how close you are to your plan's limits.
It works with any assistant that supports MCP and lets you set an API key, including
Claude Code, Codex, Cursor, VS Code (Copilot agent mode), and
Gemini CLI. Nothing needs to be installed: your assistant connects to
https://api.passmint.com/mcp.
The Claude apps (claude.ai and Claude Desktop) can't connect yet. Their custom connectors sign in with OAuth, which Passmint doesn't support yet. Use Claude Code in the meantime.
Set it up
In the Passmint dashboard, go to Developers → API keys and create a key. Use a
test key (it starts with pmk_test_) while you try things out. See
API keys: test vs live.
Run export PASSMINT_API_KEY=pmk_test_… with your key, then start your assistant
from that same terminal. The install reads the key from there, so you never paste
it into a chat with your assistant. VS Code asks for the key itself, so you can
skip this step if you use it.
Open the MCP server docs, pick your assistant, and select Copy setup prompt. For VS Code, select Add to VS Code instead.
Your assistant checks the key is set, runs the install, and tells you to restart it. After the restart, it confirms which organization it's connected to and whether it's in test or live mode.
If you'd rather not let the assistant run the install, the same page shows the exact command or config for each assistant under Or do it yourself.
Test mode first, then live
The key decides what your assistant can touch:
- A test key only ever sees test passes. It can't read or change a live pass, so it's safe to experiment with.
- A live key works with your real passes. Live API access needs a paid plan.
Templates are shared between test and live mode. To avoid changing a template your live passes use, an assistant on a test key can create templates but can't edit or archive them. Make those changes in the dashboard, or connect with a live key.
When you're ready, create a live key, set PASSMINT_API_KEY to it, and run the setup
prompt again.
Keep your key safe
- Every install writes the key to your personal config, not to a file in your project.
Don't copy it into a project file like
.mcp.jsonor.cursor/mcp.json, where it could be committed. - Treat a live key like a password. Anyone with it can issue and void real passes.
- Use a separate key for your assistant, so you can revoke it without breaking your other integrations.
Your assistant can void passes and archive templates. It asks for confirmation first,
but that confirmation comes from the assistant, not from you. Review what it's about
to do, and add ?mode=read-only to the server URL for a connection that can only
read.
What your assistant can do
It can find templates, issue and update passes, create expiring download links, void passes, look up a pass's history and scans, and read your install funnel. It can also tell you your plan, your usage against its limits, and when your Apple certificate expires.
It can't upload images, change webhooks, scanners, or API keys, or add certificates. Those stay in the dashboard. It also can't make bulk changes: each pass is updated with its own call, within a limit of 60 tool calls a minute. See the full tool list.
Troubleshooting
- "PASSMINT_API_KEY is missing": the assistant can't see the variable. Run the
exportcommand in the terminal you start the assistant from, then restart it from there. - Cursor doesn't connect: if you opened Cursor from the Dock or Start menu, it may
not see variables exported in a terminal. Quit it and start it with
cursor .from the terminal where you set the key. - "API key is missing, malformed, or revoked": the key was mistyped or has been revoked. Create a new one and run the setup again.
- "Live API access isn't available on the Free plan": you connected with a live key on a plan without live API access. Use a test key, or upgrade.
- A pass "doesn't exist": test and live passes are separate. Ask your assistant to check its mode, and use the key for the mode the pass was issued in.
- "Refused: this connection uses a test-mode key": that change needs a live key or the dashboard. See test mode first, then live.