The Stripe MCP connector routes your AI agent's tool calls to Stripe's own MCP server through Scalekit. Each user signs in to Stripe once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 11 tools.
- Tools
- 11
- What they doRead · write · destructive
- 6 · 4 · 16 read4 write1 destructive
- Users sign in with
- OAuth
- OAuth app
- Scalekit's or your own
What you can do
- Read Stripe data: look up customers, subscriptions, payments, and other objects in a Stripe account available to the session
- Create and refund: create or delete Stripe objects such as customers and refunds, with confirmation for sensitive actions
- Analyze revenue: run SQL reporting queries on revenue, products, payments, and subscription billing data
- Search documentation: find answers in Stripe docs and the API reference, including parameters and error codes
- Plan integrations: get use cases, decision guides, and doc links before building payments or billing
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the Stripe MCP connection
In AgentKit > Connections, create a Stripe MCP connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Scalekit credentials are available for Stripe, so you don't need to register an OAuth app.
Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'stripemcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Stripe MCP:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'stripemcp_list_available_accounts_or_orgs',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "stripemcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Stripe MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="stripemcp_list_available_accounts_or_orgs",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user signs in once. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolstripemcp_list_available_accounts_or_orgsLists all Stripe accounts available in this session with their stripe_context and livemode values.Read-onlyList available accounts or orgs
Lists all Stripe accounts available in this session with their stripe_context and livemode values. Call this first to get stripe_context and livemode before any account-specific operation. Ask the user which account to use unless already specified, and warn before switching between test mode and live mode.
Inputs
This tool takes no inputs.
stripemcp_manage_stripe_accountsReturns a URL to the Stripe Dashboard where the user can add accounts, remove accounts, or change permissions for this session.Read-onlyManage Stripe accounts
Returns a URL to the Stripe Dashboard where the user can add accounts, remove accounts, or change permissions for this session. Use when the user wants to add, remove, or modify permissions for an account — no need to call list_available_accounts_or_orgs first. After the user confirms they completed their changes, call list_available_accounts_or_orgs to sync the updated account list.
Inputs
This tool takes no inputs.
stripemcp_search_stripe_documentationSearch Stripe official documentation and API reference for answers.Read-onlySearch Stripe Documentation
Search Stripe official documentation and API reference for answers. Use this to look up Stripe concepts, API parameters, error codes, or integration guidance.
Inputs
questionstringrequired- The user question about integrating with Stripe will be used to search the documentation.
languagestring- The programming language to search for in the documentation.one of
dotnetgojavanodephprubypythoncurl search_only_api_refboolean- 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.
stripemcp_stripe_api_detailsGet the full parameter schema for a specific Stripe API operation.Read-onlyStripe Api Details
Get the full parameter schema for a specific Stripe API operation. Use stripe_api_search to find the operation ID first (e.g. GetCustomers, PostRefunds), then call this to see all available parameters.
Inputs
livemodebooleanrequired- Whether to operate in livemode (true) or test mode/ sandbox (false). Must match the livemode of the stripe_context account.
stripe_api_operation_idstringrequired- The Stripe API operation ID to get details for. Get valid IDs from stripe_api_search (e.g. GetCustomers, PostRefunds, PostSubscriptions).
stripe_contextstringrequired- The account to target for this request. Use the `stripe_context` value returned by list_available_accounts_or_orgs.
stripemcp_stripe_api_readExecute a read-only (GET) Stripe API operation by its operation ID and parameters.Read-onlyStripe API Read
Execute a read-only (GET) Stripe API operation by its operation ID and parameters. Use stripe_api_search to discover available operations and stripe_api_details to see their parameters before executing.
Inputs
livemodebooleanrequired- Whether to operate in livemode (true) or test mode/ sandbox (false). Must match the livemode of the stripe_context account.
parametersobjectrequired- All path, query, and request-body values for the API call. Include path parameters here, named as in the path's curly braces (e.g. 'id' for /v1/customers/{id}). Array fields (e.g. line_items) must be passed as a JSON array value, not as a plain string.
stripe_api_operation_idstringrequired- The operation ID to execute
stripe_contextstringrequired- The account to target for this request. Use the `stripe_context` value returned by list_available_accounts_or_orgs.
stripemcp_stripe_api_searchSearch available Stripe API operations by intent and resource.Read-onlyStripe Api Search
Search available Stripe API operations by intent and resource. Returns operation IDs (e.g. PostCustomers, GetSubscriptions) with their HTTP method and parameters — use these with stripe_api_details or stripe_api_read/stripe_api_write.
Inputs
intentstringrequired- The intent of the operation. Examples: create, list, refund.
livemodebooleanrequired- Whether to operate in livemode (true) or test mode/ sandbox (false). Must match the livemode of the stripe_context account.
resourcestringrequired- Target resource the operation is looking to manipulate. Examples: customer, payout methods, issuing card transactions.
stripe_contextstringrequired- The account to target for this request. Use the `stripe_context` value returned by list_available_accounts_or_orgs.
limitinteger- Maximum number of results to return.default
5
stripemcp_atlas_company_formationStripe Atlas: start or resume a Delaware C corp/LLC formation.WriteAtlas Company Formation
Stripe Atlas: start or resume a Delaware C corp/LLC formation. Set action to: - "list": check for existing applications before "create", using an authorized account. Returns applications the current user can access as primary representative. Show any matches to the user. Applications with submitted_at are already submitted; offer to resume only drafts or create a separate company. - "create": create a new Atlas application, which also creates a new Stripe merchant required for Atlas. You can call "create" from a sandbox or testmode account; the new Stripe account is always a live account. Follow the returned authorization instructions. - "retrieve": load the formation and next step on the authorized Atlas account. - "advance": save step and data. Follow next_step_instructions and next_step_schema; steps can be revisited. For a chosen merchant_id, get stripe_context from list_available_accounts_or_orgs. That tool checks session access, not application existence. If the account is missing, authorize it with manage_stripe_accounts and refresh the account list before retrieving its formation. Drafts only: submission, signing, payment, and personal tax IDs happen in the Dashboard. Creation is not idempotent. After a timeout or unclear failure, don't retry "create"; use "list" and "retrieve" before resending only missing changes using returned IDs.
Inputs
actionstringrequired- List accessible Atlas applications, create a new one, retrieve the current formation, or save a formation step.one of
listcreateretrieveadvance livemodebooleanrequired- Whether to operate in livemode (true) or test mode/ sandbox (false). Must match the livemode of the stripe_context account.
stripe_contextstringrequired- The account to target for this request. Use the `stripe_context` value returned by list_available_accounts_or_orgs.
dataobject- Answers matching the returned next_step_schema. Required for advance except validate, where it is ignored. Omit for list, create, and retrieve.
stepstring- Required for advance; use the step returned by retrieve. Omit for list, create, and retrieve.
stripemcp_send_stripe_feedbackShare feedback about Stripe's products.WriteSend Stripe Feedback
Share feedback about Stripe's products. Submit when the user gives product feedback or you observe something concrete that worked or failed. Do not report model behavior, the user's local environment, an unclear prompt, or a recovered tool error. Use actor "human" for the user's own words; "agent" for your observations. Not a support channel — no ticket or reply.
Inputs
contextstringrequired- What the user was trying to accomplish. Do not include sensitive business information.
messagestringrequired- What broke or worked, concrete and specific. At least 5 words.
sentimentstringrequired- positive, negative, or neutralone of
positivenegativeneutral actorstring- Who decided to submit: human or agent. Defaults to agent.one of
humanagent feature_areastring- Product area this feedback is about.one of
paymentsconnectsubscriptionsbillingpayoutsreportinginvoicinginvoicescheckouttaxradarissuingterminaltreasurycapitaldocswebhooksclidashboardcryptostablecoinsmanaged-paymentsmcpidentityskillsappsother
stripemcp_stripe_analyticsAnalyze Stripe data (e.g.WriteStripe Analytics
Analyze Stripe data (e.g. revenue, products, or payments) and run SQL-based reporting queries. Supports ad-hoc SQL (execute_query_run/retrieve_query_run against searchable tables via search_query_tables/retrieve_query_table) and pre-built subscription/billing metric templates (execute_query_template/retrieve_query_template). Monetary values are returned in the smallest currency unit.
Inputs
intentstringrequired- The intent of the tool call.one of
execute_query_runretrieve_query_runsearch_query_tablesretrieve_query_tableexecute_query_templateretrieve_query_template livemodebooleanrequired- Whether to operate in livemode (true) or test mode/ sandbox (false). Must match the livemode of the stripe_context account.
stripe_contextstringrequired- The account to target for this request. Use the `stripe_context` value returned by list_available_accounts_or_orgs.
paramsobject- The parameters for the tool call. Required parameters depend on the intent.
stripemcp_stripe_implementation_plannerStripe payment integration planner.WriteStripe Implementation Planner
Stripe payment integration planner. Use this BEFORE writing code when the user wants to accept payments, sell products online, set up billing, or build any Stripe integration — it returns use cases, decision trees, documentation links, and a guide_id for follow-up calls. Successor to stripe_integration_recommender.
Inputs
livemodebooleanrequired- Whether to operate in livemode (true) or test mode/ sandbox (false). Must match the livemode of the stripe_context account.
messagestringrequired- For new guides: describe the use case or business requirements.
stripe_contextstringrequired- The account to target for this request. Use the `stripe_context` value returned by list_available_accounts_or_orgs.
acceptboolean- Set to true when returning the completed decision trees with your chosen options. Include selected_leaf_nodes with the IDs of all terminal leaves reached.
guide_idstring- 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.
selected_leaf_nodesarray- The IDs of all terminal leaves reached while traversing the guide's decision tree.
stripemcp_stripe_api_writeExecute a write (POST/DELETE) Stripe API operation by its operation ID and parameters.DestructiveStripe API Write
Execute a write (POST/DELETE) Stripe API operation by its operation ID and parameters. Use stripe_api_search to discover available operations and stripe_api_details to see their parameters before executing. May require human confirmation for sensitive operations.
Inputs
livemodebooleanrequired- Whether to operate in livemode (true) or test mode/ sandbox (false). Must match the livemode of the stripe_context account.
parametersobjectrequired- All path, query, and request-body values for the API call. Include path parameters here, named as in the path's curly braces (e.g. 'id' for /v1/customers/{id}). Array fields (e.g. line_items) must be passed as a JSON array value, not as a plain string.
stripe_api_operation_idstringrequired- The operation ID to execute
stripe_contextstringrequired- The account to target for this request. Use the `stripe_context` value returned by list_available_accounts_or_orgs.
human_confirmationobject- This tool might require human confirmation. To run it, first invoke it with the desired parameters, ignoring the `approval_token` parameter. If 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. You, as the LLM agent, should: 1. 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. 2. The human will approve that call. 3. 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.
No tools match.