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.
| Tool | What it answers / does |
|---|---|
get_metrics | MRR, ARR, churn rate, revenue at risk, recovered revenue, retention-risk counts |
list_at_risk_customers | Customers likely to churn, ranked by risk |
list_cases / get_case | The failed-payment recovery queue, and the full detail on one case |
get_recovery_email | Ready-to-send recovery email templates for a case |
find_customer / customer_health | A customer's subscriptions, cases, and invoices, plus a churn-risk read |
who_needs_attention | Ranked list of customers to focus on first |
compare_months / forecast_mrr | Month-over-month change and a simple trend projection |
analyze_revenue | Full narrative: metrics, trend, churn, at-risk, and recoverable revenue |
bulk_preview / execute_batch / cancel_campaign / list_campaigns | Draft, 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_churn— which customers should I recover today?daily_founder_report— a concise daily briefweekly_summary— weekly revenue, churn, and recovery summaryprepare_board_report— a board-ready reportbusiness_review— a 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:
- An agent calls
bulk_previewto draft up to 50 recovery emails. This creates a pending campaign. Nothing sends yet. - 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 — theapprove_campaigntool just hands the model that link, it never approves anything itself. execute_batchdispatches an already-approved campaign. You can also just click Send now on the dashboard.- 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.