Skip to main content
Glama
CSOAI-ORG

Stripe Billing MCP

MCP Scorecard: 74/100

Stripe Billing MCP

MEOK AI Labs GSPC License PyPI PyPI Python

By MEOK AI Labs β€” Sovereign AI tools for everyone.

MEOK AI Labs MCP Server

MEOK AI Labs MCP Server


πŸš€ Quick Start

# Install via pip
pip install stripe_billing_mcp

# Or install via Smithery
npx -y @smithery/cli@latest install stripe-billing-mcp --client claude

Related MCP server: MCP Billing Gateway SDK

✨ Features

  • MCP protocol compliant

  • Easy installation

  • Well-documented API

  • Production-ready

  • Active maintenance

πŸ“– Documentation

πŸ›‘οΈ Compliance

This MCP server is built with EU AI Act compliance built-in:

  • βœ… Article 9 β€” Risk Management System

  • βœ… Article 13 β€” Transparency & Instructions for Use

  • βœ… Article 15 β€” Bias Detection & Testing

  • βœ… Article 26 β€” FRIA Support (where applicable)

  • βœ… Article 50 β€” AI Content Watermarking (where applicable)

Need help getting compliant? Book a free 15-min diagnostic β†’

🏒 Enterprise

Need custom development, SLA guarantees, or white-label deployment?

  • Pro: $99/mo β€” Full MCP suite + EU AI Act tracking

  • Enterprise: $499/mo β€” Custom dev + SLA + Dedicated support

View Pricing β†’ | Contact Sales β†’

🀝 Part of the MEOK Ecosystem

This server is part of the MEOK AI Labs ecosystem β€” 300+ MCP servers for sovereign AI governance.

Domain

Purpose

councilof.ai

EU AI Act compliance marketplace

safetyof.ai

AI safety & monitoring

meok.ai

Sovereign AI platform

cobolbridge.ai

Legacy modernization

πŸ“œ License

MIT Β© CSOAI-ORG



Pairs with MEOK Governance Suite

Build something that touches users? You need compliance. MEOK ships 38 governance MCPs that drop in alongside this tool β€” EU AI Act, DORA, NIS2, CRA, GDPR, ISO 42001, FDA SaMD, MDR, Basel, MiFID II, MiCA, COPPA, and more.

# One-shot install of the governance pack
npx meok-setup --pack governance

Free tier: 10 calls/day per MCP. Pro tier (Β£79/mo): unlimited + cryptographically signed compliance attestations your auditor verifies independently.

β†’ Full catalogue: councilof.ai/catalogue β†’ MEOK AI Labs: meok.ai

πŸ’Έ Try MEOK in 30 seconds β€” instant buy ladder

Tier

Price

What you get

Stripe

Smoke test

Β£1

Signed sample MCP-Hardening report + Article 50 PDF

https://buy.stripe.com/aFa7sNcgAdQS0ZT1Uc8k91t

Quick Kit

Β£9

EU AI Act Article 50 implementation guide (C2PA + EU-Icon)

https://buy.stripe.com/aFa7sNcgAdQS0ZT1Uc8k91t

Founder Call

Β£29

30-min 1-on-1 with the founder

https://buy.stripe.com/aFa7sNcgAdQS0ZT1Uc8k91t

Refundable. UK Stripe β€” VAT-clean. Builds on the 81-MCP MEOK fleet. Verify any signed report at https://meok.ai/verify.

Available Tools

8 tools
cancel_subscriptionD

Cancel a Stripe subscription.

Args: subscription_id: Stripe subscription ID (sub_...) at_period_end: If True, cancel at end of billing period (default). If False, cancel immediately. prorate: Whether to prorate the final invoice (default True)

Behavior: This tool is read-only and stateless β€” it produces analysis output without modifying any external systems, databases, or files. Safe to call repeatedly with identical inputs (idempotent). Free tier: 10/day rate limit. Pro tier: unlimited. No authentication required for basic usage.

When to use: Use this tool when you need structured analysis or classification of inputs against established frameworks or standards.

When NOT to use: Not suitable for real-time production decision-making without human review of results. Behavioral Transparency: - Side Effects: This tool is read-only and produces no side effects. It does not modify any external state, databases, or files. All output is computed in-memory and returned directly to the caller. - Authentication: No authentication required for basic usage. Pro/Enterprise tiers require a valid MEOK API key passed via the MEOK_API_KEY environment variable. - Rate Limits: Free tier: 10 calls/day. Pro tier: unlimited. Rate limit headers are included in responses (X-RateLimit-Remaining, X-RateLimit-Reset). - Error Handling: Returns structured error objects with 'error' key on failure. Never raises unhandled exceptions. Invalid inputs return descriptive validation errors. - Idempotency: Fully idempotent β€” calling with the same inputs always produces the same output. Safe to retry on timeout or transient failure. - Data Privacy: No input data is stored, logged, or transmitted to external services. All processing happens locally within the MCP server process.

ParametersJSON Schema
NameRequiredDescriptionDefault
api_keyNo
prorateNo
at_period_endNo
subscription_idYes

TDQS

D1.7/5.0
Behavior1/5

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

With no annotations, the description carries the full burden of behavioral disclosure, but it falsely claims 'read-only', 'no side effects', and 'idempotent' for a tool that cancels a subscription. This is actively misleading and sets false expectations about side effects, authentication, and rate limits.

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

Conciseness2/5

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

The description is long and repetitive, with a 'Behavior' section and a 'Behavioral Transparency' section duplicating the same false claims. Much of the content is irrelevant to cancellation and should be removed.

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

Completeness1/5

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

For a mutating tool with no output schema and no annotations, the description must explain actual side effects, errors, and results. It instead claims there are no side effects and gives generic analysis-tool boilerplate, leaving an agent completely unprepared for the real behavior of canceling a subscription.

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 Args section provides useful semantics for subscription_id, at_period_end, and prorate that go beyond the raw schema. However, api_key is left undocumented, and the surrounding false behavioral claims undermine trust in the parameter descriptions.

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

Purpose2/5

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

The opening phrase 'Cancel a Stripe subscription' is clear, but the Behavior section immediately claims the tool is read-only and produces analysis output, directly contradicting the stated purpose. An agent cannot reliably determine whether this cancels a subscription or performs analysis.

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

Usage Guidelines1/5

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

The 'When to use' section recommends using this tool for structured analysis or classification, which is irrelevant and misleading for a subscription cancellation tool. No guidance is given on when to cancel versus using sibling tools like create_subscription or list_invoices.

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

create_checkout_sessionC

Generate a Stripe Checkout URL for a price.

Args: price_id: Stripe price ID (price_...) success_url: URL to redirect after successful payment cancel_url: URL to redirect if customer cancels mode: Checkout mode β€” "subscription" or "payment" (one-time) customer_email: Pre-fill the customer's email in checkout

Behavior: This tool generates structured output without modifying external systems. Output is deterministic for identical inputs. No side effects. Free tier: 10/day rate limit. Pro tier: unlimited. No authentication required for basic usage.

When to use: Use this tool when you need structured analysis or classification of inputs against established frameworks or standards.

When NOT to use: Not suitable for real-time production decision-making without human review of results.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNosubscription
api_keyNo
price_idYes
cancel_urlNohttps://example.com/cancel
success_urlNohttps://example.com/success
customer_emailNo

TDQS

C2.2/5.0
Behavior1/5

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

The description claims 'without modifying external systems' and 'No side effects', which is false for a tool that creates a Stripe Checkout session. It also says 'No authentication required for basic usage' despite an api_key parameter in the schema. These are serious misrepresentations that would lead to incorrect invocation.

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

Conciseness2/5

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

The description contains a relevant opening and Args section, but the Behavior and When-to-use sections are bloated with irrelevant and contradictory content that adds no value. It is not concise and the structure wastes space on misinformation.

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

Completeness1/5

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

The tool has 6 parameters, no output schema, and no annotations, so the description must carry full contextual weight. It fails to explain authentication, the real side effects, what exactly is returned, or how api_key is used. Instead it provides false assertions about determinism and side effects, making the description incomplete in a way that is actively dangerous.

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 description provides meaningful explanations for five of six parameters (price_id, success_url, cancel_url, mode, customer_email) in the Args section. However, it completely omits api_key, which is present in the schema. With 0% schema coverage, the description partially compensates but leaves a critical parameter unexplained.

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 opening sentence 'Generate a Stripe Checkout URL for a price' is a clear verb+resource statement. It doesn't explicitly differentiate from siblings like create_subscription, but the resource is distinct enough. However, the later 'When to use' section introduces unrelated structured-analysis language that muddies the purpose.

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

Usage Guidelines1/5

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

The 'When to use' section says to use this tool for 'structured analysis or classification of inputs against established frameworks' β€” completely unrelated to creating a Stripe Checkout session. This is actively misleading guidance that would send an agent down the wrong path. No alternative tools are mentioned.

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

create_customerD

Create a new Stripe customer.

Args: name: Customer full name email: Customer email address metadata: Optional key-value metadata (e.g. {"plan": "pro", "source": "website"})

Behavior: This tool generates structured output without modifying external systems. Output is deterministic for identical inputs. No side effects. Free tier: 10/day rate limit. Pro tier: unlimited. No authentication required for basic usage.

When to use: Use this tool when you need structured analysis or classification of inputs against established frameworks or standards.

When NOT to use: Not suitable for real-time production decision-making without human review of results.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
emailYes
api_keyNo
metadataNo

TDQS

D1.5/5.0
Behavior1/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 claims 'No side effects' and 'without modifying external systems,' yet creating a Stripe customer inherently modifies an external system via the Stripe API. It also claims 'No authentication required for basic usage' while the schema includes an api_key parameter. The description contradicts the tool's fundamental nature as a side-effecting, authenticated external API call.

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

Conciseness2/5

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

The description is organized into labeled sections, which is structurally sound, but large portions are filled with irrelevant content about analysis/classification that belongs to a different tool. These misleading blocks should be removed entirely; the useful content is only the first line and parameter list.

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

Completeness1/5

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

For a mutation tool hitting an external service, the description should disclose auth requirements (api_key), side effects, rate limits, and return behavior. It instead claims the opposite of the truth β€” no side effects and no auth. It also fails to describe what the created customer returns. The definition is seriously inadequate and misleading for the actual operation.

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

Parameters2/5

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

Schema coverage is 0%, so the description must document parameters. It covers name, email, and metadata with reasonable examples, but omits the api_key parameter entirely even though it is present in the schema and relevant to the tool's true behavior. This leaves the agent uninformed about one of the four parameters.

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

Purpose2/5

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

The opening line 'Create a new Stripe customer' states a clear verb+resource, but the Behavior section immediately contradicts it by claiming the tool 'generates structured output without modifying external systems' and frames it as a 'structured analysis or classification' tool. An agent reading the full description would be confused about whether this creates a customer or performs analysis.

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

Usage Guidelines1/5

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

The 'When to use' section suggests this tool is for 'structured analysis or classification of inputs against established frameworks' β€” completely unrelated to creating a Stripe customer. The 'When NOT to use' warning about production decision-making is also irrelevant to a customer-creation operation. This guidance actively misleads rather than helps.

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

create_subscriptionD

Subscribe a customer to a price/plan.

Args: customer_id: Stripe customer ID (cus_...) price_id: Stripe price ID (price_...) trial_days: Optional trial period in days

Behavior: This tool generates structured output without modifying external systems. Output is deterministic for identical inputs. No side effects. Free tier: 10/day rate limit. Pro tier: unlimited. No authentication required for basic usage.

When to use: Use this tool when you need structured analysis or classification of inputs against established frameworks or standards.

When NOT to use: Not suitable for real-time production decision-making without human review of results. Behavioral Transparency: - Side Effects: This tool is read-only and produces no side effects. It does not modify any external state, databases, or files. All output is computed in-memory and returned directly to the caller. - Authentication: No authentication required for basic usage. Pro/Enterprise tiers require a valid MEOK API key passed via the MEOK_API_KEY environment variable. - Rate Limits: Free tier: 10 calls/day. Pro tier: unlimited. Rate limit headers are included in responses (X-RateLimit-Remaining, X-RateLimit-Reset). - Error Handling: Returns structured error objects with 'error' key on failure. Never raises unhandled exceptions. Invalid inputs return descriptive validation errors. - Idempotency: Fully idempotent β€” calling with the same inputs always produces the same output. Safe to retry on timeout or transient failure. - Data Privacy: No input data is stored, logged, or transmitted to external services. All processing happens locally within the MCP server process.

ParametersJSON Schema
NameRequiredDescriptionDefault
api_keyNo
price_idYes
trial_daysNo
customer_idYes

TDQS

D1.2/5.0
Behavior1/5

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

With no annotations, the description carries full responsibility for behavioral disclosure. It claims the tool is 'read-only', 'produces no side effects', and 'does not modify any external state, databases, or files.' For a tool named create_subscription with Stripe customer/price IDs, this is highly misleading and likely false. The detailed behavioral bullets are transparent in form but inaccurate in substance.

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

Conciseness1/5

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

The description is long and highly repetitive: 'no side effects', 'read-only', and 'no authentication' appear multiple times. The boilerplate 'Behavioral Transparency' section duplicates earlier claims and adds irrelevant content for a subscription tool. The verbosity obscures rather than clarifies the tool's actual purpose.

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

Completeness1/5

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

Given no output schema and no annotations, the description should clarify the real effect, return value, and side effects. Instead it describes a fictional in-memory analysis tool and omits what happens when a subscription is created. It is incomplete and misleading for the actual Stripe operation implied by the tool name and inputs.

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

Parameters2/5

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

The Args section adds useful meaning for customer_id, price_id, and trial_days, including ID format hints. However, schema coverage is 0% and the api_key parameter is completely omitted. The later auth note refers to MEOK_API_KEY environment variable, not the api_key parameter, leaving one parameter undocumented and creating confusion.

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

Purpose1/5

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

The opening line 'Subscribe a customer to a price/plan' states a clear verb and resource, but the next lines claim 'This tool generates structured output without modifying external systems' and describe it as 'structured analysis or classification.' This directly contradicts the tool's name, Stripe parameters, and sibling tools. An agent cannot determine whether this creates a subscription or performs read-only analysis.

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

Usage Guidelines1/5

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

The 'When to use' section says to use it for 'structured analysis or classification,' which does not match a subscription-creation tool. The 'When NOT to use' warning about 'real-time production decision-making' is unrelated and provides no guidance on when to choose create_subscription over siblings like create_checkout_session or cancel_subscription.

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

get_balanceC

Get current Stripe account balance and recent payouts.

Returns available and pending balances plus the last 5 payouts.

Behavior: This tool is read-only and stateless β€” it produces analysis output without modifying any external systems, databases, or files. Safe to call repeatedly with identical inputs (idempotent). Free tier: 10/day rate limit. Pro tier: unlimited. No authentication required for basic usage.

When to use: Use this tool when you need structured analysis or classification of inputs against established frameworks or standards.

When NOT to use: Not suitable for real-time production decision-making without human review of results. Behavioral Transparency: - Side Effects: This tool is read-only and produces no side effects. It does not modify any external state, databases, or files. All output is computed in-memory and returned directly to the caller. - Authentication: No authentication required for basic usage. Pro/Enterprise tiers require a valid MEOK API key passed via the MEOK_API_KEY environment variable. - Rate Limits: Free tier: 10 calls/day. Pro tier: unlimited. Rate limit headers are included in responses (X-RateLimit-Remaining, X-RateLimit-Reset). - Error Handling: Returns structured error objects with 'error' key on failure. Never raises unhandled exceptions. Invalid inputs return descriptive validation errors. - Idempotency: Fully idempotent β€” calling with the same inputs always produces the same output. Safe to retry on timeout or transient failure. - Data Privacy: No input data is stored, logged, or transmitted to external services. All processing happens locally within the MCP server process.

ParametersJSON Schema
NameRequiredDescriptionDefault
api_keyNo

TDQS

C2.4/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, and it does disclose side effects, idempotency, rate limits, auth, error handling, and data privacy. However, some claims are internally inconsistent with the tool's stated function: 'All processing happens locally within the MCP server process' and 'No input data is... transmitted to external services' sit oddly beside a Stripe balance lookup, and the auth model is muddled (no auth vs. MEOK_API_KEY vs. api_key param). This keeps it from being fully trustworthy.

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

Conciseness2/5

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

The description is long and repetitive: the 'Behavior' section and the 'Behavioral Transparency' bullet list cover the same points (read-only, auth, rate limits, idempotency). The boilerplate 'When to use' section adds noise without value, so not every sentence earns its place.

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

Completeness2/5

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

The description gives useful operational details (returned balances/payouts, rate limits, error shape), but it omits the meaning of the api_key parameter and contains an irrelevant usage section. Without an output schema, the return description is thin (no structure for the 'error' objects beyond a key name), leaving the agent under-informed for correct invocation.

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

Parameters1/5

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

The schema has one parameter (api_key) with no description, and schema coverage is 0%, so the description must explain it. It only mentions MEOK_API_KEY environment variable for Pro tiers and never clarifies whether/how the api_key argument should be populated; this is confusing and insufficient.

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 opening sentence states a specific verb and resource ('Get current Stripe account balance and recent payouts') and the second sentence defines the return content, so the core purpose is clear. However, the later 'When to use' text describes 'structured analysis or classification of inputs against established frameworks,' which is unrelated to balance retrieval, and no sibling differentiation is provided (e.g., vs. get_revenue_metrics).

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

Usage Guidelines1/5

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

The 'When to use' section is boilerplate that describes classification/analysis tasks, not retrieving balances, so it actively misroutes the agent. It never names or contrasts sibling tools such as get_revenue_metrics or list_invoices, and the 'When NOT to use' caveat about real-time production decisions is generic and not tied to the tool's actual capabilities.

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

get_revenue_metricsB

Calculate MRR, ARR, churn rate, and LTV from live Stripe data.

Fetches active/canceled subscriptions and computes:

  • MRR (Monthly Recurring Revenue)

  • ARR (Annual Recurring Revenue)

  • Churn rate (cancellations in last 30 days / total active)

  • Average revenue per customer

  • Estimated LTV

Behavior: This tool is read-only and stateless β€” it produces analysis output without modifying any external systems, databases, or files. Safe to call repeatedly with identical inputs (idempotent). Free tier: 10/day rate limit. Pro tier: unlimited. No authentication required for basic usage.

When to use: Use this tool when you need structured analysis or classification of inputs against established frameworks or standards.

When NOT to use: Not suitable for real-time production decision-making without human review of results. Behavioral Transparency: - Side Effects: This tool is read-only and produces no side effects. It does not modify any external state, databases, or files. All output is computed in-memory and returned directly to the caller. - Authentication: No authentication required for basic usage. Pro/Enterprise tiers require a valid MEOK API key passed via the MEOK_API_KEY environment variable. - Rate Limits: Free tier: 10 calls/day. Pro tier: unlimited. Rate limit headers are included in responses (X-RateLimit-Remaining, X-RateLimit-Reset). - Error Handling: Returns structured error objects with 'error' key on failure. Never raises unhandled exceptions. Invalid inputs return descriptive validation errors. - Idempotency: Fully idempotent β€” calling with the same inputs always produces the same output. Safe to retry on timeout or transient failure. - Data Privacy: No input data is stored, logged, or transmitted to external services. All processing happens locally within the MCP server process.

ParametersJSON Schema
NameRequiredDescriptionDefault
api_keyNo

TDQS

B3.4/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and covers it thoroughly: read-only, stateless, idempotent, no side effects, authentication requirements, tier-based rate limits, structured error handling, and data-privacy guarantees. This goes well beyond what annotations would typically provide.

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

Conciseness2/5

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

The description is repetitive: read-only/stateless behavior, rate limits, and authentication details appear multiple times across the 'Behavior' section and the 'Behavioral Transparency' bullets. The 'When to use' paragraph adds little and even describes a different kind of tool, so not every sentence earns its place.

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?

Operationally, the description is strong: it explains side effects, auth, rate limits, error handling, and idempotency. However, there is no output schema, and the description never specifies the exact return shape or field types beyond naming the computed metrics, leaving a clear gap for an agent that needs to consume the result.

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

Parameters2/5

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

The schema documents only an optional api_key parameter with a default, and schema description coverage is 0%. The description mentions that no auth is required for basic usage and that Pro tiers use a MEOK_API_KEY environment variable, but it never explains how the api_key parameter itself is used or what values it accepts.

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 opening sentence states a specific verb and resource: 'Calculate MRR, ARR, churn rate, and LTV from live Stripe data,' and enumerates the metrics. This distinguishes it from sibling tools that create, cancel, or list Stripe objects, though it does not explicitly name or contrast those siblings.

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 description includes both 'When to use' and 'When NOT to use' sections, and the main body clearly implies use when revenue metrics are needed. However, the 'When to use' text is generic and poorly matchedβ€”'classification of inputs against established frameworks or standards' is not what this tool doesβ€”and no alternative sibling tools are named for comparison.

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

list_invoicesA

List recent invoices for a customer.

Args: customer_id: Stripe customer ID (cus_...) limit: Number of invoices to return (default 10, max 100) status: Filter by status: draft, open, paid, uncollectible, void (optional)

Behavior: This tool generates structured output without modifying external systems. Output is deterministic for identical inputs. No side effects. Free tier: 10/day rate limit. Pro tier: unlimited. No authentication required for basic usage.

When to use: Use this tool when you need structured analysis or classification of inputs against established frameworks or standards.

When NOT to use: Not suitable for real-time production decision-making without human review of results. Behavioral Transparency: - Side Effects: This tool is read-only and produces no side effects. It does not modify any external state, databases, or files. All output is computed in-memory and returned directly to the caller. - Authentication: No authentication required for basic usage. Pro/Enterprise tiers require a valid MEOK API key passed via the MEOK_API_KEY environment variable. - Rate Limits: Free tier: 10 calls/day. Pro tier: unlimited. Rate limit headers are included in responses (X-RateLimit-Remaining, X-RateLimit-Reset). - Error Handling: Returns structured error objects with 'error' key on failure. Never raises unhandled exceptions. Invalid inputs return descriptive validation errors. - Idempotency: Fully idempotent β€” calling with the same inputs always produces the same output. Safe to retry on timeout or transient failure. - Data Privacy: No input data is stored, logged, or transmitted to external services. All processing happens locally within the MCP server process.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
statusNo
api_keyNo
customer_idYes

TDQS

A3.6/5.0
Behavior5/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 comprehensively discloses side effects (read-only, no external modification), authentication requirements, rate limits, error handling, idempotency, and data privacy. This is thorough, explicit behavioral disclosure beyond what structured data provides.

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

Conciseness3/5

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

The description is well-structured with clear headings and front-loaded summary, but it is repetitive: the 'Behavior' and 'Behavioral Transparency' sections restate side effects, authentication, and rate limits. The 'When to use' section is generic filler that adds noise rather than value.

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 read-only list tool with no annotations and no output schema, the description covers the essential operational context: safety profile, auth, rate limits, error behavior, idempotency, and determinism. The main gaps are the undocumented response shape/pagination and the ambiguous api_key parameter, but the tool remains safely invokable for basic usage.

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 0%, and the description compensates well for customer_id (prefix and meaning), limit (default 10, max 100), and status (allowed values). However, the schema's api_key parameter is not explained as an argument; the auth section references an environment variable instead, leaving ambiguity about how to pass an API key through the tool call.

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 opens with a specific verb and resource: 'List recent invoices for a customer.' It further clarifies the customer_id as a Stripe customer ID (cus_...), and no sibling tool performs invoice listing, so it is clearly distinguishable from tools like create_customer or search_customers.

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

Usage Guidelines1/5

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

Although 'When to use' and 'When NOT to use' sections exist, the content is generic boilerplate about 'structured analysis or classification of inputs against established frameworks or standards' that is unrelated to listing invoices. It does not state when to prefer this tool over siblings or provide actionable selection criteria, and the guidance is actively misleading.

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

search_customersC

Search Stripe customers by email or name.

Args: query: Email address or name to search for limit: Max results to return (default 10, max 100)

Behavior: This tool is read-only and stateless β€” it produces analysis output without modifying any external systems, databases, or files. Safe to call repeatedly with identical inputs (idempotent). Free tier: 10/day rate limit. Pro tier: unlimited. No authentication required for basic usage.

When to use: Use this tool when you need structured analysis or classification of inputs against established frameworks or standards.

When NOT to use: Not suitable for real-time production decision-making without human review of results. Behavioral Transparency: - Side Effects: This tool is read-only and produces no side effects. It does not modify any external state, databases, or files. All output is computed in-memory and returned directly to the caller. - Authentication: No authentication required for basic usage. Pro/Enterprise tiers require a valid MEOK API key passed via the MEOK_API_KEY environment variable. - Rate Limits: Free tier: 10 calls/day. Pro tier: unlimited. Rate limit headers are included in responses (X-RateLimit-Remaining, X-RateLimit-Reset). - Error Handling: Returns structured error objects with 'error' key on failure. Never raises unhandled exceptions. Invalid inputs return descriptive validation errors. - Idempotency: Fully idempotent β€” calling with the same inputs always produces the same output. Safe to retry on timeout or transient failure. - Data Privacy: No input data is stored, logged, or transmitted to external services. All processing happens locally within the MCP server process.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
api_keyNo

TDQS

C2.7/5.0
Behavior2/5

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

Annotations are absent, so the description must fully disclose behavior. It claims read-only and idempotent, but the description includes contradictory statements: it says 'No authentication required' but later mentions API key for Pro/Enterprise tiers. Also, it says 'read-only and produces no side effects' which is consistent, but the description's generic 'When to use' text about 'analysis or classification' is misleading. The rate limits and privacy details add value, but the inconsistency lowers the score.

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

Conciseness2/5

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

The description is overly verbose with redundant sections. It repeats 'read-only', 'no side effects', and 'idempotent' multiple times (in the opening, in Behavioral Transparency, and in other sections). The 'When to use' section is generic and irrelevant, adding noise. The front-loading is good with the clear first line, but the length and repetition undermine conciseness.

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

Completeness2/5

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

Given the tool has no output schema, the description must explain return format; it mentions error objects but not successful response structure. The description covers safety, rate limits, and idempotency, but the instability with auth requirements and the generic usage guidelines leave gaps. The tool's purpose of searching customers is simple, but the description's extraneous content and contradictions limit completeness.

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

Parameters2/5

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

The schema has 0% description coverage for parameters, and the description introduces a third parameter 'api_key' not shown in the schema's properties (actually it is in the schema but not documented in the description). The description explains 'query' and 'limit' in Args, but does not explain 'api_key', and the schema itself lacks descriptions. The description provides some details for query and limit, but fails to cover all parameters, leaving the agent to guess about api_key.

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 clearly states the tool searches Stripe customers by email or name, which is a specific verb and resource. However, it does not explicitly differentiate from sibling tools like list_invoices, but the purpose is clear enough for an agent to understand its role.

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 description includes a 'When to use' section that is generic and mentions 'structured analysis or classification', which seems unrelated to searching customers. There is no explicit mention of alternatives among siblings, and the 'When NOT to use' is vague and not directly about customer search.

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 updatesv1.0.0
    • First observedcancel_subscription
    • First observedcreate_checkout_session
    • First observedcreate_customer
    • First observedcreate_subscription
    • First observedget_balance
    • First observedget_revenue_metrics
    • First observedlist_invoices
    • First observedsearch_customers

TDQS

C2.8/5.0

Scored across 8 tools

Disambiguation5/5

Each tool targets a distinct resource and action: customers, subscriptions, invoices, checkout, metrics, and balance. Even the two analytics tools (get_revenue_metrics and get_balance) are clearly separable by their focus.

Naming Consistency5/5

All tools follow a consistent verb_noun snake_case pattern: create_customer, search_customers, create_subscription, cancel_subscription, list_invoices, create_checkout_session, get_revenue_metrics, get_balance. No mixed conventions or vague verbs.

Tool Count5/5

Eight tools is well-scoped for a billing-oriented server, covering customer management, subscription lifecycle, invoicing, checkout, and financial analytics. Each tool earns its place without redundancy.

Completeness4/5

Core billing workflows are present: customer create/search, subscription create/cancel, invoice listing, checkout session creation, and revenue/balance views. Minor gaps include no subscription update, no invoice detail view, and no customer update/delete, but these are workable for the stated billing domain.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers