Launch PostMarch 2026

Making RevenueCat Agent-Native

An MCP Server for the Charts API

Joey Flores

Built with Rev · 8 min read

The gap nobody’s talking about

AI agents are building apps. They scaffold projects, write code, deploy to production, and configure payment infrastructure. An agent can set up RevenueCat, create entitlements, and ship a subscription app in a single session.

Then you ask it: “What’s my MRR?”

Nothing. The agent that built the app has no way to check whether anyone is paying for it. It can create subscription infrastructure but can’t read it. It can deploy a product but can’t measure it.

This is the gap between building subscription apps and operating them. Agents handle the first half. The second half requires data access that doesn’t exist in their toolchain.

I built revenuecat-charts-mcp to close it.

What it is

revenuecat-charts-mcp is an MCP (Model Context Protocol) server that gives AI agents native access to RevenueCat’s Charts API. It exposes three tools that cover the full spectrum of subscription analytics: discovery, snapshots, and time-series queries.

rc_list_metrics

Lists all 21 available chart metrics with descriptions. Helps the agent discover what data exists before querying. No API call needed — the metric catalog is built into the server.

rc_get_overview

Returns a real-time snapshot of subscription health: MRR, active subscriptions, active trials, revenue, new customers, active users, and transaction count. One call, no date range needed.

rc_get_chart

The workhorse. Queries any of 21 metrics as a time series with configurable resolution (day/week/month), date ranges, and optional country segmentation. Returns formatted markdown tables optimized for LLM consumption.

30-second install

The server runs over stdio and works with any MCP-compatible client. No API keys in config files — the agent passes its key at call time.

Claude Code

bash
claude mcp add revenuecat-charts -- npx revenuecat-charts-mcp

Claude Desktop / Cursor

json
{
  "mcpServers": {
    "revenuecat-charts": {
      "command": "npx",
      "args": ["revenuecat-charts-mcp"]
    }
  }
}

That’s it. The agent now has access to RevenueCat subscription data through natural language. No SDK to learn, no endpoints to memorize, no response parsing to implement.

Real data, not a demo

Most MCP demos use fabricated data. That makes it impossible to evaluate whether the tool handles real-world edge cases — partial months, currency formatting at scale, segmentation across 40+ countries. Everything below was queried live from Dark Noise, a real indie app on the App Store, using the MCP server’s tools.

rc_get_overview → live snapshot

$4,534

MRR

2,517

Active Subs

14,062

Active Users

$4,747

Revenue (28d)

rc_get_chart → MRR monthly trend

metric="mrr" resolution="month" start_date="2025-06-01" end_date="2026-03-01"

DateMRR
Jun 2025$4,609
Jul 2025$4,623
Aug 2025$4,587
Sep 2025$4,461
Oct 2025$4,323
Nov 2025$4,422
Dec 2025$4,411
Jan 2026$4,545
Feb 2026$4,562
Mar 2026$4,538

Stable around $4,400–$4,600. October dip recovered into a slight upward trend through Q1 2026.

rc_get_chart → revenue by country

metric="revenue" segment="country" resolution="month"

DateUSUKCADEAU
Jan 2026$5,429$247$322$224$193
Feb 2026$3,319$370$215$148$49

US dominant (~70% of revenue), with UK, Canada, Germany, and Australia in the next tier. 40+ countries represented total.

Notice what just happened. An agent asked three questions — “what are my key metrics,” “how is MRR trending,” and “where is my revenue coming from” — and got structured, actionable answers. No dashboard login, no manual exports, no screenshot parsing. Just data through a tool interface the agent already understands.

The country segmentation result is worth pausing on. Dark Noise earns roughly 70% of its revenue from the US, with the UK, Canada, Germany, and Australia forming a second tier. That breakdown across 40+ countries came from a single tool call with one parameter: segment="country". An agent could use this to flag geographic concentration risk, identify expansion opportunities, or correlate regional marketing spend with revenue.

How it’s built

The server is a single TypeScript file (~490 lines) with zero runtime dependencies beyond the MCP SDK and Zod for input validation. This was deliberate — an MCP server should be as lightweight as possible since it runs as a subprocess of the client. Every dependency you add is a dependency your users inherit. The entire package is under 7 KB compressed, installs in seconds, and has no native bindings or platform-specific code.

Architecture

AI Agent

Claude Code · Desktop · Cursor

MCP · stdio

revenuecat-charts-mcp

rc_list_metricsrc_get_overviewrc_get_chart
HTTPS

RevenueCat Charts API V2

21 metrics · 5 categories · country segmentation

typescript
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";

const server = new McpServer({
  name: "revenuecat-charts",
  version: "1.0.0",
});

server.registerTool("rc_get_chart", {
  title: "Get Chart Data",
  description: "Query any RevenueCat Charts API metric as a time series...",
  inputSchema: {
    api_key: z.string().startsWith("sk_"),
    metric: z.enum(["mrr", "revenue", "churn", "actives", ...]),
    start_date: z.string().regex(/^\d{4}-\d{2}-\d{2}$/),
    end_date: z.string().regex(/^\d{4}-\d{2}-\d{2}$/),
    resolution: z.enum(["day", "week", "month"]).default("month"),
    segment: z.string().optional(),
  },
  annotations: { readOnlyHint: true, destructiveHint: false },
}, handler);

Design decisions that matter

Auto-detect project ID

Most RevenueCat accounts have a single project. The server fetches the project list and uses the first one automatically, with a per-key cache so the lookup only happens once per session. This eliminates a friction point — the agent doesn't need to know the project ID upfront.

Markdown tables, not raw JSON

The API returns timestamps as Unix seconds and interleaves multi-measure values by index. The server transforms this into formatted markdown tables with human-readable dates, currency formatting, and percentage precision. LLMs process structured markdown far more reliably than nested JSON.

Rate limit resilience

RevenueCat's API enforces rate limits (429 responses on burst traffic). The server retries with backoff automatically and respects the API's retryable flag. An agent making sequential queries won't hit a wall.

Input validation at the boundary

API keys must start with sk_, dates must match YYYY-MM-DD, metrics are validated against the full enum. Invalid inputs get clear error messages with suggestions, not cryptic API failures.

Tool annotations

Every tool declares readOnlyHint: true and destructiveHint: false. MCP clients can use these annotations to auto-approve calls without user confirmation — critical for autonomous workflows where the agent needs to check metrics without interrupting its operator.

Why MCP, and why now

MCP is doing for AI agents what REST did for web applications. It standardizes how agents discover and invoke tools, turning every API into something an agent can use without custom integration code.

Before MCP, making RevenueCat data accessible to an agent meant writing a custom function, handling authentication, parsing responses, managing errors — per agent framework. With MCP, you build the server once and it works everywhere: Claude Code, Claude Desktop, Cursor, any MCP-compatible client.

The developer experience reflects this. There’s no SDK to import, no authentication flow to implement, no response schema to memorize. The MCP client handles transport; the server handles API specifics. The agent just calls tools.

This is the pattern that scales. Every API that wants to be part of an agent’s toolkit needs an MCP server. Not because MCP is the only way, but because it’s the first protocol that makes tool access a solved problem rather than a per-integration project.

RevenueCat’s Charts API is a natural fit. Subscription metrics are exactly the kind of data agents need for ongoing, autonomous operation — not one-shot queries, but persistent monitoring. “Check my churn rate weekly.” “Alert me if MRR drops below $4,000.” “Generate a monthly revenue report by country.” These are the workflows agents run when they have access to the right data.

For indie developers especially, this changes the economics of monitoring. You don’t need to build a dashboard, configure alerts, or check a web UI daily. Your agent already runs your development workflow — now it can run your business metrics workflow too, in the same session, with the same interface.

What becomes possible

With this MCP server installed, an agent working on a subscription app can:

01

Check subscription health before making code changes — is the app growing or shrinking?

02

Correlate code deploys with revenue impact — did the new paywall increase conversion?

03

Generate weekly growth reports with actual data — MRR trend, churn rate, trial conversion, geo breakdown.

04

Monitor for anomalies — sudden churn spikes, revenue drops, trial conversion changes.

05

Answer founder questions in real time — “What’s our MRR?” gets a real answer, not a dashboard link.

None of this is hypothetical. I tested every query against Dark Noise, a real indie app with real subscriber data. The MRR table above isn’t mocked — those are actual revenue figures from an app in the App Store. The churn data, trial conversion rates, and cohort retention curves all come from the same API, accessible through the same three tools.

Get started in 30 seconds

The server is open source, published on GitHub, and requires nothing beyond Node.js and an npx call to run.

bash
claude mcp add revenuecat-charts -- npx revenuecat-charts-mcp

About the Charts API

RevenueCat’s Charts API V2 exposes 21 chart metrics across five categories: revenue (MRR, ARR, LTV, revenue), actives (subscriptions, churn, refunds, status), trials (active, new, movement), conversion (paying, trial conversion, new/active customers), and cohorts (retention, explorer).

The API supports three resolution levels (day, week, month), segmentation by country, and returns rich metadata including measure descriptions, units, and summary statistics. All of this is accessible through the MCP server’s three tools.

If you’re building a subscription app and your agent workflow includes RevenueCat, this server gives your agent eyes on the business. Install it, point it at your API key, and start asking questions. The entire server is open source under MIT, and contributions are welcome — whether that’s adding new chart types, supporting additional segmentation dimensions, or building integrations with other MCP clients.