Stripe and Apollo both run hosted MCP servers, at https://mcp.stripe.com and https://mcp.apollo.io/mcp, that let an AI agent read and write your Stripe account or your Apollo workspace through the Model Context Protocol (MCP). Both can change real records, from refunds and invoices to CRM contacts and sequence enrollments, so test what your agent does with them before you connect either one to live data.
What the Stripe MCP Server Exposes
Stripe's server gives an agent a small set of tools that open up a large part of the API. According to Stripe's MCP documentation:
| Tool | What it does | Reads or writes |
|---|---|---|
| stripe_api_search, stripe_api_details | Find an API method and its parameters | Read |
| stripe_api_read | Call any supported Stripe GET method: customers, charges, invoices, refunds, subscriptions, payouts | Read |
| stripe_api_write | Call any supported POST, PATCH, PUT or DELETE method: create customers, invoices, refunds, coupons, payment links, subscriptions | Write |
| get_stripe_account_info | Retrieve the connected account | Read |
| stripe_analytics (preview) | Query metrics and run financial reports | Read |
| Treasury tools (public preview) | Convert currency, send money, transfer between balances | Write, several with human confirmation |
| search_stripe_documentation | Search Stripe's docs and support articles | Read |
A few details matter for anyone putting an agent on billing:
- Some writes pause for a person. When an agent connects with your Stripe login (OAuth), creating a refund and several Treasury actions carry a Human confirmation requirement: you approve the request in the Dashboard within 24 hours, then tell the agent to retry. Other writes, such as voiding an invoice or creating a coupon, go through
stripe_api_writewithout that step unless your account's own approval rules require review. - Authentication is changing. Stripe supports OAuth for interactive clients and agent API keys for autonomous ones. Stripe says that by November 30, 2026, connections must move to OAuth or to newly created agent API keys, because the server will stop accepting full-access secret keys and restricted keys without the Agent tag.
- Sandboxes are separate. With OAuth you can grant access to live mode accounts or sandboxes and set different permissions for each, and admins can turn MCP access on or off separately for live mode and sandboxes.
- Stripe recommends tool approval. Its docs suggest turning on your MCP client's tool-approval setting and being careful when combining Stripe's server with others, to limit prompt injection, where instructions hidden in content an agent reads steer what it does.
What the Apollo MCP Server Exposes
According to Apollo's MCP page, the server connects Claude, ChatGPT and Perplexity to Apollo's database of more than 240 million contacts and 30 million companies, signs in with OAuth, and is available on any Apollo plan with no separate MCP subscription. It covers:
| Capability | Examples | Reads or writes |
|---|---|---|
| Search | Find people and companies from a description of your target audience | Read |
| Enrichment | Retrieve emails and phone numbers for prospects | Read |
| Records | Create or update contacts and accounts, add people to lists | Write |
| Sequences | Build sequences, enroll prospects, write emails, manage sending domains | Write |
| Analytics | Opens, clicks and replies | Read |
| Tasks | Search, create, complete and reprioritize tasks | Write |
Apollo says actions respect your account's permissions and plan limits. Its page does not mention a confirmation step before writes, so turn on your client's tool approval if you want to review creates, enrollments and sequence edits before they run.
How to Connect the Stripe and Apollo MCP Servers
Stripe's quickstart installs the Stripe CLI and runs stripe agent setup, which detects the agent clients you use and configures the MCP server and Stripe's skills for each, according to Stripe's MCP documentation:
npm install -g @stripe/cli
stripe agent setupTo add the server by hand, Stripe documents one command or config block per client:
# Claude Code (then run /mcp inside Claude Code to sign in with OAuth)
claude mcp add --transport http stripe https://mcp.stripe.com/
# Codex
codex mcp add stripe --url https://mcp.stripe.comFor Cursor, Stripe's config goes in ~/.cursor/mcp.json:
{
"mcpServers": {
"stripe": {
"url": "https://mcp.stripe.com"
}
}
}In Claude Code, an autonomous agent that cannot use OAuth can authenticate with an agent API key. Add the server to the project's .mcp.json and read the key from an environment variable (replace AGENT_API_KEY with your variable's name):
{
"mcpServers": {
"stripe": {
"type": "http",
"url": "https://mcp.stripe.com",
"headers": {
"Authorization": "Bearer ${AGENT_API_KEY}"
}
}
}
}When you sign in with OAuth, Stripe lets you grant access to a sandbox instead of live mode, which is where a new agent should start.
Apollo's server signs in with OAuth and, according to Apollo's MCP page, works with Claude, ChatGPT and Perplexity. In a client that takes a remote server URL, point it at https://mcp.apollo.io/mcp. Apollo's page does not list a Claude Code command. Claude Code's standard command for a remote HTTP server works; run /mcp afterward to sign in with OAuth:
claude mcp add --transport http apollo https://mcp.apollo.io/mcpWrites to Gate First
| Server | Write | What a wrong call leaves behind |
|---|---|---|
| Stripe | Create a refund | Money returned to the wrong charge or in the wrong amount (Stripe asks for confirmation) |
| Stripe | Void an invoice, mark it uncollectible | A customer's balance and your revenue reporting change |
| Stripe | Create or update a subscription, coupon or price | Customers billed on the wrong terms |
| Apollo | Create a contact | A duplicate of someone already in the CRM |
| Apollo | Update a contact's stage or owner | A prospect pulled out of the right outreach stage |
| Apollo | Enroll in a sequence | Someone emailed twice, or emailed after they asked you to stop |
What Went Wrong in Our Runs
We ran agents on LayerLens replicas of a Stripe billing account and an Apollo CRM, with fictional data and a known answer or a state check for every task. These replicas are generated copies of each app's data behind their own tool interfaces, separate from the vendors' MCP servers, and the failure patterns resemble what the servers above make possible. The full numbers are in our review of agent runs on Stripe and Apollo.
- "Paid" has 2 meanings. Asked how much a customer had paid in total, most runs subtracted a refunded charge, while the answer key counted every successful charge. On a related question, a run that netted out refunds named a different customer as the top payer. A metric your agent computes from billing data needs its definition written into the task.
- The right list, the wrong count. One run got back a complete list of 12 invoices and answered 11. Every number an agent reports from a list it summed or counted needs a check against a known answer.
- A success message over a broken write. Asked to add 12 prospects to the CRM when 3 already existed, one run created all 12, leaving 3 duplicates, and reported "I've successfully added all 12." Only a check of the CRM afterward caught it.
- A request that names a stage the CRM does not have. "Cold Outreach" does not exist as a stage in the replica. GPT-6 Astra stopped to ask on every attempt, and in an earlier run GPT-6 Sol reported that it had moved one existing contact to "Cold" before it noticed and stopped. Field and stage names in a request need to match the app.

How to Test Before Connecting
- Start in a sandbox or a replica. Connect Stripe's server to a sandbox first, and run CRM writes against a copy of your Apollo data, so a bad create or void lands somewhere harmless.
- Grant the smallest permissions that work. For Stripe, use an agent API key scoped to the resources the job needs, or OAuth limited to the sandbox. For Apollo, use an account whose permissions match the job.
- Turn on tool approval in your client. Review each write until your agent has a record on that exact action, on top of Stripe's own confirmation for refunds.
- Write tasks with known answers. "How many invoices has this customer been issued? 12." For money questions, say whether refunds and failed charges count.
- Check the record after every write. Search the CRM for each email your agent added and confirm exactly 1 contact exists. Read the invoice status after a void. Grade that result, and treat your agent's summary as a claim to verify.
- Run each task more than once. A single pass shows your agent can do it, and repeated passes show it does it reliably.
- Record every run as a trace. A trace is the step-by-step record of every tool call, its arguments and what came back, so a wrong number can be traced to a misread list, a skipped search or a write made too early.
FAQ
Does Stripe have an MCP server?
Yes. Stripe runs a hosted MCP server at https://mcp.stripe.com with tools to search, read and write much of the Stripe API, plus documentation search. Stripe recommends installing it with the Stripe CLI's stripe agent setup command.
How do I add the Stripe MCP server to Claude Code?
Run claude mcp add --transport http stripe https://mcp.stripe.com/, start Claude Code, and run /mcp to sign in with OAuth. For an autonomous agent, reference an agent API key from an environment variable in .mcp.json instead.
Does the Stripe MCP server ask before issuing a refund?
Yes, when the agent connects with your Stripe login (OAuth). Creating a refund carries Stripe's Human confirmation requirement: you approve it in the Dashboard within 24 hours, then tell the agent to retry. Other writes through stripe_api_write go through unless your account's approval rules require review, so client-side tool approval still matters.
Can I keep using a restricted API key with Stripe MCP?
Only until November 30, 2026, according to Stripe. After that the server accepts OAuth or agent API keys, and requests with full-access secret keys or restricted keys without the Agent tag receive a 401.
What is the Apollo MCP server URL, and does it cost extra?
https://mcp.apollo.io/mcp. Apollo says the connector works on any Apollo plan, including free with a business email, with no separate MCP subscription. It signs in with OAuth.
Can the Apollo MCP server create contacts and enroll people in sequences?
Yes. It can create and update contacts and accounts, add people to lists, build sequences and enroll prospects. Apollo's page does not mention a confirmation step before those writes, so turn on tool approval in your client to review them.
How do I test an AI agent before giving it Stripe or Apollo access?
Run it in a sandbox or a replica of your data, on tasks with known answers, and check the records after every write. Repeat each task several times and keep a trace of every run.
Testing With LayerLens
LayerLens Environments run agents against replicas of Stripe, Apollo and other apps, grade them on the records they change and on answers you already know, and run the same graders on live answers in production. See how it works
