MCP Stripe Server — Let Claude interact with Stripe via natural language.
Stripe server has clear verb-based naming and reasonable descriptions (avg 150 chars), but lacks critical depth. All 6 tools have input schemas with types and descriptions, meeting baseline requirements. However, output schemas are undocumented (tools return JSON strings without field documentation), parameter constraints are minimal (no enums, ranges, or validation guidance), and error handling is generic. No tool annotations (readOnlyHint/destructiveHint). The create_payment_link tool is marked WRITE but lacks confirmation/dry-run pattern. Missing dependency hints and recovery guidance. Descriptions are adequate but not LLM-optimized per pattern:tool-description (should be 50-200 chars; most are 100-180, acceptable but could be tighter).
Create a Stripe payment link for a product. Args: price_id: Stripe Price ID (price_xxx) quantity: Quantity to purchase (default 1) success_url: URL to redirect after payment (optional) Returns: Payment link URL
Get the current Stripe account balance. Returns available and pending balances in all currencies.
Get payment history for a specific customer. Args: customer_id: Stripe customer ID (e.g., cus_xxx) limit: Number of payments to return (default 10) Returns: List of payments with amount, status, and date
Get revenue summary for the past N days. Args: days: Number of days to look back (default 30, max 365) Returns: Total revenue, number of charges, average charge, by currency
List recent Stripe customers. Args: limit: Number of customers to return (max 100, default 10) email: Filter by email address (optional) Returns: List of customers with ID, email, name, created date, and total spend
Output schemas undocumented. Tools return JSON strings but field structure is not declared. LLMs cannot plan downstream calls or extract data reliably.
No tool annotations. create_payment_link (WRITE) lacks destructiveHint; read-only tools lack readOnlyHint. Agents cannot infer safety/idempotency without explicit hints.
create_payment_link (WRITE) lacks confirmation/dry-run pattern. Agents can create payment links without review, risking unintended transactions.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 68 | 2026-07-28+ | v2 |
List products and their prices from Stripe. Args: limit: Number of products to return (default 20) active_only: Only show active products (default True) Returns: List of products with names and prices
Parameter constraints missing. 'limit' params lack min/max bounds; 'days' in get_revenue_summary states max 365 in description but not in schema. No enums for constrained values.
Error handling is generic. require_stripe() returns plain strings; no recovery guidance, categorization, or actionable next steps for LLMs.