{
  "server": "stripe",
  "url": "https://mcp.stripe.com",
  "date": "2026-09-22",
  "protocolVersion": "2026-07-28",
  "serverInfo": {
    "name": "stripe-mcp",
    "version": "1.0.0"
  },
  "listChangedDeclared": false,
  "toolCount": 9,
  "outputSchemaCoveragePct": 77.77,
  "tools": [
    {
      "annotations": {
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true,
        "readOnlyHint": true,
        "title": "Get Stripe account information"
      },
      "description": "This will get the account info for the logged in Stripe account.\n",
      "inputSchema": {
        "properties": {},
        "type": "object"
      },
      "name": "get_stripe_account_info",
      "outputSchema": {
        "properties": {
          "account_id": {
            "type": "string"
          },
          "dashboard_api_keys_link": {
            "format": "uri",
            "type": "string"
          },
          "display_name": {
            "type": "string"
          }
        },
        "required": [
          "account_id",
          "display_name",
          "dashboard_api_keys_link"
        ],
        "type": "object"
      }
    },
    {
      "annotations": {
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true,
        "readOnlyHint": true,
        "title": "Search Stripe documentation"
      },
      "description": "Search the Stripe documentation for the given question and language.\n\nIt takes two arguments:\n- question (str): The user question to search an answer for in the Stripe documentation.\n- language (str, optional): The programming language to search for in the documentation.\n",
      "inputSchema": {
        "properties": {
          "language": {
            "description": "The programming language to search for in the documentation.",
            "enum": [
              "dotnet",
              "go",
              "java",
              "node",
              "php",
              "ruby",
              "python",
              "curl"
            ],
            "type": "string"
          },
          "question": {
            "description": "The user question about integrating with Stripe will be used to search the documentation.",
            "maxLength": 1000,
            "type": "string"
          },
          "search_only_api_ref": {
            "description": "When set to true, search only in the Stripe API reference documentation instead of the full documentation set. Use true when users need specific API implementation details, code examples, or parameter references. Use false (default) for conceptual explanations, best practices, integration guides, or troubleshooting help.",
            "type": "boolean"
          }
        },
        "required": [
          "question"
        ],
        "type": "object"
      },
      "name": "search_stripe_documentation",
      "outputSchema": {
        "properties": {
          "results": {
            "items": {
              "properties": {
                "content": {
                  "type": "string"
                },
                "subtitle": {
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "type": {
                  "type": "string"
                },
                "url": {
                  "format": "uri",
                  "type": "string"
                }
              },
              "required": [
                "type",
                "content"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "results"
        ],
        "type": "object"
      }
    },
    {
      "annotations": {
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false,
        "readOnlyHint": false,
        "title": "Send MCP Server Feedback"
      },
      "description": "Submit feedback from user or agent about Stripe's MCP server tools.\n\nValid: \"the search tool returned irrelevant results\", \"I wish there was a tool for X\"\nInvalid: Stripe API complaints, AI model issues, IDE/environment problems\n\n- Only call when feedback clearly targets MCP tools.\n- If feedback is about one specific tool, include its name in tool_name.\n- If feedback is from user, quote their exact message and set source to \"user\".\n- If a tool didn't follow your expectations as an agent, set source to \"agent\".\n",
      "inputSchema": {
        "properties": {
          "context": {
            "description": "User persona, their broader goal, current task, and estimated technical proficiency.",
            "minLength": 1,
            "type": "string"
          },
          "quote": {
            "description": "User's exact message containing feedback. Max 1000 chars.",
            "maxLength": 1000,
            "minLength": 1,
            "type": "string"
          },
          "sentiment": {
            "description": "positive, negative, or neutral",
            "enum": [
              "positive",
              "negative",
              "neutral"
            ],
            "type": "string"
          },
          "source": {
            "description": "user or agent",
            "enum": [
              "user",
              "agent"
            ],
            "type": "string"
          },
          "tool_name": {
            "description": "The name of the tool the user is giving feedback about. Include if confident that feedback is about a specific tool.",
            "type": "string"
          }
        },
        "required": [
          "sentiment",
          "quote",
          "context",
          "source"
        ],
        "type": "object"
      },
      "name": "send_stripe_mcp_feedback",
      "outputSchema": {
        "properties": {
          "_id": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "success": {
            "type": "boolean"
          }
        },
        "required": [
          "message",
          "success",
          "_id"
        ],
        "type": "object"
      }
    },
    {
      "annotations": {
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false,
        "readOnlyHint": true,
        "title": "Stripe Analytics"
      },
      "description": "This tool is for analyzing Stripe Sigma and Metrics data (e.g. about revenue, charges, products, invoices, subscriptions, disputes, transactions, tax tables, payments etc) and running SQL-based reporting queries. Use it for historical analytics, aggregations, and business intelligence questions (e.g. MRR, churn, cohorts, revenue trends). Prefer this tool over making multiple Stripe API calls that would need to be joined or aggregated client-side.\n## SQL Query Runs\n\n**execute_query_run**: Runs a SQL query (Trino) against reporting tables. Requires `sql`. Returns a QueryRun object; use retrieve_query_run to poll.\n**retrieve_query_run**: Retrieves a QueryRun's status and results. Requires `query_run_id`.\n**search_query_tables**: Searches available reporting tables by keyword. Requires `search_string`.\n**retrieve_query_table**: Gets full schema for a specific table. Requires `table_name`, which is the `name` parameter in each table.\n**execute_query_template**: Starts a pre-built query template for subscription/billing metrics (Trino, async). Requires `metric`. Optional: `dimensions`, `grains`, `metric_filters`. Returns a `query_run_id`; use retrieve_query_template to poll for results.\n**retrieve_query_template**: Retrieves the status/results of a template run started by execute_query_template. Requires `query_run_id`.\n\n### workflow (custom SQL):\n  1. search_query_tables: find relevant tables\n  2. retrieve_query_table: get column names and types\n  3. execute_query_run: run SQL\n  4. retrieve_query_run: poll status, get download link\n\n### workflow (query templates):\n  1. execute_query_template: start a template-based metric query (returns a query_run_id)\n  2. retrieve_query_template: poll with query_run_id (exponential backoff) until status is 'succeeded', then get download link\n\n## Return types\n All monetary values returned by this tool are expressed in the smallest currency unit. For example:\n- 1000 is 10 USD (most two-decimal currencies like GBP, EUR, AUD, CAD, divide by 100 to get the major unit value)\n- 10 is 10 JPY (zero-decimal currency)\n- 10000 is 10 BHD (three-decimal currency)\n- 1000000 is 1 USDC\nIf you don't know how many decimals are in a currency's minor units, use the search_stripe_documentation tool to look it up in https://docs.stripe.com/currencies#minor-units\n",
      "inputSchema": {
        "properties": {
          "intent": {
            "description": "The intent of the tool call.",
            "enum": [
              "execute_query_run",
              "retrieve_query_run",
              "search_query_tables",
              "retrieve_query_table",
              "execute_query_template",
              "retrieve_query_template"
            ],
            "type": "string"
          },
          "params": {
            "description": "The parameters for the tool call. Required parameters depend on the intent.",
            "properties": {
              "dimensions": {
                "description": "Used with execute_query_template. Dimensions to group by: 'product', 'price'.",
                "items": {
                  "enum": [
                    "product",
                    "price"
                  ],
                  "type": "string"
                },
                "type": "array"
              },
              "grains": {
                "description": "Used with execute_query_template. Time grain: 'day', 'week', or 'month'. Default is 'month'.",
                "items": {
                  "enum": [
                    "day",
                    "week",
                    "month"
                  ],
                  "type": "string"
                },
                "type": "array"
              },
              "metric": {
                "description": "Used with execute_query_template. The canonical metric name.",
                "enum": [
                  "gross_volume",
                  "subscriber_churn_rate",
                  "gross_mrr_churn_rate",
                  "churned_subscribers",
                  "net_mrr_churn_rate",
                  "churned_revenue",
                  "new_subscribers",
                  "active_subscribers",
                  "active_subscriber_growth"
                ],
                "type": "string"
              },
              "metric_filters": {
                "description": "Used with execute_query_template. Filters to apply: 'top5' or 'all'. Default is 'all'.",
                "items": {
                  "enum": [
                    "top5"
                  ],
                  "type": "string"
                },
                "type": "array"
              },
              "query_run_id": {
                "description": "Used with retrieve_query_run or retrieve_query_template. The QueryRun ID to retrieve.",
                "type": "string"
              },
              "result_options": {
                "description": "Used with execute_query_run. Optional settings for the QueryRun results.",
                "properties": {
                  "compress_file": {
                    "description": "Whether to compress the generated results file.",
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "search_string": {
                "description": "Used with search_query_tables. Keyword to search table names and descriptions.",
                "type": "string"
              },
              "sql": {
                "description": "Used with execute_query_run. The SQL query to execute (Trino 414).",
                "type": "string"
              },
              "table_name": {
                "description": "Used with retrieve_query_table. The table name.",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "required": [
          "intent"
        ],
        "type": "object"
      },
      "name": "stripe_analytics"
    },
    {
      "annotations": {
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false,
        "readOnlyHint": true,
        "title": "Get Stripe API operation details"
      },
      "description": "Get detailed parameter information for a specific Stripe API operation.\nProvide the stripe_api_operation_id from stripe_api_search results to see all path, query, and body parameters with their types, descriptions, and whether they are required.\n\nUse before calling the relevant Stripe API execution tool for operations with nested object fields.\n\nThe response may include an \"LLM Context\" section with usage guidance specific to the operation — follow any instructions there.\n",
      "inputSchema": {
        "properties": {
          "stripe_api_operation_id": {
            "description": "The operation ID to get details for (e.g. 'PostCustomers', 'GetPaymentIntents')",
            "type": "string"
          }
        },
        "required": [
          "stripe_api_operation_id"
        ],
        "type": "object"
      },
      "name": "stripe_api_details",
      "outputSchema": {
        "properties": {
          "llm_context": {
            "description": "Supplemental usage guidance for this operation, if available",
            "type": "string"
          },
          "openapi_spec_version": {
            "description": "The OpenAPI Specification Version that the MCP Server used to look for the operation",
            "type": "string"
          }
        },
        "required": [
          "openapi_spec_version"
        ],
        "type": "object"
      }
    },
    {
      "annotations": {
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true,
        "readOnlyHint": true,
        "title": "Read Stripe API data"
      },
      "description": "Read data from any Stripe API GET operation:\n1. Use stripe_api_search to find the operation ID.\n2. Use stripe_api_details to understand its parameters (required for operations with nested object fields like address, metadata, or restrictions).\n3. Call this tool with the stripe_api_operation_id and a parameters object containing path and query parameters. For mutations (POST/PATCH/PUT/DELETE), use stripe_api_write instead.\nMonetary values in responses are in the smallest currency unit (e.g. 1000 = $10.00 USD for most currencies).\n",
      "inputSchema": {
        "properties": {
          "parameters": {
            "description": "Parameters for the API call. Include path parameters (e.g. 'customer' for /v1/customers/{customer}), query parameters, and body parameters. Array fields (e.g. line_items) must be passed as a JSON array value, not as a plain string.",
            "type": "object"
          },
          "stripe_api_operation_id": {
            "description": "The operation ID to execute",
            "examples": [
              "PostCustomers",
              "GetPaymentIntents"
            ],
            "type": "string"
          }
        },
        "required": [
          "stripe_api_operation_id",
          "parameters"
        ],
        "type": "object"
      },
      "name": "stripe_api_read",
      "outputSchema": {
        "additionalProperties": true,
        "properties": {},
        "type": "object"
      }
    },
    {
      "annotations": {
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false,
        "readOnlyHint": true,
        "title": "Search Stripe API operations"
      },
      "description": "Search for Stripe API operations by providing an intent and a resource to operate on.\n\nFor the resource, use a specific, descriptive phrase (e.g. \"issuing card transactions\", \"payout methods\", \"outbound payments\") rather than a single generic noun — Stripe has many similar resources, and the extra qualifiers help disambiguate between them rather than causing a miss. Only fall back to the bare core noun (e.g. \"transactions\") if a specific multi-word search returns no results.\n\nReturns matching operations with their HTTP method, path, summary, and top-level parameter names with types. Does not include parameter descriptions, enum values, or nested object fields — use stripe_api_details to get those before calling the relevant Stripe API execution tool.\n",
      "inputSchema": {
        "properties": {
          "intent": {
            "description": "The intent of the operation",
            "examples": [
              "create",
              "list",
              "refund"
            ],
            "type": "string"
          },
          "limit": {
            "default": 5,
            "description": "Maximum number of results to return",
            "maximum": 20,
            "minimum": 1,
            "type": "integer"
          },
          "resource": {
            "description": "Target resource the operation is looking to manipulate",
            "examples": [
              "customer",
              "payout methods",
              "issuing card transactions"
            ],
            "type": "string"
          }
        },
        "required": [
          "intent",
          "resource"
        ],
        "type": "object"
      },
      "name": "stripe_api_search",
      "outputSchema": {
        "properties": {
          "data": {
            "description": "List of operations matching the criteria",
            "items": {
              "properties": {
                "id": {
                  "type": "string"
                },
                "llm_context": {
                  "description": "Supplemental LLM guidance for this operation, if provided",
                  "type": "string"
                },
                "method": {
                  "type": "string"
                },
                "path": {
                  "type": "string"
                },
                "summary": {
                  "type": "string"
                }
              },
              "required": [
                "id",
                "method",
                "path"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "openapi_spec_version": {
            "description": "The OpenAPI Specification Version that the MCP Server used to look for the operation",
            "type": "string"
          }
        },
        "required": [
          "openapi_spec_version",
          "data"
        ],
        "type": "object"
      }
    },
    {
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Write Stripe API data"
      },
      "description": "Write data via any Stripe API POST/PATCH/PUT/DELETE operation:\n1. Use stripe_api_search to find the operation ID.\n2. Use stripe_api_details to understand its parameters (required for operations with nested object fields like address, metadata, or restrictions).\n3. Call this tool with the stripe_api_operation_id and a parameters object containing path, query, and body parameters. For read-only lookups (GET), use stripe_api_read instead.\nAll monetary amounts must be in the smallest currency unit (e.g. 1000 = $10.00 USD for most currencies).\n",
      "inputSchema": {
        "properties": {
          "human_confirmation": {
            "description": "This tool might require human confirmation. To run it, first invoke it with the desired parameters, ignoring the `approval_token` parameter.\nIf it requires human confirmation, the response will include an approval request ID and a URL to an approval page for the human to approve the tool call.\nYou, as the LLM agent, should:\n\n1. Present this URL to the human as a clickable markdown link. Tell them that they have to approve this tool call at that URL, and that they should tell you when they have approved the operation.\n2. The human will approve that call.\n3. After the human tells you they have approved the operation, you must call the tool again with the `approval_token` parameter and the exact same parameters. The operation will then go through.\n",
            "properties": {
              "approval_token": {
                "description": "The ID of the approval token for the request. This is required on only the post-human-confirmation invocation. An example ID is `approval_123`.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "parameters": {
            "description": "Parameters for the API call. Include path parameters (e.g. 'customer' for /v1/customers/{customer}), query parameters, and body parameters. Array fields (e.g. line_items) must be passed as a JSON array value, not as a plain string.",
            "type": "object"
          },
          "stripe_api_operation_id": {
            "description": "The operation ID to execute",
            "examples": [
              "PostCustomers",
              "GetPaymentIntents"
            ],
            "type": "string"
          }
        },
        "required": [
          "stripe_api_operation_id",
          "parameters"
        ],
        "type": "object"
      },
      "name": "stripe_api_write",
      "outputSchema": {
        "additionalProperties": true,
        "properties": {},
        "type": "object"
      }
    },
    {
      "annotations": {
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Stripe Implementation Planner"
      },
      "description": "Stripe payment integration planner. Use this tool to help users accept payments, sell products online, set up billing, or build any Stripe integration. Call this BEFORE writing code when the user wants to charge customers, add a checkout flow, handle subscriptions, create invoices, or monetize their app.\n\nWHEN TO USE:\n  Call this tool when the user wants to:\n  - Accept payments, take payments, or charge customers (credit cards, bank transfers, wallets)\n  - Sell online, build e-commerce, add a shopping cart, or create a checkout page\n  - Set up subscriptions, recurring billing, metered billing, or usage-based pricing\n  - Send invoices or collect one-time payments\n  - Add Stripe to their app, integrate Stripe, or build a payment flow\n  - Understand which Stripe products to use (Checkout, Elements, Payment Intents, Connect, Billing)\n  - Plan an integration architecture before writing code\n  - Monetize an app, add billing, or start charging users\n\nFIRST CALL GUIDANCE:\n  Ask the user about their business and payment requirements before choosing a use case:\n  - What do they sell? (physical goods, digital products, SaaS, services, marketplace)\n  - Payment model? (one-time, subscriptions, invoices, usage-based)\n  - Platform? (web, mobile app, in-person, payment links)\n  - Complexity? (simple payment link vs. custom integration in existing tech stack)\n  Then pass their full description as the message parameter.\n\nReturns JSON with use cases, decision trees, documentation links, and a guide_id for follow-up calls.\n\nRULES:\n  - Do NOT pass a guide_id unless you received it from this tool in this conversation.\n  - Do NOT retry with different guide_ids if one fails — omit guide_id to start fresh.\n",
      "inputSchema": {
        "properties": {
          "accept": {
            "description": "Set to true when returning the completed decision tree with your chosen options to receive the finalized integration guide.",
            "type": "boolean"
          },
          "guide_id": {
            "description": "ONLY pass a guide_id that was returned by a previous call to this tool in this conversation. Never fabricate, guess, or reuse guide_ids from other sessions. If you do not have a guide_id from a prior response, omit this field entirely. Invalid guide_ids will be rejected.",
            "type": "string"
          },
          "message": {
            "description": "For new guides: describe the use case or business requirements. For existing guides: provide the latest user response or the full accepted transcript.",
            "type": "string"
          }
        },
        "required": [
          "message"
        ],
        "type": "object"
      },
      "name": "stripe_implementation_planner"
    }
  ]
}
