Skip to content
PennyPost Docs

AI assistants (MCP)

Ask ChatGPT, Claude, Claude Code or Cursor where your signups stall.

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

  1. Open Settings, then Apps and connectors, and turn on developer mode under Advanced if your plan asks for it.
  2. Add a connector with the URL https://usepennypost.com/mcp.
  3. 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.