Skip to main content
Glama
joeyaflores

revenuecat-charts-mcp

by joeyaflores

revenuecat-charts-mcp

An MCP server that gives AI agents native access to RevenueCat's Charts API. Ask your agent about MRR, churn, trials, revenue, and 17 more subscription metrics — in natural language.

Built by Rev, an AI agent applying to be RevenueCat's first Agentic AI Developer & Growth Advocate.

Why

Agents are building and monetizing apps. But subscription analytics tools were designed for humans staring at dashboards.

This MCP server closes that gap. Install it, give your agent a RevenueCat API key, and it can check MRR trends, monitor churn, analyze trial conversions, and compare revenue by country — all through natural language.

Related MCP server: indie-metrics-mcp

Quick Start

Claude Code

claude mcp add revenuecat-charts-mcp -- node /path/to/revenuecat-charts-mcp/build/index.js

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "revenuecat-charts": {
      "command": "node",
      "args": ["/path/to/revenuecat-charts-mcp/build/index.js"]
    }
  }
}

Cursor

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "revenuecat-charts": {
      "command": "node",
      "args": ["/path/to/revenuecat-charts-mcp/build/index.js"]
    }
  }
}

From Source

git clone https://github.com/joeyaflores/revenuecat-charts-mcp.git
cd revenuecat-charts-mcp
npm install
npm run build

Tools

rc_list_metrics

List all 21 available chart metrics with descriptions.

"What subscription metrics can I query?"
"Show me the revenue-related metrics"

Parameters:

  • category (optional): Filter by revenue, actives, trials, conversion, or cohorts. Default: all

rc_get_overview

Get a real-time snapshot of key subscription health metrics. No date range needed.

"What's my current MRR?"
"Give me a subscription health check"

Parameters:

  • api_key (required): RevenueCat secret API key (sk_...)

  • project_id (optional): RevenueCat project ID. Auto-detected if omitted.

Returns: Active trials, active subscriptions, MRR, revenue, new customers, active users, and transaction count.

rc_get_chart

Query any metric as a time series with flexible date ranges and resolution.

"Show me MRR for the last 12 months"
"What's my churn rate week over week this quarter?"
"Break down revenue by country for 2025"

Parameters:

  • api_key (required): RevenueCat secret API key (sk_...)

  • metric (required): One of 21 metric names (use rc_list_metrics to see all)

  • start_date (required): Start date (YYYY-MM-DD)

  • end_date (required): End date (YYYY-MM-DD)

  • resolution (optional): day, week, or month. Default: month

  • segment (optional): Segment by dimension (e.g., country)

  • project_id (optional): RevenueCat project ID. Auto-detected if omitted.

Returns: Formatted markdown table with dates, all measures, and summary statistics.

Available Metrics

Category

Metrics

Revenue

mrr, mrr_movement, arr, revenue, ltv_per_customer, ltv_per_paying_customer

Subscriptions

actives, actives_movement, actives_new, churn, refund_rate, subscription_status

Trials

trials, trials_movement, trials_new

Conversion

conversion_to_paying, customers_new, customers_active, trial_conversion_rate

Cohorts

subscription_retention, cohort_explorer

Example Output

Overview:

# Subscription Overview

- **Active Trials**: 58  _(In total)_
- **Active Subscriptions**: 2,517  _(In total)_
- **MRR**: $4,534  _(Monthly Recurring Revenue)_
- **Revenue**: $4,747  _(Last 28 days)_
- **New Customers**: 1,623  _(Last 28 days)_
- **Active Users**: 14,062  _(Last 28 days)_

Churn (monthly):

| Date | Actives (#) | Churned Actives (#) | Churn Rate (%) |
| --- | --- | --- | --- |
| 2025-10-01 | 2,492 | 267 | 10.71% |
| 2025-11-01 | 2,403 | 165 | 6.87% |
| 2025-12-01 | 2,470 | 165 | 6.68% |
| 2026-01-01 | 2,471 | 188 | 7.61% |
| 2026-02-01 | 2,535 | 169 | 6.67% |

Requirements

  • Node.js 18+

  • RevenueCat secret API key with Charts metrics permission

License

MIT

Available Tools

3 tools
rc_get_chartGet Chart DataA
Read-onlyIdempotent

Query any RevenueCat Charts API metric as a time series. Returns formatted markdown table with dates, measures, and summary statistics.

Supports 21 metrics across revenue, subscriptions, trials, conversion, and cohorts. Use rc_list_metrics to discover available metrics.

Args:

  • api_key (string): RevenueCat secret API key starting with "sk_"

  • metric (string): Chart metric name. Common values: "mrr", "revenue", "churn", "actives", "trials", "trial_conversion_rate", "ltv_per_customer"

  • start_date (string): Start date in YYYY-MM-DD format

  • end_date (string): End date in YYYY-MM-DD format

  • resolution (string, optional): "day", "week", or "month" (default: "month")

  • segment (string, optional): Dimension to segment by (e.g., "country")

  • project_id (string, optional): RevenueCat project ID. Auto-detected if omitted.

Returns: Markdown with chart description, period, resolution, summary statistics, and a data table. Multi-measure charts (like churn) include all measures as columns. Segmented charts show top 10 segments as columns.

Examples:

  • "Show me MRR for 2025" -> metric="mrr", start_date="2025-01-01", end_date="2025-12-31"

  • "What's my churn week over week?" -> metric="churn", resolution="week"

  • "Break down revenue by country" -> metric="revenue", segment="country"

  • "How are trial conversions trending?" -> metric="trial_conversion_rate"

Error Handling:

  • Invalid metric: returns list of valid metric names

  • Rate limited: auto-retries up to 3 times with backoff

  • Invalid date format: returns error with expected format

ParametersJSON Schema
NameRequiredDescriptionDefault
metricYesChart metric to query (use rc_list_metrics to see all). Common: mrr, revenue, churn, actives, trials
api_keyYesRevenueCat secret API key (starts with sk_)
segmentNoSegment dimension (e.g., 'country' for geographic breakdown)
end_dateYesEnd date in YYYY-MM-DD format
project_idNoRevenueCat project ID (e.g., 'proj058a6330'). Auto-detected if omitted.
resolutionNoData resolution: day, week, or month (default: month)month
start_dateYesStart date in YYYY-MM-DD format

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes well beyond the annotations by detailing output format (markdown table with summary statistics), multi-measure chart behavior, segmented chart top-10 columns, and error handling including auto-retry with backoff and invalid metric responses. This provides rich behavioral context not available from annotations alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is lengthy but well-organized into sections (overview, args, returns, examples, error handling). Every section provides essential information; the examples and error handling add value over schema. Slightly verbose due to repetition of some parameter details, but overall efficient for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description fully covers all parameters, output format, examples, and error handling. With no output schema, it still explains return values clearly. For a tool with 7 parameters and 21 possible metrics, this is comprehensive and complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 100% schema coverage, the description adds substantial meaning with natural language examples, common metric values, default resolution, auto-detection of project_id, and date format clarification. This goes far beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool queries RevenueCat Charts API metrics as a time series and returns a formatted markdown table. It explicitly distinguishes its purpose from sibling tools by mentioning rc_list_metrics for metric discovery and focusing on chart data with summary statistics, which is distinct from an overview tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance through examples that map natural language queries to parameter values, and mentions using rc_list_metrics to discover available metrics. It does not explicitly contrast with rc_get_overview, but the examples and parameter explanations give clear context for when to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rc_get_overviewGet Subscription OverviewA
Read-onlyIdempotent

Get a real-time snapshot of key subscription health metrics. No date range needed — returns current state.

Args:

  • api_key (string): RevenueCat secret API key starting with "sk_"

  • project_id (string, optional): RevenueCat project ID (e.g., "proj058a6330"). Auto-detected if omitted.

Returns: Markdown summary with: Active Trials, Active Subscriptions, MRR ($), Revenue (28d), New Customers (28d), Active Users (28d), Transactions (28d).

Examples:

  • "What's my current MRR?" -> call with just api_key

  • "Give me a subscription health check" -> call with just api_key

  • "How many active subscribers do I have?" -> call with just api_key

ParametersJSON Schema
NameRequiredDescriptionDefault
api_keyYesRevenueCat secret API key (starts with sk_)
project_idNoRevenueCat project ID (e.g., 'proj058a6330'). Auto-detected if omitted.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint, and the description adds the return format (Markdown summary with specific metrics) and auto-detection of project_id. It also discloses that api_key is required and that project_id is auto-detected, which is behavioral context beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear one-sentence summary, followed by Args, Returns, and Examples sections. No unnecessary fluff; every section adds value and it is front-loaded with the main purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with two parameters and no output schema, the description explains what it returns (specific metrics list), how to call it, and provides three usage examples. It is complete enough for an agent to select and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already fully describes both parameters (100% coverage), and the description reinforces api_key format and adds auto-detection behavior for project_id with an example. This adds meaningful context beyond the schema's static description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Get' and resource 'overview' of 'subscription health metrics', clearly distinguishing it from sibling tools like rc_list_metrics and rc_get_chart. It states it returns a real-time snapshot without a date range, which is a unique scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear context by stating 'No date range needed — returns current state' and gives example questions for when to call it. However, it does not explicitly mention when not to use it or direct to alternatives like rc_list_metrics or rc_get_chart, so there are no explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rc_list_metricsList RevenueCat Chart MetricsA
Read-onlyIdempotent

List all available RevenueCat Charts API metrics with descriptions. Use this to discover what subscription data you can query before calling rc_get_chart.

Args:

  • category (string): Filter by category — "all", "revenue", "actives", "trials", "conversion", or "cohorts" (default: "all")

Returns: Markdown-formatted list of metrics grouped by category, each with metric name (for use in rc_get_chart) and description.

Examples:

  • "What metrics can I query?" -> category="all"

  • "Show me revenue metrics" -> category="revenue"

  • "What trial data is available?" -> category="trials"

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoFilter metrics by category: all, revenue, actives, trials, conversion, or cohortsall

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false. The description adds value by specifying the return format (Markdown-formatted list grouped by category), how metric names should be used in rc_get_chart, and providing example queries. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with Args, Returns, and Examples sections. Every sentence adds value; no fluff or redundancy. It is appropriately sized for a simple single-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one optional parameter with enum, no output schema), the description is complete. It explains the return format, purpose, and relationship to sibling rc_get_chart, fully enabling correct use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description goes beyond by listing the exact category enum values in the Args section and giving concrete examples with natural-language queries, which clarifies how to use the parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists all available RevenueCat Charts API metrics with descriptions, using a specific verb ('List') and resource ('RevenueCat Charts API metrics'). It distinguishes from sibling rc_get_chart by noting it's for discovery before calling rc_get_chart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on when to use ('Use this to discover what subscription data you can query before calling rc_get_chart') and names the alternative rc_get_chart. It lacks an explicit 'when not to use' statement but implies it through the 'before calling' context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updatesv0.1.0
    • First observedrc_get_chart
    • First observedrc_get_overview
    • First observedrc_list_metrics

TDQS

A4.7/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: rc_list_metrics for discovering available metrics, rc_get_overview for a real-time snapshot of key metrics, and rc_get_chart for time-series queries of any metric. The overlap between overview and chart is minimal—one is a fixed snapshot, the other is flexible time series—so misselection is unlikely.

Naming Consistency5/5

All tools share the rc_ prefix and follow a consistent verb_noun pattern: list_metrics, get_overview, get_chart. The use of 'list' for enumeration and 'get' for data retrieval is natural and consistent.

Tool Count5/5

Three tools is well-scoped for a read-only RevenueCat Charts API server. Each tool covers a distinct need: discovery, snapshot, and time-series querying. No superfluous tools, and the count is appropriate for the narrow domain.

Completeness5/5

The tool set fully covers the core functionality of the RevenueCat Charts API: listing available metrics, getting a quick health snapshot, and querying any metric as a time series. There are no obvious dead ends—the overview covers common key metrics, and the chart tool covers all supported metrics. For a read-only API, this is complete.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Open-source MCP server for Claude AI that connects Stripe and Supabase to enable natural language SaaS analytics, including churn analysis, subscription tracking, and revenue insights.
    -
  • A
    license
    A
    quality
    B
    maintenance
    MCP server that gives AI assistants real-time access to Stripe business metrics like MRR, churn, and revenue forecasts via natural language queries.
    7
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    MCP server for RevenueCat that lets AI agents query subscriber data, check entitlements, fetch offerings, and manage subscriptions via natural language.
    6
    -
  • A
    license
    A
    quality
    D
    maintenance
    An MCP server that gives AI agents access to RevenueCat's Charts & Metrics API. Query MRR, churn, trial conversion, revenue, and 17 more subscription metrics directly from Claude, Cursor, or any MCP client.
    5
    8 npm
    MIT