Read-only MCP server for querying Stripe customers, payments, subscriptions, invoices, and refunds from any MCP client.
Stripe MCP has well-structured tool definitions with consistent naming (verb_noun pattern: list_*, get_*) and clear descriptions (avg ~60 chars). All 8 tools have input schemas with type definitions and required field declarations. However, parameter descriptions are sparse or missing for several tools (list_payments lacks limit description; list_invoices lacks limit description). Output schemas are not documented, LLMs cannot predict response structure. Error handling is minimal (generic toError() wrapper). No pagination guidance despite list tools returning arrays. No tool annotations (readOnlyHint, idempotentHint).
Get full details for a single customer by ID.
Get full details for a single payment intent by ID.
Get full details for a single subscription by ID.
List recent Stripe customers, most recent first.
List invoices, optionally filtered by customer or status.
List recent payment intents, most recent first.
Output schemas not documented. LLMs cannot predict response structure (customer object fields, payment intent fields, etc.). Baseline: 100% of A+ tools document return types.
Parameter descriptions missing or incomplete. list_payments.limit has no description; list_invoices.limit has no description. Baseline: 100% of A+ tool params have descriptions.
No pagination guidance in list tool descriptions. Tools return arrays but descriptions do not explain result limits, pagination, or when to call again. Baseline: paginated-result pattern requires limit/offset and total count.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
List recent refunds, most recent first.
List subscriptions, optionally filtered by customer or status.
No tool annotations (readOnlyHint, idempotentHint). All tools are read-only but this is not declared in the schema. Agents cannot infer safety properties.
Error handling is generic. toError() returns only error.message with no recovery guidance. Baseline: error responses must tell LLM what to do next (pattern:recovery-guide).