Query Stripe data with Claude or Cursor via the Stripe MCP server.
A 5-minute stripe mcp setup that lets your AI tool ask plain-English questions about your customers, subscriptions, charges, invoices, and refunds. The Query Streams agent caches the Stripe API into a local DuckDB SQL surface, so the LLM sees real tables instead of REST endpoints — and Schema Intelligence handles the Stripe-isms (money columns in cents, livemode filtering, status enums, metadata flattening) so the SQL is right on the first try.
Ask Nova, get SQL + charts
Meet Nova Database REST APIOne key per partner. No credentials shared.
Build an API AutomationScheduled sync to 6+ platforms
Explore API to SQLQuery APIs with SQL, no code
Explore AI Database MCPClaude, Cursor, ChatGPT & Grok talk to your data
Connect AIQuery Streams is a secure, real-time data integration platform that brings every database and SaaS API in your account into Claude, Cursor, ChatGPT, and Grok — through a single MCP key with no firewall changes. This guide walks through the stripe mcp path specifically, so your AI tool can answer plain-English questions about customers, subscriptions, charges, invoices, and refunds without you exporting CSVs out of the Stripe Dashboard or chaining REST API pagination calls in a script. The Network Agent pulls Stripe API data into a local DuckDB cache, so the LLM sees clean SQL surfaces (customers, subscriptions, charges, invoices, refunds, payouts) instead of raw REST endpoints — with money columns flagged as currency_minor_unit_usd so the AI divides amounts by 100 automatically and never reports a $1,234.56 charge as “$123,456”. Learn more at QueryStreams.com and sign up for free to start asking your AI tool real Stripe questions.
What the Query Streams Stripe MCP server gives you
Stripe ships an excellent first-party AI surface — the Stripe Agent Toolkit — which gives AI agents read+write function-call wrappers around the Stripe REST API for actions like creating customers, generating Checkout sessions, issuing refunds, and cancelling subscriptions. That’s the right tool when the AI needs to do things on Stripe’s side. The Query Streams stripe mcp server solves a different problem entirely: a read-only analytics surface over your Stripe data, exposed as SQL, with the same audit trail and multi-connector reach that every other Query Streams MCP connector ships. Other open-source Stripe MCP wrappers we see on GitHub also exist — most of them push raw Stripe REST or pagination cursors at the LLM, no SQL surface, no cents-aware semantics, no read-only enforcement. Query Streams gives you one key, every connector, full audit trail, the agent normalises Stripe API responses into SQL surfaces, and the AI tool never holds your Stripe API keys.
Zero inbound firewall holes
The Network Agent opens a single outbound encrypted cloud link to Query Streams. Your AI client connects to the cloud, never to your Stripe account or your network. No port to open, no IP to allowlist, no VPN, no Stripe API key in the AI client config.
One key, every connector
The same MCP key reaches Stripe alongside every other database and SaaS API your account has connected. Add a HubSpot or PostgreSQL connector tomorrow and the AI tool sees it next to your Stripe data without re-keying — cross-connector joins like “match Stripe customers to CRM contacts” become a single SELECT.
Schema Intelligence baked in
The AI sees AI-curated descriptions, semantic types (currency in cents, status enums, livemode flagging, metadata flattening), sample values, and discovered foreign keys for every Stripe table — not just REST endpoint shapes. It writes accurate SQL the first try, including the amount / 100.0 conversion and the livemode = true filter that bare-schema LLMs miss.
Read-only by construction
Even a hallucinating LLM can’t issue a refund, cancel a subscription, create a Checkout session, or update a customer through Query Streams MCP. The Network Agent rejects anything that isn’t SELECT, WITH, or EXPLAIN before it reaches the cached Stripe tables — and Stripe write operations are never exposed to the MCP surface in the first place.
Per-key rate limits
Default 60 requests per minute and 10 execute calls per minute, configurable per key. A runaway AI tool-call loop hits a token bucket, not your Stripe API rate limit, your daily request quota, or your Stripe Connect platform throughput budget.
How it works without opening firewall ports
The Query Streams Network Agent installs once on any machine with internet access (the Stripe API is reachable from anywhere) and holds a single outbound TLS cloud link — nothing inbound, nothing exposed. What’s specific to Stripe: when a question comes in, the agent paginates the Stripe REST endpoints under the hood and caches the responses in a local DuckDB so the LLM sees clean SQL surfaces — customers, subscriptions, subscription_items, charges, invoices, refunds, payouts, prices, products — instead of REST envelopes. The AI tool never sees your Stripe restricted API key, your Stripe Connect account id, or any customer payment data. how the outbound-only agent link works →
AI Client
Cursor, Claude,
ChatGPT, Grok
QS MCP Server
Streamable HTTP
X-MCP-Key auth
Network Agent
On your network
Cloud link out
Stripe API
read-only DuckDB
cache, SQL surface
The MCP key you give Cursor or Claude is scoped (read / analyze / execute), revocable at any time, and rate-limited per-key. The AI tool calls these MCP tools to do its work:
pattern_key with optional parameter overrides.Why Schema Intelligence makes Query Streams MCP different
Most “MCP for Stripe” servers in the open-source landscape hand your AI tool the same REST resource reference Stripe publishes for developers — or worse, the raw information_schema of whatever cache they keep. Field names. Data types. Maybe a primary key. The LLM is left to guess that amount needs to be divided by 100 because Stripe stores money in cents, that livemode = false rows are test charges that should be filtered out of revenue, that subscriptions.status is an enum of trialing / active / past_due / canceled / unpaid / incomplete, or that created needs to be cast through DuckDB’s timestamp helpers. That’s why the first SQL most LLMs write against a bare Stripe schema is wrong — not because the LLM is bad, but because it doesn’t have the data it needs to be right (and reporting “$1,234,567,890 of MRR” because nobody divided by 100 is the kind of mistake that becomes a screenshot in your finance team’s slack).
Query Streams MCP returns that same cached Stripe schema enriched with what we call Schema Intelligence (SI) — AI-curated metadata that’s generated by running profiling queries against your actual Stripe data before the AI client ever asks. When SI is enabled on the Stripe connector, every schema tool the AI calls (qs_get_connector_schema, qs_get_table_schema, qs_profile_table, qs_get_relationships) returns the bare cached schema plus six layers of curated knowledge. The LLM stops guessing.
To make this concrete, here is what the AI client gets back from a single qs_get_table_schema call against the Stripe connector’s charges table — the central transactional table that drives 90% of revenue questions — first without Schema Intelligence, then with it.
The six layers Schema Intelligence adds
Each layer addresses a specific class of question the LLM would otherwise have to guess at. SI is opt-in per (connector, database) pair and runs as a one-time profiling pass against your data — it does not change your schema, does not write to your database, and refreshes incrementally when your schema changes.
AI-curated descriptions
Plain-English purpose for every database, schema, table, and column — generated once, refreshed when your schema changes. Confidence-scored; user-authored descriptions always win.
amount is in cents (1.00 USD = 100).”
Table classifications
Each table tagged FACT (transactional events), DIM (descriptive reference), or LOOKUP (small code maps), plus a business domain — finance, sales, marketing, hr, support, and 14 more.
customers [DIM, domain:finance]
Semantic types per column
Eighteen types — currency, currency_minor_unit_usd, email, date_iso, status_code, percentage, ranking_position, identifier, url, and more. The AI generates dialect-correct SQL appropriate to each type, including the amount / 100.0 conversion no bare-schema LLM gets right.
created: timestamp_iso · status: status_code
Sample values from real data
Random rows surfaced to the LLM so it recognises patterns no schema can show — Stripe object id prefixes (ch_, cus_, sub_, in_), formatting conventions, encoded values, and the actual shape of your customer descriptions.
Enum detection with distributions
Low-cardinality columns (50 or fewer distinct values, at most 5% of rows unique) mapped to their full value list with row counts. The AI never guesses casing or spelling on Stripe enums.
Implicit foreign-key discovery
Cross-table data overlap analysis finds joins that aren’t declared as DDL constraints. Stored alongside formal FKs with confidence scores, returned by qs_get_relationships.
(97% overlap, conf 0.99)
Same prompt, different SQL
The proof is in the SQL the AI tool actually writes. Same Cursor session, same Claude model, same prompt — “Which customers spent the most in the last 30 days, with charge count, only successful production charges?” Without Schema Intelligence the LLM has to guess. With it, the LLM knows the amount is in cents, the status enum needs filtering, livemode = true is the production filter, and the customer FK lets it join customers for human-readable email.
si_recommendation block telling the AI exactly what it’s missing — including a one-call option to enable SI mid-conversation via qs_request_si_analysis. Your AI client can offer to trigger an SI run on the spot (“would you like me to enable Schema Intelligence on this database first? It runs through your Network Agent in the background and will dramatically improve my answers”). Run time scales with table count: a Stripe connector typically has 12–15 cached tables and completes in 5–10 minutes; if you also have a large enterprise database with 1,500+ tables connected, that one alone can take 45–60 minutes for a full scan. Subsequent refreshes after schema changes are incremental and much faster than the first run. Schema Intelligence is opt-in. We just don’t think you’ll want to opt out.
Query Streams MCP vs the Stripe Agent Toolkit
Stripe ships the Stripe Agent Toolkit — an official set of function-call wrappers around the Stripe REST API designed for LangChain, the OpenAI Agents SDK, the Vercel AI SDK, and similar agent frameworks. It’s read+write by design: an AI agent with Agent Toolkit access can customers.create, subscriptions.cancel, refunds.create, checkout.sessions.create, and so on. That’s exactly the right shape when the AI is supposed to act on Stripe state — a support assistant that issues refunds, an onboarding bot that creates Checkout links, a sales agent that updates customer metadata. Query Streams MCP solves a different problem: a read-only analytics surface over Stripe data exposed as SQL. The two tools answer different questions. Here’s how they compare across the dimensions that actually matter when an AI tool reaches into Stripe data.
| Dimension | Query Streams Stripe MCP | Stripe Agent Toolkit |
|---|---|---|
| Read or write | Read-only by construction | Read+Write by design |
| Mutation safety | Agent-layer hardcoded READONLY_VIOLATION validator on every dispatched call |
Whatever the agent prompt and framework guardrails allow |
| Multi-connector reach | Yes — Stripe + Postgres + Snowflake + HubSpot + Shopify under one MCP key | Stripe-only |
| Cross-connector joins | Yes — e.g. join Stripe customers to your CRM contacts to your product database users in one SELECT | No |
| Saved queries (LLM never sees SQL) | Yes via qs_list_saved_queries + qs_run_saved_query |
N/A |
| Audit trail | event_logs per call: org / user / key / scope / latency / SQL fingerprint / error |
Whatever your LangChain / OpenAI Agent SDK logging captures |
| Schema metadata served to LLM | AI-curated descriptions, semantic types like currency_minor_unit_usd, enum value lists, AI-discovered relationships, sample values |
Stripe REST-API spec only |
| Use case fit | Analytics, finance reports, customer-support context lookup, compliance audits | Action-taking assistants, support bots that issue refunds, onboarding flows that create Checkout sessions |
They’re complementary, not competitive. Many orgs use both — Query Streams MCP for the data side (the AI reads Stripe analytics, joins them to CRM and product data, generates reports), the Stripe Agent Toolkit for the action side (the AI issues refunds, cancels subscriptions, creates Checkout links). The decision is per-tool and per-AI-agent, not per-org. Some teams gate the Agent Toolkit behind manual approval workflows + Query Streams MCP behind unrestricted analytics access — the read-only nature makes it safe to grant freely. If you’re standing up an AI assistant that needs to do things on Stripe, use the Stripe Agent Toolkit. If you’re standing up an AI assistant that needs to understand what’s happening on Stripe (and ideally also see your Postgres, your Snowflake, your HubSpot, your Shopify in the same conversation), use Query Streams MCP. Most mature deployments have both.
MCP not for you? Try Nova AI instead.
Skip MCP entirely and ask Stripe questions like “what’s our MRR trend over the last 12 months?” or “which subscriptions are at-risk in the next 30 days?” straight from the Query Streams portal — no config files, same Network Agent and Schema Intelligence underneath.
Meet Nova AIPrerequisites
Before you start, make sure you have:
- A free Query Streams account at my.querystreams.com.
- The Query Streams Network Agent installed on a machine with internet access — see Download the Query Streams Agent. The Stripe API is reachable from anywhere, so the agent doesn’t need to live on a specific network.
- A Stripe connector configured against the agent — see the existing API Connector Setup guides for Stripe pairing. Use a Stripe restricted API key (recommended) so you can scope the agent’s read access to specific resources (e.g. read on
charges/subscriptions/customers/invoices, no access tobalance/payouts/accountsif you don’t need them). The agent holds the Stripe API key; the AI tool never touches it. - Any MCP-capable AI client. We’ll show Cursor, Claude Desktop, ChatGPT, and Grok in this guide; if you use Windsurf, Zed, Continue, Cline, VS Code Copilot, Codex, or Goose, the config block is essentially the same.
- Five minutes.
Drop it into your AI client
One JSON snippet for Cursor, Claude, ChatGPT, or Grok. Same key everywhere.
Ask a question
“What’s our MRR by month?” — the AI calls the right tools, you get the answer.
Step 1: Generate an MCP key in Query Streams
Sign in to Query Streams and open the MCP page (or sign in first at my.querystreams.com and click MCP in the left navigation). Click Generate key, give the key a recognizable name (something like cursor-laptop or claude-desktop), and pick the scopes you want this key to have:
read— the AI can browse connectors and read schema. Required for everything else.analyze— the AI can profile tables and discover relationships (sample values, distributions, semantic types). Optional but strongly recommended for finance work, where understanding the shape of your charge / subscription / invoice data and metric semantics (cents-aware money columns, status enums, livemode flagging) matters.execute— the AI can actually run SQL. Without this, the AI is read-only against schema metadata only.
For a typical “let Claude analyse my Stripe data” workflow, all three scopes are appropriate. For a key you’re handing to a teammate or a less-trusted client, drop execute and let them browse only. You can revoke any key at any time from the same page; the AI client will see MCP_KEY_REVOKED on its next call and stop working immediately. There’s no propagation delay.
Copy the key now — Query Streams shows it once, then stores only a hash. If you lose it, generate a new one. The key looks like qsmcp_ followed by 48 random characters and is what your AI client sends in the X-MCP-Key request header.
Step 2: Add Query Streams MCP to your AI client
The configuration is the same shape across every MCP-capable client — an MCP server entry pointing at https://mcp.querystreams.com with your key in the X-MCP-Key header. Pick your client below.
// Edit ~/.cursor/mcp.json { "mcpServers": { "querystreams": { "url": "https://mcp.querystreams.com", "headers": { "X-MCP-Key": "qsmcp_PASTE_KEY_HERE" } } } }
// Settings → Developer → Edit Config { "mcpServers": { "querystreams": { "url": "https://mcp.querystreams.com", "headers": { "X-MCP-Key": "qsmcp_PASTE_KEY_HERE" } } } }
// Settings → Apps & Connectors → Add MCP Server URL https://mcp.querystreams.com Auth header X-MCP-Key Header value qsmcp_PASTE_KEY_HERE // Requires a paid ChatGPT plan // (Plus / Pro / Team / Enterprise).
// Grok → Settings → Tools { "mcp_servers": [{ "name": "querystreams", "url": "https://mcp.querystreams.com", "auth_header": "X-MCP-Key", "auth_value": "qsmcp_..." }] }
Restart your AI client. On its next start it will discover the eight Query Streams MCP tools listed above and surface them in its tool palette. In Cursor and Claude Desktop you can verify by typing “list connectors” — the AI should call qs_list_connectors and return your Stripe connector (along with anything else you have configured, including additional Stripe Connect platforms if you’ve paired multiple accounts).
Step 3: Ask the AI a Stripe question
You don’t write SQL — the AI does. You ask a question, the AI picks the right MCP tool, the agent runs the query against your cached Stripe data, and the answer comes back as text plus tables. Three example prompts to try first:
subscriptions -> subscription_items -> prices to compute MRR per active subscription, divides any cents-stored amounts by 100, normalises monthly / yearly / weekly intervals to a per-month figure, filters livemode = true and subscriptions.status IN ('active', 'trialing'), and groups by DATE_TRUNC('month', subscriptions.created). You’ll get the trend table inline plus a written interpretation — which acquisition cohort grew, which is contracting, and a follow-up offer like “want me to break this down by plan tier?” Schema Intelligence’s enum detection guided the AI to pick the right subscription-status filter; without SI, the LLM might have included past_due and canceled and overstated current MRR.subscriptions -> prices -> products to bucket subscriptions by tier (the products.name or prices.nickname column), then computes the cancellation count and the cohort-active denominator per month using the Stripe-canonical churn formula. Below the table the AI typically annotates which tiers are leaking customers fastest and proposes a follow-up: “want me to look at expansion vs contraction MRR by tier in the same window?” Schema Intelligence’s enum detection on subscriptions.status ensures the AI distinguishes canceled from unpaid and from incomplete_expired — three different reasons a subscription ends, with very different finance implications.subscriptions, upcoming_invoices (or the invoices table for the next renewal cycle), customers, and payment_methods. The AI applies the cents-aware filter amount > 500000 (i.e. $5,000 in cents), parses the card.exp_month / card.exp_year against the next 30 days, and joins back to customers.email for human-readable output. Schema Intelligence’s currency_minor_unit_usd semantic type drives the right cents threshold automatically. The AI will usually propose a follow-up: “want me to draft an outreach list with the customer email and account-manager assignment so the success team can reach out before renewal?”The first time the AI calls a tool, your client may pop up a confirmation prompt asking you to approve the tool call — that’s MCP’s standard consent flow, not anything Query Streams adds. Approve once and the AI proceeds with the rest of the conversation freely. You can revisit the consent at any time in your client’s settings.
Honest billing notice: MCP usage is charged on uncompressed bytes
Query Streams’ Excel add-in, Google Sheets add-on, web Query Builder, and Nova AI all run over our compressed cloud link — we measure and bill compressedBytes against your data realm. The MCP transport (Streamable HTTP per the official MCP spec) does not reliably support compression end-to-end across every client and intermediate proxy, so we measure and bill uncompressedBytes for MCP traffic.
- What this means: a 1.5 MB Stripe analytics query (12 months of charges + customers + subscriptions joined) costs ~1.5 MB of your data realm when fetched via MCP, vs. ~200–350 KB via Excel / Sheets / Nova / the Query Builder. Stripe data is heavy on enums (
status,currency,livemode), timestamps, and free-form metadata strings — so LZ4 compression over the cloud link typically achieves 7–9x reduction on the other transports. Same data, different transport, different billable size. - What this isn’t: a markup or a punishment for using MCP. We pass through actual bytes shipped. The other clients are cheaper because compression works reliably on those transports; we don’t punish you for the protocol choice, but we have to be transparent about the cost shape.
- What you can do: for very large recurring exports (e.g. multi-year customer + charge + invoice cross-tabs), prefer the Excel / Sheets / Nova path. For interactive AI tool calls (the typical 100–5,000 row Stripe analytics aggregate that fits in an LLM context), MCP is the right choice and the cost difference is in cents. The DuckDB cache also deduplicates repeated Stripe API calls so you don’t burn Stripe rate-limit budget twice for the same lookup.
Frequently asked questions
Do I need to open ports or run a VPN to use this? +
https://mcp.querystreams.com from the public internet — if outbound HTTPS works on the agent host, MCP works. See how the outbound-only connection works →
Which AI tools can I use with Query Streams MCP? +
Can I revoke an MCP key? +
/mcp page, per-org via plan settings, and platform-level), none of which need a database password rotation or agent restart. More on MCP key security →
How is MCP usage billed against my data realm? +
compressedBytes); MCP runs over Streamable HTTP, which doesn’t reliably support compression end-to-end through every client and proxy, so we bill uncompressedBytes. A 1.5 MB Stripe analytics aggregate returned to Excel typically costs ~200–350 KB of your data realm (Stripe data with repeated status enums + currency labels + livemode booleans compresses 7–9x via LZ4); the same 1.5 MB result returned to Cursor over MCP costs ~1.5 MB. We’re transparent about it because we’d rather you know up front than be surprised at the end of the billing cycle.
Does Query Streams MCP work with Stripe restricted API keys, Stripe Connect platforms, and historical data older than the standard API window? +
charges / subscriptions / customers / invoices, no access to balance / payouts / accounts) and the agent’s read-only validator enforces SQL-side restrictions on top, so the AI tool is doubly contained. Standard Stripe API keys work too but with broader scope. Stripe Connect platforms are supported — the agent connects to your platform account and uses the Stripe-Account header for connected-account queries; each connected account can be a separate Query Streams connector if you want LLM-side disambiguation (“show me revenue on connected account acct_xxx“), or you can keep them merged for cross-account analytics. Historical data beyond Stripe’s standard 90-day API window is preserved in the agent’s DuckDB cache: once the agent has fetched a record, it persists locally; you can query historical charges / customers / subscriptions even after Stripe’s API rolls them off the live response. The agent’s cache freshness policy is configurable per resource (e.g. refresh subscriptions every hour, refresh charges every 5 minutes, refresh customers daily) so you control the tradeoff between freshness and Stripe API quota burn.
How does this differ from running an open-source Stripe MCP server myself? +
livemode filtering hint. To get Claude reading from Stripe + your PostgreSQL + your HubSpot CRM + your Snowflake warehouse you’d need four MCP servers configured separately in every AI client, each with its own credentials, each with its own scope model, each with its own audit story. Query Streams MCP is one key reaching every connector your account has paired, and the agent normalises Stripe API responses into clean SQL surfaces with currency_minor_unit_usd semantic typing baked in (so the LLM divides by 100 automatically). You also pick up Schema Intelligence, agent-layer read-only enforcement, per-key rate limits, audit trail in event_logs, and the same data-realm billing pipeline you already use — none of which a direct MCP gives you.
What happens if the AI tries to write or delete data? +
qs_run_query call is parsed by a hardcoded read-only validator that allows only SELECT, WITH, and EXPLAIN statements; anything else returns READONLY_VIOLATION and never reaches the cached Stripe tables. The validator runs in the agent process, not in the cloud, so a compromised cloud surface couldn’t bypass it. There’s a second layer of safety on top: Stripe write operations (creating refunds, cancelling subscriptions, updating customers, generating Checkout sessions) are simply not exposed to the MCP surface in the first place — the agent only ever issues read-shaped REST calls to the Stripe API. So even if the validator were somehow bypassed, the LLM has nothing it could call to mutate your Stripe state. (If you do want an AI agent that takes actions on Stripe, that’s the Stripe Agent Toolkit’s job, covered in the comparison section above.)
Can I see what the AI actually asked? +
event_logs with the org, user, key, scope, latency, and result code. The org-admin can answer “who used MCP last week, which connector, and what did they ask?” with a single query. Note that we log the tool name and metadata, not the SQL text or returned rows — those flow through the cloud link and never land in cloud logs. Stripe’s own dashboard shows API request logs from the agent’s perspective (calls made by the agent’s restricted API key), so for Stripe data the combination is: the agent’s event_logs in your Query Streams account tells you what the AI asked and when; the Stripe Dashboard’s “Developers → Logs” tab tells you what API calls the agent fanned out as a result. Together they give a complete audit trail of every AI-initiated read on your Stripe data, suitable for SOC 2 / PCI / finance-team review.
Do I have to run Schema Intelligence to use Query Streams MCP? +
(connector, database) pair, and MCP works fine without it. The AI gets bare schema (types, primary keys, formal foreign keys, indexes) and writes basic queries. With SI enabled, the AI gets six additional layers of curated metadata: (1) AI-curated descriptions on every database, table, and column; (2) table classifications (FACT for transactional events, DIM for descriptive reference, LOOKUP for small code maps) plus a business domain tag (finance, sales, marketing, hr, support, and 14 more); (3) a semantic type on every column (currency, currency_minor_unit_usd, email, date_iso, status_code, percentage, identifier, url, person_name, and 9 more) that drives dialect-correct SQL generation; (4) sample values from your real data so the LLM recognises patterns no schema can show (Stripe id prefixes, metadata key shape, customer description conventions); (5) enum detection with full value distributions for low-cardinality columns; and (6) AI-discovered foreign keys based on cross-table data overlap, surfaced through qs_get_relationships. Without SI, every schema-tool response also carries an si_recommendation block listing exactly what’s missing for the call — the AI can read this and offer to trigger SI mid-conversation via qs_request_si_analysis. Run time scales with table count: a Stripe connector typically completes in 5–10 minutes (12–15 cached tables); a typical mid-size database on the same agent (a few hundred tables) finishes in 15–25 minutes; a large enterprise database with 1,500+ tables can take 45–60 minutes for a full scan. SI runs through your Network Agent against your data (never in the cloud), never writes to your database, never changes your schema, and refreshes incrementally when your schema changes — so subsequent runs after you add or alter tables are much faster than the first one. The end-to-end effect: with SI enabled, your AI client writes correct SQL on the first try far more often than it does against any “MCP for X” server that just hands the LLM information_schema.
What if I add another connector later, like HubSpot or PostgreSQL? +
qs_list_connectors picks it up automatically), so one config block buys your whole account, present and future. Cross-connector joins like “match Stripe customer ids to HubSpot contacts and find paying customers who haven’t logged in for 30 days” then work in a single query. Why one key covers every connector →
Do I have to set up MCP just to chat with my Stripe data? +
Why use Query Streams MCP for Stripe data if Stripe ships the Agent Toolkit? +
SELECT from charges / subscriptions / invoices / customers / refunds / etc. via SQL, but cannot mutate Stripe state. Three concrete reasons to prefer Query Streams for analytics-shaped use cases: (1) Read-only by construction. A hallucinating LLM with Agent Toolkit access can theoretically issue a refund, cancel a subscription, or create a Stripe Checkout link with incorrect parameters — the prompt and framework guardrails are the only line of defence. With Query Streams MCP, the agent’s hardcoded read-only validator returns READONLY_VIOLATION for any non-SELECT / non-WITH / non-EXPLAIN statement — the LLM physically cannot mutate Stripe state, no matter how creatively prompted. (2) Multi-connector single key. A single Query Streams MCP key gives Claude / Cursor / ChatGPT / Grok access to your Stripe data AND your Postgres + your Snowflake + your HubSpot + your Shopify, all queryable in the same conversation with cross-connector joins (“match Stripe customer ids to my CRM contacts and show me which paid customers haven’t logged into the product in 30 days“). The Agent Toolkit only sees Stripe. (3) Audit trail. Every Query Streams MCP call writes a row to event_logs with org / user / key / scope / latency / SQL fingerprint / error code. Compliance and finance teams can answer “who queried Stripe data last week, what did they ask for, and how much returned?” with a single query. Agent Toolkit logging depends on whatever your LangChain / OpenAI Agent SDK / Vercel AI SDK setup captures; the discipline is on you. Use the Agent Toolkit when the AI needs to perform Stripe actions (assistant bots that issue refunds, onboarding flows that create Checkout sessions, support bots that update customer metadata) and you’ve audited the agent’s behaviour. Use Query Streams MCP when the AI is doing analytics, finance reporting, customer-support context lookup, compliance audits, or anything else that’s strictly read-side. Many orgs use both, scoped to different AI agents.
Get started
Connect your AI tool to your Stripe data in five minutes.
One MCP key reaches Stripe, every database, and every other API connector in your Query Streams account — with full audit trail, per-key rate limits, restricted-API-key auth, Stripe Connect support, and zero firewall changes. Read-only by construction; the Stripe Agent Toolkit covers the action side. Claude, Cursor, ChatGPT, and Grok all work out of the box.
Related guides: Download the Query Streams Agent | API Connector Setup | All MCP Server guides | Nova AI text-to-SQL
Category: MCP Server
Tags: mcp, claude, cursor, stripe, api-connector, payments, saas-metrics, mrr, stripe-agent-toolkit, read-only-mcp
Meta Description: Query Stripe with Claude or Cursor via MCP. Read-only SQL surface, cents-aware semantics, restricted API keys, no firewall changes. Free.


