Skip to main content
Glama
npow

stripe-analytics-mcp

by npow

stripe-analytics-mcp

CI npm License: MIT Node.js 18+ Docs

Ask your AI assistant "how's my business doing?" and get your MRR, churn, failed payments, and expiring trials in one answer.

The problem

You check your Stripe dashboard for MRR, churn, and revenue breakdown every day. Stripe's official MCP server only does operations — create customers, send invoices. It can't tell you what your MRR is. ChartMogul and Baremetrics compute these metrics but cost $100+/month and have no MCP interface. You're switching between your editor and browser tabs just to check a number.

Related MCP server: indie-metrics-mcp

The morning check

"How's my business doing?" / "Morning check" / "What happened overnight?"

One question, one answer, 30-second scan. Everything you'd normally check across 4 Stripe dashboard pages:

Dashboard — 2026-02-24

MRR: $4,280 (+$120 this week)
Subscriptions: 42 active, 3 trialing, 1 past due

MRR Movement (last 7 days)
- New: +$198 (2 new customers)
- Expansion: +$49 (1 upgrade)
- Contraction: -$0
- Churned: -$127 (1 cancellation)
- Net: +$120

Quick Ratio: 1.9 (healthy)

Failed Payments (2 — $147 at risk)
- alice@acme.com — $98 — card_declined — attempt 2
- bob@startup.io — $49 — insufficient_funds — attempt 1

Trials Expiring Soon (3 — $147 potential MRR)
- carol@bigco.com — Pro — 2 days left — $49/mo
- dave@agency.net — Basic — 1 day left — $19/mo
- eve@freelance.co — Pro — 3 days left — $49/mo

Recover failed payments

"Am I losing money to failed payments?"

Failed payments are the easiest revenue to recover — these customers already want to pay you. Get the list with failure reasons so you can reach out today:

Failed Payments

Total at risk: $245.00
Failed invoices: 3

| Customer          | Amount | Reason            | Attempts | Last Attempt | Plan |
|-------------------|--------|-------------------|----------|--------------|------|
| alice@acme.com    | $98.00 | card_declined     | 2        | 2026-02-23   | Pro  |
| bob@startup.io    | $49.00 | insufficient_funds| 1        | 2026-02-22   | Pro  |
| carol@agency.net  | $98.00 | expired_card      | 3        | 2026-02-21   | Pro  |

Track MRR growth

"How did my MRR change this month?"

See exactly where growth is coming from and where you're leaking:

MRR Movement — Last 30 days

Net New MRR: +$840
- New MRR: +$570 (from new customers)
- Expansion MRR: +$390 (from upgrades)
- Contraction MRR: -$49 (from downgrades)
- Churned MRR: -$71 (from cancellations)

Watch your trial funnel

The dashboard flags trials expiring within 3 days — customers about to decide whether to convert or leave. The highest-leverage moment to intervene.

Understand churn

"What's my churn rate?"

Both customer churn and revenue churn — because losing one $500/mo customer hurts more than losing five $10/mo customers:

Churn Analysis — Last 30 days

Customer Churn Rate: 3.2%
Revenue Churn Rate: 1.8%
Churned Customers: 4
Churned MRR: $127.00

Know which plans work

"Which plan makes the most money?"

| Plan       | Subscribers | MRR       | % of Total |
|------------|-------------|-----------|------------|
| Pro        | 28          | $2,744.00 | 64.1%      |
| Basic      | 35          | $665.00   | 15.5%      |
| Enterprise | 3           | $871.00   | 20.4%      |

Quick start

STRIPE_SECRET_KEY=sk_test_... npx stripe-analytics-mcp

Then ask your AI assistant: "How's my business doing?"

Install

npx stripe-analytics-mcp

Add to your Claude Code / Cursor / Windsurf MCP config:

{
  "mcpServers": {
    "stripe-analytics": {
      "command": "npx",
      "args": ["stripe-analytics-mcp"],
      "env": {
        "STRIPE_SECRET_KEY": "sk_test_..."
      }
    }
  }
}

How it works

Connects to Stripe (read-only), computes metrics from live subscription data, returns markdown your AI assistant renders naturally.

  • MRR: Sums subscription items, normalizes annual/weekly to monthly, applies discounts, excludes trials

  • Movement: Tracks new, expansion, contraction, and churn MRR from Stripe events

  • Quick Ratio: (New + Expansion) / (Contraction + Churn) — above 1.0 means growing

  • Failed payments: Scans open invoices with failed attempts

  • Trials: Identifies trialing subscriptions about to expire

Stateless — every query hits Stripe fresh. No data cached. No database. No account needed.

Configuration

Variable

Required

Description

STRIPE_SECRET_KEY

Yes

Stripe secret key (sk_test_... or sk_live_...). Read-only access is sufficient.

Development

git clone https://github.com/npow/stripe-analytics-mcp
cd stripe-analytics-mcp
npm install
npm run build
npm test

License

MIT

Available Tools

8 tools
get_churnB

Compute customer churn rate and revenue churn rate for a given period. Returns percentage of customers lost, percentage of revenue lost, counts of churned customers, and churned MRR amount.

ParametersJSON Schema
NameRequiredDescriptionDefault
period_daysNoNumber of days to analyze (default: 30, min: 1, max: 365)

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden, and it does disclose the output shape (percentages lost, churn counts, churned MRR). However, it says nothing about permissions, cost, or how churn is defined (e.g., cancellation window), which matters for a metric tool.

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?

Two tight sentences with zero waste. The primary purpose is front-loaded and the return values follow immediately.

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

Completeness4/5

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

With no output schema, the description usefully enumerates return metrics, and the only parameter is fully documented in the schema. Only a definition of how churn is measured and any default-period behavior caveats are missing.

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

Parameters3/5

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

Schema description coverage is 100% and the single parameter's default, min, and max are fully documented in the schema. The description adds only 'for a given period,' which conveys no detail beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb ('Compute') and resources ('customer churn rate and revenue churn rate'), and enumerates the returned metrics. It is clearly distinct from get_mrr or get_subscriber_stats by name and content, though it does not explicitly name a sibling to avoid.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of alternatives among the seven sibling analytics tools, and no prerequisites or exclusions. The agent must infer the context from the name alone.

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

get_dashboardA

The morning check — get everything important in one call. Returns: current MRR with week-over-week change, MRR movement breakdown (new/expansion/contraction/churn), failed payments needing attention, trials expiring in 3 days, and Quick Ratio. Use this when someone asks "how's my business doing?" or "morning check" or "what happened overnight?"

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden, and it does substantial work by enumerating the exact payload (MRR with WoW change, new/expansion/contraction/churn breakdown, failed payments, 3-day expiring trials, Quick Ratio). It omits any note on latency, caching, or freshness of the aggregates, but the return-content disclosure is well beyond what 'get' alone implies.

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?

Front-loaded with the 'morning check' framing, then a compact return list and trigger phrases. The enumerated return fields are long but earn their place because no output schema exists; the only minor redundancy is the repeated 'check' phrasing.

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?

No output schema exists, so the description must describe the return value itself — and it does so field by field, plus supplies the invocation triggers. For a zero-parameter, no-annotation aggregate tool, nothing an agent needs to select or call it correctly is missing.

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 tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. No misleading parameter hints are present.

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?

States a specific verb and resource ('get everything important in one call') and enumerates exactly what is returned (MRR, movement, failed payments, expiring trials, Quick Ratio). This distinguishes it from the narrow siblings get_mrr, get_churn, get_failed_payments, etc., since it is clearly the aggregate dashboard rather than a single-metric endpoint.

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?

Gives explicit trigger conditions with concrete user phrasings ('how's my business doing?', 'morning check', 'what happened overnight?'), which is unusually strong routing guidance. It stops short of naming the alternative siblings for deep dives (e.g., use get_mrr for a single metric), so no exclusion guidance is provided.

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

get_failed_paymentsA

Get all failed payment attempts with customer email, amount, failure reason, attempt count, and plan. These are recoverable revenue — money you can get back by reaching out to customers. Shows total revenue at risk.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days to look back (default: 30, min: 1, max: 90)

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It implies a read-only retrieval through 'Get' and lists the data fields, but does not explicitly state read-only/non-destructive behavior, authentication needs, rate limits, or pagination. For a read tool the disclosure is basic but incomplete.

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?

Three sentences, front-loaded with what the tool returns. The value proposition is stated twice in different words ('recoverable revenue' and 'total revenue at risk'), which is slightly repetitive but not damaging.

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

Completeness4/5

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

For a single-parameter read tool with no output schema, the description lists the returned fields and explains the business meaning. It omits how the 'days' filter affects results and does not specify return format, but the schema covers the parameter. Adequate overall.

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

Parameters3/5

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

The input schema has 100% description coverage for the single 'days' parameter (default/min/max). The description does not mention the 'days' parameter or add any filtering semantics beyond what the schema already provides. Baseline 3 applies.

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 states a specific verb ('Get') and resource ('failed payment attempts'), and enumerates returned fields (customer email, amount, failure reason, attempt count, plan). It is clearly distinct from siblings like get_mrr or get_churn, which cover different metrics.

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

Usage Guidelines3/5

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

Description gives context by framing the data as 'recoverable revenue' and 'money you can get back by reaching out to customers,' which implies a use case. However, it does not specify when to prefer this tool over siblings, nor any prerequisites or exclusions. Implied usage only.

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

get_mrrA

Compute current Monthly Recurring Revenue (MRR) from active Stripe subscriptions. Normalizes annual/weekly/daily subscriptions to monthly amounts, applies discounts, and excludes trials. Returns total MRR, subscription count, and status breakdown.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations present, the description carries the full burden and discloses genuinely useful behavioral details: normalization of annual/weekly/daily subscriptions to monthly, discount application, and exclusion of trials. It stops short of stating data freshness, auth requirements, or whether the call hits Stripe live, which are the remaining gaps for a no-annotation tool.

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?

Two sentences that are dense and front-loaded: the computation is stated first, then the normalization/eligibility rules, then the return shape. Every clause earns its place with no filler.

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

Completeness4/5

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

For a zero-parameter tool with no annotations and no output schema, the description covers the computation rules and names the returned values (total MRR, subscription count, status breakdown), which substitutes for the missing output schema. It would be complete with a note on data freshness or the live-vs-cached source.

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 tool takes zero parameters, so there is no per-parameter semantics to document and the baseline of 4 applies. Nothing in the description is needed to guide argument passing.

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

Purpose4/5

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

States a specific verb and resource ('Compute ... MRR') and narrows the scope precisely to 'current MRR from active Stripe subscriptions'. It does not, however, differentiate itself from the sibling get_mrr_movement, which an agent could easily confuse for a time-series view of the same metric.

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

Usage Guidelines2/5

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

The description explains what is computed but never states when to call this tool versus get_mrr_movement, get_revenue_by_plan, or get_subscriber_stats. No prerequisites, no exclusions, and no routing guidance are offered, so the agent must infer selection from the name alone.

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

get_mrr_movementA

MRR waterfall showing how MRR changed over a period: new MRR from new customers, expansion from upgrades, contraction from downgrades, and churn from cancellations. Answers "how did my MRR change this week/month?"

ParametersJSON Schema
NameRequiredDescriptionDefault
period_daysNoNumber of days to analyze (default: 7, min: 1, max: 90)

TDQS

A3.6/5.0
Behavior3/5

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

No annotations exist, so the description carries the full behavioral burden. It does disclose the shape of the result (the four waterfall buckets), which is genuinely useful, but says nothing about read-only safety, permissions, or the 90-day cap that constrains analysis.

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?

Two tight sentences, front-loaded with the waterfall definition and closed with the user-facing question it answers. No filler.

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

Completeness4/5

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

There is no output schema, so the description must explain the return content, and it does so by enumerating the four MRR movement categories. A minor gap remains on the window boundary (calendar period vs rolling days) that period_days alone does not resolve.

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

Parameters3/5

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

Only one parameter and schema description coverage is 100%, so the schema already documents period_days with its default and bounds. The description's 'over a period' adds no format or semantics beyond that. Baseline 3 applies.

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

Purpose4/5

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

States a specific resource (MRR movement) and unpacks it into the exact components returned: new, expansion, contraction, churn. That decomposition clearly distinguishes it from get_mrr (a point-in-time total), but the description never names a sibling or explicitly contrasts with one.

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

Usage Guidelines3/5

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

The closing question 'how did my MRR change this week/month?' gives an implied usage trigger, which is better than nothing. However, there is no guidance on when to prefer get_mrr or get_churn instead, and no stated prerequisites or exclusions.

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

get_recent_changesB

List recent subscription changes including new subscriptions, cancellations, upgrades, downgrades, and failed payments. Returns detailed event list with customer info and summary counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days to look back (default: 7, min: 1, max: 90)

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose the response shape ('detailed event list with customer info and summary counts'), which is useful given there is no output schema, but it says nothing about permissions, rate limits, or ordering of events.

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?

Two sentences, no filler, purpose front-loaded ahead of the return-value note. Efficient and appropriately sized for a one-parameter read tool.

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

Completeness3/5

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

For a simple one-param read tool with no output schema, the description covers both what it returns and what events it includes. However, with zero annotations it could have stated the read-only/no-side-effect nature and the default recency assumption explicitly.

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

Parameters3/5

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

Schema coverage is 100% and the single 'days' parameter already documents default, min, and max in the schema. The description adds no additional parameter meaning beyond implying a recency window, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb (List) and resource (recent subscription changes), then enumerates the event kinds covered: new subscriptions, cancellations, upgrades, downgrades, failed payments. Clear on its own, but it never distinguishes itself from overlapping siblings like get_failed_payments or get_mrr_movement.

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

Usage Guidelines2/5

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

No statement of when to use this versus the many adjacent reporting tools (get_churn, get_mrr_movement, get_failed_payments). 'Recent' implies a lookback window but gives no guidance on when this is the right call over a single-metric sibling.

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

get_revenue_by_planA

Break down MRR by pricing plan/product. Returns a table showing each plan with subscriber count, MRR contribution, and percentage of total revenue.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden, but this is a simple read-only analytics query with no parameters. It usefully discloses the return shape (per-plan rows with subscriber count, MRR contribution, and percentage of total), though it says nothing about permissions, time range defaults, or currency assumptions.

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?

Two tight sentences: the first names the operation and scope, the second describes exactly what comes back. Every clause earns its place and the key information is front-loaded.

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

Completeness4/5

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

With no output schema present, describing the returned columns is genuinely valuable and it does so. Since there are no parameters and no annotations, the only remaining gap is any hint about the reporting period or data freshness, which keeps it from a 5.

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 tool takes zero parameters, so there is no schema semantics to add to; the baseline for parameter-free tools applies. Nothing in the description contradicts or misrepresents the empty input schema.

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

Purpose4/5

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

States a specific verb ('Break down') and resource ('MRR by pricing plan/product'), making it clearly distinct in function from get_mrr or get_subscriber_stats. It stops short of explicitly naming a sibling or stating scope boundaries, so it lands just under the top tier.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no exclusions, and no mention of alternatives among the seven sibling analytics tools. The usage context is only inferable from the purpose statement itself.

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

get_subscriber_statsB

Get subscriber statistics for a given period. Returns total active subscribers, new subscribers, churned subscribers, net change, trial count, and past due count.

ParametersJSON Schema
NameRequiredDescriptionDefault
period_daysNoNumber of days to analyze (default: 30, min: 1, max: 365)

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, and it only implies a read via 'Get'. It says nothing about permissions, scoping, caching/freshness, or whether the period is relative to today, none of which the schema covers.

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?

Two sentences, front-loaded with the purpose, and the metric list is compact and useful. No filler, though the enumeration could be trimmed slightly without loss.

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

Completeness4/5

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

With no output schema, the description usefully lists the returned metrics, and the only parameter is fully documented in the schema. The main gap is the absence of any guidance on when to prefer this over get_churn, which shares the churn metric.

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

Parameters3/5

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

Schema description coverage is 100% and the single parameter already documents its default (30), minimum (1), and maximum (365). The description adds only the phrase 'for a given period' and no additional semantics, so the baseline 3 applies.

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

Purpose4/5

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

The description states a specific verb+resource (get subscriber statistics) and enumerates the exact metrics returned (active, new, churned, net change, trial, past due), which lets an agent distinguish it from pure-rate siblings like get_churn or get_mrr. It stops short of explicitly differentiating itself from the overlapping get_churn tool.

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

Usage Guidelines2/5

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

It says 'for a given period' but gives no when-to-use guidance, no conditions, and no reference to any alternative such as get_churn or get_mrr, which overlap on churn and subscriber metrics. The agent must infer selection from sibling names alone.

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. 8 tool updatesv0.1.0
    • First observedget_churn
    • First observedget_dashboard
    • First observedget_failed_payments
    • First observedget_mrr
    • First observedget_mrr_movement
    • First observedget_recent_changes
    • First observedget_revenue_by_plan
    • First observedget_subscriber_stats

TDQS

A3.7/5.0

Scored across 8 tools

Disambiguation4/5

Each tool targets a distinct analytics concept (MRR, churn, revenue by plan, subscriber stats, recent changes, dashboard, failed payments, MRR movement). However, churn-related data appears in get_churn, get_subscriber_stats, get_recent_changes, and get_mrr_movement, and get_dashboard overlaps with several individual tools, creating mild misselection risk.

Naming Consistency5/5

All tools use a consistent snake_case verb_noun pattern (get_mrr, get_churn, etc.), making the naming predictable and easy to parse.

Tool Count5/5

Eight tools is well-scoped for a Stripe analytics server, covering essential metrics without redundancy or excessive fragmentation.

Completeness4/5

The surface covers core analytics (MRR, churn, plans, subscribers, changes, failed payments, movement, dashboard). Minor gaps exist for deeper customer-level or cohort analysis, but agents can work around them with existing tools.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI-powered analytics from Stripe, PayPal, and Google Analytics 4 (BigQuery) data sources with built-in guardrails and automated workflows for financial and web performance 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
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables natural language interaction with Stripe accounts to query customers, revenue, invoices, subscriptions, disputes, and issue refunds.
    29 npm
    1
    MIT
  • 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