Stripe MCP

Stripe MCP: Stripe's own server, and subscriptions next to ad spend

Stripe runs a remote MCP server at mcp.stripe.com that gives an AI client the whole Stripe API, reads and writes alike, behind OAuth or an agent API key, with a confirmation step on refunds and outbound payments. This page says exactly what it does, which clients it works in, and what the Adrails MCP server adds: payments, refunds, customers and subscriptions read from Stripe with a read-only key and set next to Meta and Google Ads spend for the same dates, with agents, automations and a review step on every ad change.

Reviewed Oct 4, 2026

Side by side

Stripe's MCP server against the Adrails MCP server

Two different jobs: Stripe's server operates the Stripe account from the chat; Adrails reads the account and sets it next to the ads.

Stripe's MCP server against the Adrails MCP server
CriterionStripe MCP server, by StripeAdrails MCP server
Addressmcp.stripe.com, remote; also listed in Claude's directory and as a plugin in ChatGPTadrails.ai/api/mcp, added as a custom connector; Stripe connected once in Adrails under Integrations
Sign-inStripe OAuth, granting one or more live accounts or sandboxes with separate permissions per environment, or an agent API key as a bearer token; from 31 October 2026 secret keys and restricted keys without the Agent tag are refusedYour Adrails sign-in, OAuth, one workspace per connection; Stripe authorized to Adrails with a read-only restricted key
What it readsAny GET method of the Stripe API through stripe_api_read: customers, charges, refunds, subscriptions, invoices, payouts, disputes, balance; a balance summary; metrics and reports through stripe_analytics in preview; the Stripe documentationCustomers, charges, refunds, subscriptions and prices; active subscriptions, trials, MRR, ARR, collected payments and refunds by period; spend and results on every Meta and Google Ads account
What it writesAny POST, PATCH, PUT or DELETE method through stripe_api_write: customers, refunds, subscriptions, invoices, coupons, payment links, webhooks; refunds and outbound payments wait for a confirmation in Stripe that expires after 24 hoursNothing in Stripe. Advertising changes come back as proposals you apply in Adrails, created paused, budget moves capped at 30%
Ad spend next to itNo. The server reads Stripe onlyYes. Payments and subscriptions against ad spend for the same period, each source and currency kept apart
ClientsCursor, Claude Code, Claude on the web and desktop, Codex with the ChatGPT desktop app, the ChatGPT plugin, VS Code, and any MCP client with the URLClaude, ChatGPT in Developer mode, Claude Code, Codex and any remote MCP client with OAuth
PriceNot priced on its documentation page; it runs on your Stripe accountAdrails plans from $149 a month with unlimited ad accounts; a tool call uses no agent credit
Who runs itStripe, listed as Anthropic verified in Claude's directory since November 2025Adrails

Stripe's column from docs.stripe.com/mcp and the Stripe connector page in Claude's directory, read on 4 October 2026. Adrails' column from the Stripe integration page and the MCP tools reference in the Adrails docs.

01

Stripe MCP: the server at mcp.stripe.com and what it does

Stripe MCP is Stripe's own remote Model Context Protocol server, at https://mcp.stripe.com, documented at docs.stripe.com/mcp and listed in Claude's directory as made by Stripe and Anthropic verified since November 2025. Its documentation page, read on 4 October 2026, lists ten tools. Four of them are the API tools: stripe_api_search finds an API method by keyword, stripe_api_details returns its parameters, stripe_api_read calls any GET method, and stripe_api_write calls any POST, PATCH, PUT or DELETE method. Stripe says this design makes much of the API available without filling the context window with one tool per endpoint.

The supported methods run from customers, charges, refunds and PaymentIntents through Checkout Sessions, invoices, subscriptions and subscription schedules, coupons, promotion codes, products, prices, payment links, disputes, webhooks, balance and payouts, to tax, Issuing, Connect accounts and the money management APIs. The other six tools are get_stripe_account_info, stripe_analytics for metrics, billing analysis and financial reports in preview with SQL queries for accounts that have Sigma, get_balance_summary across the Stripe balance and Treasury in public preview, search_stripe_documentation, stripe_implementation_planner, and send_stripe_feedback. The directory page lists eleven, adding list_available_accounts_or_orgs and manage_stripe_accounts.

The audience is partly developers, which is why the recommended setup is the Stripe CLI's stripe agent setup command, which configures the server and installs Stripe's skills. But the OAuth connector in Claude and the plugin in ChatGPT make the same tools available to anyone who runs a business on Stripe, and that is where the question of what it should be allowed to write begins.

02

Sign-in, confirmations and the keys Stripe will stop accepting

Stripe's server accepts two sign-ins. OAuth is for an interactive client acting as you: the client opens Stripe's consent page, where you grant one or more live accounts or sandboxes and set different permissions for each environment, and you revoke a client later under OAuth sessions in your user settings. An agent API key, marked with an Agent badge in the Dashboard and created with only the permissions the client needs, is for an autonomous client that cannot use OAuth; it goes in the Authorization header as a bearer token. From 31 October 2026, Stripe MCP refuses full-access secret keys and restricted keys without the Agent tag and answers them with a 401 and an OAuth discovery challenge.

Writes are guarded in Stripe itself. For certain stripe_api_write actions, refunds and outbound payments among them, Stripe requires a human confirmation: the agent returns a URL, you open it, review the request and confirm it, then tell the agent to retry; a request not confirmed within 24 hours expires. Stripe also asks you to turn on your client's own confirmation of tool calls and to be careful when the server runs next to other servers, because of prompt injection. An administrator can switch MCP access on or off for the whole team in the Dashboard, separately for live mode and sandboxes, and can see and revoke other members' sessions.

The clients Stripe documents are Cursor, Claude Code, Claude on the web and in the desktop app through the directory connector, Codex together with the ChatGPT desktop app and the Codex IDE extension, which share one configuration, the Stripe plugin in ChatGPT, VS Code, and any other MCP client given the URL. On a Claude Team or Enterprise plan an owner adds the connector before members connect their own Stripe accounts. Connect platforms acting for connected accounts use a restricted key and the Stripe-Account header instead of OAuth.

  • OAuth for a person in a chat; an agent API key for an unattended client
  • Refunds and outbound payments wait for your confirmation in Stripe, 24 hours at most
  • 31 October 2026: only Agent-tagged keys or OAuth
  • Team-wide on or off switch in the Dashboard, by environment

03

What Adrails reads from Stripe, and how fresh it is

Adrails connects to Stripe with a restricted API key that can only read: Accounts, Charges and Refunds, Customers, Subscriptions and Prices. Under Integrations, Create a restricted key in Stripe opens Stripe with the key named Adrails and those read permissions already selected; you create it, copy the rk_live key and paste it back. A test key works too and reads your test data. Adrails never charges, refunds or changes anything in Stripe, and Adrails' own billing, which also runs on Stripe, is a separate matter from this connection.

Payments are read every 15 minutes, subscriptions every 30 minutes, customers every hour. Successful charges and refunds are kept as separate transactions, and subscriptions carry their status and a normalized monthly amount, which is what the MRR and ARR figures are read from. Each source and currency stays separate: a Stripe figure is never merged into a Meta figure.

In the app this feeds two places. The agent answers questions about active subscriptions, trials, MRR and ARR, collected payments and refunds, and customers by billing cadence. A campaign's Tracking tab shows the customers each ad brought and what they pay: matched customers, monthly revenue, average customer value and active subscriptions, listed by ad.

04

The tools an AI client gets from Adrails for a subscription business

Once Adrails is added as a custom connector, your client sees 63 tools; saas_performance is the one that reads Stripe. For a period it returns active subscriptions, trials, normalized MRR, ARR, collected payments and refunds, with customer and subscription counts by billing cadence when customer-level data is available, and it keeps RevenueCat and PostHog figures apart from Stripe's if those are connected too. store_customers lists the customers imported from the Stripe connection, newest first, with email domain, country, creation date and imported lifetime spend; full email addresses are not stored.

The advertising reads sit next to it. reporting_overview gives spend, attributed revenue and conversion events across every connected Meta and Google Ads account; performance_period gives one account's spend, results, CPA and ROAS over an exact range, with a second range for the change. metric_compare puts an observed value against a target and returns the difference and the attainment, which is how MRR against plan or CPA against target is read in one call. planning_calculate works out budget pacing or first-order acquisition unit economics from quoted inputs, and business_review checks a payback or reconciliation explanation figure by figure.

The changes are proposals, not writes. campaigns_pause, campaigns_change_budget, campaigns_duplicate_to_draft, campaigns_split_test and campaigns_launch each prepare one exact change and return a link; the person who connected, as an owner or admin on an active plan, reviews it in Adrails and applies or declines it within 30 minutes. Budgets move by at most 30% per change, everything Adrails creates starts paused, and an applied change can be undone while the platform still matches what Adrails wrote. A tool call uses no agent credit.

  • saas_performance: subscriptions, trials, MRR, ARR, payments and refunds by period
  • store_customers: the Stripe customers, without full email addresses
  • reporting_overview and performance_period: the ad side for the same dates
  • metric_compare and planning_calculate: targets, pacing and unit economics
  • campaigns_change_budget, campaigns_pause: proposals applied in Adrails

05

When to connect Stripe's server, Adrails, or both

Connect Stripe's server when the work is the Stripe account: a refund to issue, a subscription to change, an invoice to finalize, a coupon or a payment link to create, a dispute to look into, or a question that needs any corner of the API. It is the only one of the two that writes to Stripe, and its confirmation step on refunds and outbound payments is Stripe's own. It knows nothing about your ads.

Connect Adrails when the question joins the money to the ads: what the account collected against what the ads spent, how many trials a campaign started and how many of them pay, whether MRR is on target, which campaign brings customers who cancel. Adrails reads Stripe with a read-only key, keeps every figure with its source, and turns the decision into a proposal with a review step rather than touching Meta or Google Ads from the chat.

A founder who runs the company from a chat will often have both: Stripe's server for operations, Adrails for acquisition. Keep the two keys apart. Stripe's server is signed in as you or with an Agent key with the permissions the job needs; Adrails holds its own restricted read-only key, named Adrails in your Stripe Dashboard, which you can revoke there at any time.

06

Set up both in a few minutes

For Stripe's server, the simplest path in Claude is the directory: open the Stripe connector, choose Connect to Claude, sign in to Stripe and grant the permissions in the OAuth window, then enable Stripe under Connectors in a conversation. In Claude Code, run claude mcp add --transport http stripe https://mcp.stripe.com/ and sign in with OAuth from /mcp. In ChatGPT, install the Stripe plugin; in Codex, codex mcp add stripe --url https://mcp.stripe.com. Developers can run stripe agent setup from the Stripe CLI instead.

For Adrails, first connect Stripe inside Adrails: open Integrations, choose Stripe, create the restricted key Stripe pre-fills, and paste it. Then add Adrails to your client. In Claude, open Customize, then Connectors, choose Add custom connector, name it Adrails and paste https://adrails.ai/api/mcp; connect it, sign in to Adrails, choose the workspace and the permissions, and allow access. In ChatGPT, turn on Developer mode, add a custom MCP server with the same URL and OAuth. Claude Code takes claude mcp add --transport http adrails https://adrails.ai/api/mcp, then /mcp to sign in.

The consent screen offers Read workspace data and Stay connected first; select Prepare advertising changes only if you want pauses, budget moves and launches prepared for you to apply. A good first question: how much did we collect last week, and what did we spend on ads.

Which server answers

Five questions a subscription business asks, and which server answers each

The split is simple: anything that changes Stripe is Stripe's server; anything that joins Stripe to the ads is Adrails.

Five questions a subscription business asks, and which server answers each
QuestionStripe MCP serverAdrails
How much did we collect last week, and what did we spend on ads?Half of it: stripe_api_read lists the charges and balance transactions, nothing gives the adsBoth halves: saas_performance for collected payments and refunds, reporting_overview for spend and results on the same dates
Refund this customer's last chargestripe_api_write creates the refund once you confirm it on the link Stripe returnsNot available. Adrails does not write to Stripe
How many trials did the spring campaign start, and how many pay today?Subscriptions and trials, with no link to the campaignsaas_performance for trials and active subscriptions, and the campaign's Tracking tab for the customers each ad brought and what they pay
Is MRR above the target we set?stripe_analytics, in preview, for the metricsaas_performance for normalized MRR, then metric_compare for the gap to the target and the attainment
Lower the budget of the campaign whose customers cancelNo. The server does not reach the ad accountscampaigns_change_budget prepares a decrease of at most 30% with its reason; an owner or admin applies it in Adrails

Tool names from docs.stripe.com/mcp and from the Adrails MCP tools reference, both read on 4 October 2026.

FAQ

Common questions

Is there a Stripe MCP server?

Yes. Stripe runs a remote MCP server at mcp.stripe.com, documented at docs.stripe.com/mcp and listed in Claude's directory since November 2025. It signs in with OAuth or an agent API key and gives an AI client the Stripe API through stripe_api_read and stripe_api_write, plus account, analytics, balance and documentation tools.

Can Stripe's MCP server issue refunds?

Yes, through stripe_api_write, and Stripe requires a human confirmation first: the agent returns a URL, you review the request and confirm it, then the agent retries. A refund not confirmed within 24 hours expires. Adrails, by contrast, holds a read-only key and cannot refund anything.

Does the Adrails MCP server write to Stripe?

No. Adrails reads Stripe with a restricted key limited to Accounts, Charges and Refunds, Customers, Subscriptions and Prices, and never charges, refunds or changes a subscription. Its write tools concern the ad accounts, and those return a proposal you apply in Adrails.

Can I use a restricted API key with Stripe MCP?

Only until 31 October 2026, unless it carries the Agent tag. From that date Stripe MCP refuses full-access secret keys and restricted keys without the tag, answering with a 401 and an OAuth discovery challenge. Use OAuth in a chat client, or create an agent API key with just the permissions the client needs.

Do I need Stripe's MCP server if Adrails is connected?

Only to change something in Stripe, or to read a part of the API Adrails does not import. For payments, refunds, subscriptions, trials, MRR and ARR next to ad spend, Adrails already reads them through saas_performance and store_customers, with payments refreshed every 15 minutes.