Skip to main content
Glama

stripe_subscription

Read-only

Subscriptions — read-only (cancelling is not available in this connector; do it from the Stripe dashboard).

Stripe has no "churning" status. Build it: cancel_at_period_end == true on active subs (voluntary, scheduled), status == "past_due" or "unpaid" (involuntary, payment failing), status == "canceled" with canceled_at in the window (already gone).

"items" returns the subscription's lines, where price and quantity (seat counts) actually live for multi-product subscriptions.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "stripe_subscription"
  }
}

Input Schema

NameRequiredDescriptionDefault
opNo"list" (default) | "get" | "items".list
_orgNoOrg (id) de CET APPEL. `oto_list_orgs()`.
limitNo1-100 (default 100). starting_after: pagination cursor.
_groupNoÉquipe (id) de CET APPEL, sous son org parente.
statusNo"list" filter. ⚠️ WITHOUT it Stripe returns only active and trialing subscriptions — cancelled ones silently disappear, which is exactly wrong for a churn question. Pass "all" to see everything.
_run_idNoOBLIGATOIRE à chaque appel dès `run_start` ou `data_claim_next` : sans lui, l'écriture sur une ligne réservée est refusée. Hérité seulement si le serveur tient un run actif — n'y compte pas.
_projectNoProjet (id) de CET APPEL — jeton PRIMAIRE. `oto_project(op='list')`.
price_idNo
_instanceNoInstance de connecteur PRÉCISE (un credential exact). `oto_instance(op='list')`.
customer_idNo
starting_afterNo
subscription_idNoREQUIRED by "get"/"items" (`sub_…`).

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

No schema history has been recorded yet.

TDQS

A3.9/5.0
Behavior4/5

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

readOnlyHint=true already covers the safety profile, but the description adds two things annotations cannot: cancellation is impossible here, and the default list behavior silently hides canceled/past_due subscriptions — a real correctness trap. It does not discuss pagination behavior (limit/starting_after) or how results are ordered, which the schema only touches lightly.

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-loads the read-only constraint, then the churn recipe, then the 'items' clarification — a sensible ordering. The status-default warning is partially duplicated between the description and the schema text, and the churn taxonomy is a bit wordy, but every sentence carries substance.

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?

An output schema exists, so return shapes need no prose, and the read-only/mutation story is covered. The gap is op-specific parameter applicability: with three ops and twelve params, nothing says which of customer_id, price_id, status, limit apply to 'list' vs 'get' vs 'items', nor that subscription_id is essential for two of them, forcing the agent to infer from the schema alone.

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 coverage is 75%, and the description adds domain semantics the schema does not: which fields constitute churn, and that price/quantity (seat counts) live on 'items' lines rather than the subscription object. Undocumented params like customer_id and price_id remain unexplained, and it never says which params apply to which op.

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?

Opens with a specific verb+resource ('Subscriptions — read-only') and immediately names the boundary of the resource (cancelling is out of scope, use the Stripe dashboard). It explains what 'items' returns, but never states plainly what 'list' and 'get' do, so the op enum has to carry that part. Clear enough to separate it from stripe_invoice/stripe_customer, though not explicitly routed against them.

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 actionable when-to guidance: the churn question requires status='all' because Stripe silently omits cancelled subs by default, and it says which field combinations identify voluntary vs involuntary churn. It also states a when-not constraint (no cancellation from this connector). It stops short of naming sibling tools to use for adjacent Stripe questions.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources