PennyPost has an MCP server, so you can ask your AI assistant about your signups instead of opening the dashboard. It works in ChatGPT, Claude, Claude Code, Cursor and any other client that supports MCP.
Some things you can ask:
- "How many of last week's signups reached their first result?"
- "Where do new users stall the most?"
- "Who left before their render was ready?"
- "Is the 'never opened the results page' email bringing people back?"
- "Connect this app to PennyPost." (in Claude Code or Cursor, from your app's repo)
Every tool only reads. Nothing you ask through MCP sends an email, turns one on or changes a setting.
Server URL
https://usepennypost.com/mcp
The first time you connect, your assistant opens a PennyPost page that asks you to allow it. Click Allow and you're done. The assistant reads the workspace you have open when you allow it.
ChatGPT
- Open Settings, then Apps and connectors, and turn on developer mode under Advanced if your plan asks for it.
- Add a connector with the URL
https://usepennypost.com/mcp. - Sign in to PennyPost when it asks, and click Allow.
Claude
In Claude (web or desktop), open Settings, then Connectors, and add a custom connector with the URL https://usepennypost.com/mcp. Claude opens PennyPost so you can allow it.
Claude Code
claude mcp add --transport http pennypost https://usepennypost.com/mcp
Start a new Claude Code session, type /mcp, pick pennypost and choose Authenticate. Your browser opens the PennyPost page; click Allow.
Cursor and other clients
Clients that take a server URL can use https://usepennypost.com/mcp and sign in the same way.
Clients that only run local servers can use the npm package with an API key from API keys:
{
"mcpServers": {
"pennypost": {
"command": "npx",
"args": ["-y", "@pennypost/mcp"],
"env": { "PENNYPOST_API_KEY": "mc_your_key" }
}
}
}
The package forwards every request to the same server, so the answers are the same. Keep the key out of anything you commit.
Tools
| Tool | What it returns |
|---|---|
get_activation |
Signups, how many had results ready, how many saw their result, and how many stalled at each moment, over the last 7, 30 or 90 days (30 by default) |
list_moments |
The five moments with how many stalled, whether the email is live, paused, a draft or off, what it still needs, emails sent, people who came back, and the email itself |
list_stalled_people |
The latest people who stalled, newest first, optionally at one moment, up to 25 |
get_results |
For each live email: emailed people who came back, the held-back group that got no email, and the verdict once there's enough data |
get_install_prompt |
Instructions for Claude Code or Cursor to connect your app: the snippet, the signed identity and the results_ready event |
list_stalled_people returns your users' email addresses. Only connect PennyPost to assistants you'd trust with them.
Disconnect
Every assistant you've allowed is listed on API keys under AI assistants. Disconnect stops it at once. To stop the npm package, revoke its API key on the same page.
The server allows 300 requests an hour per workspace.