Home

Talk to your revenue

MCP & AI agents

MRRdue ships a native MCP (Model Context Protocol) server. Connect it to Cursor, Claude Code, Claude Desktop, ChatGPT, or Claude.ai and ask “who's at risk of churning?” or “what should I recover today?” in plain language, read-only, same as everywhere else.

Server details

  • Server URL: https://www.mrrdue.com/api/mcp (local: http://localhost:3000/api/mcp)
  • Auth: the same mrrdue_... API tokens as the REST API — create one in Dashboard → Settings → Developer API — or OAuth for ChatGPT / Claude.ai web.
  • Plan: included on the paid plan, no extra cost.
  • Rate limit: shared with the REST API — 300 requests/hour/workspace.

Connect Cursor

The fastest path: a bearer token, no OAuth screen. Add to ~/.cursor/mcp.json:

{
  "mrrdue": {
    "url": "https://www.mrrdue.com/api/mcp",
    "headers": { "Authorization": "Bearer mrrdue_..." }
  }
}

Restart Cursor, then use the tools from the AI chat/agent panel. Create the token first in Dashboard → Settings → Developer API.

Connect Claude Code

claude mcp add mrrdue --transport http https://www.mrrdue.com/api/mcp \
  --header "Authorization: Bearer mrrdue_..."

Connect Claude Desktop

Edit the desktop config (%APPDATA%\Claude\claude_desktop_config.json on Windows, ~/Library/Application Support/Claude/claude_desktop_config.json on macOS). For a remote server, use mcp-remote as a stdio proxy:

{
  "mcpServers": {
    "mrrdue": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://www.mrrdue.com/api/mcp",
        "--header",
        "Authorization: Bearer mrrdue_..."
      ]
    }
  }
}

Connect ChatGPT or Claude.ai web

Add a custom connector in that app and paste the MCP server URL:

https://www.mrrdue.com/api/mcp

That is the whole setup. The client discovers the authorization server, registers itself automatically, and sends you to a consent screen; approve it and the connection appears in Settings → AI Connectors, where you can disconnect it any time. You never handle a client id or secret. PKCE is required, and this path is read-only.

Any other MCP client

Any client that supports Streamable HTTP can connect to the server URL with a bearer header, the same way Cursor does above. For stdio-only clients, use mcp-remote:

npx -y mcp-remote https://www.mrrdue.com/api/mcp \
  --header "Authorization: Bearer mrrdue_..."

What it can do

Read and analysis tools are read-only and always safe to call. Campaign tools can draft or dispatch a recovery batch, but never approve one — see the approval gate below.

ToolWhat it answers / does
get_metricsMRR, ARR, churn rate, revenue at risk, recovered revenue, retention-risk counts
list_at_risk_customersCustomers likely to churn, ranked by risk
list_cases / get_caseThe failed-payment recovery queue, and the full detail on one case
get_recovery_emailReady-to-send recovery email templates for a case
find_customer / customer_healthA customer's subscriptions, cases, and invoices, plus a churn-risk read
who_needs_attentionRanked list of customers to focus on first
compare_months / forecast_mrrMonth-over-month change and a simple trend projection
analyze_revenueFull narrative: metrics, trend, churn, at-risk, and recoverable revenue
bulk_preview / execute_batch / cancel_campaign / list_campaignsDraft, dispatch, cancel, and list approval-gated recovery campaigns

Named workflows

Ask for one of these by name and a supporting client runs the composed tool sequence for you:

  • reduce_churnwhich customers should I recover today?
  • daily_founder_reporta concise daily brief
  • weekly_summaryweekly revenue, churn, and recovery summary
  • prepare_board_reporta board-ready report
  • business_reviewa full health review with recommendations

The approval gate: the only way to send

No AI connection, OAuth or API token, can ever send an email or touch your billing. That is enforced structurally, not by asking the model nicely:

  1. An agent calls bulk_preview to draft up to 50 recovery emails. This creates a pending campaign. Nothing sends yet.
  2. You review the exact drafts and approve them, signed in, at Dashboard → Campaigns. This is the only place a campaign moves from pending to approved — the approve_campaign tool just hands the model that link, it never approves anything itself.
  3. execute_batch dispatches an already-approved campaign. You can also just click Send now on the dashboard.
  4. Or cancel any time before it sends, from the dashboard or cancel_campaign.

OAuth connectors (ChatGPT, Claude.ai) only ever get read access: they can call the read and analysis tools above, but not the campaign tools. Only an API token you created yourself can draft or dispatch a campaign, and only a signed-in human at the dashboard can approve one.

Notes

  • “Recovered after outreach” is a correlation label (recovery within 7 days of a recorded outreach action), not a causal claim.
  • The MCP rate limit is shared with the REST API; heavy AI sessions and API clients share the same 300/hour workspace budget.
  • Sensitive-data boundary is identical to the rest of the product: see Getting started and the Security page.

Ready to connect an agent?

Create an API token in Dashboard → Settings → Developer API, or start a trial if you don't have a workspace yet.