MCP Server

Connect SparkPay to Claude and manage your pricing by asking for it. Check revenue, look up customers, run a sale, or set up a whole pricing page in a guided flow.

Claude DesktopClaude CodeAny MCP client

Connect it

Two minutes, once. Your key is the same admin secret you already use.

In Claude Desktop, open Settings → Connectors → Add custom connector and paste the endpoint below. When it asks for a token, give it your SparkPay secret as a Bearer token.

Endpoint

https://sparkpay.dev/api/mcp/mcp

For Claude Code, or any client that speaks local stdio, bridge to it with mcp-remote:

claude_desktop_config.json

{
"mcpServers": {
"spark-pay": {
"command": "npx",
"args": [
"-y", "mcp-remote",
"https://sparkpay.dev/api/mcp/mcp",
"--header", "Authorization: Bearer YOUR_SECRET"
]
}
}
}
Keep the secret secret
That token can read every customer and payment across your apps. Treat it like a password: never paste it into a shared chat, a public repo, or a screenshot.

Just ask

No commands to memorise. Plain questions work.

What is my net revenue and MRR across all apps?
Look up jane@example.com, what plan is she on?
Which coupons are live on my-app right now?
Who cancelled in the last 30 days, and what were they paying?
Run a 30% summer sale across all my apps until the end of August.

Set up a pricing page

One request walks you through pricing, discounts, branding and content.

Ask for it in plain words, or name the tool directly:

In Claude Desktop

Set up the pricing page for my-app as a $299 lifetime plan

It moves through six stages, showing you a form at each one:

Overview
Plans
Coupon
Branding
Content
Finish

One form per stage. Each stage saves on its own, then hands you the next one. Skip any stage you do not need.

StageIt asks you forWhat it does
Overviewnothing, it just readsReads your current plans, coupons and branding, then recommends prices.
PlansBilling model, price, plan name, badge, free tier?Mints the new Stripe price and sets the card badge.
CouponCode, percent, expiry, public or privateSuggests a seasonal code and creates it.
BrandingDomain, theme colour, card stylePulls your favicon and offers colours drawn from it.
ContentFAQ items, testimonials, section togglesWrites both sections onto the page.
Finishnothing, it just readsShows the final page and what to do next.

Every stage opens a form like this. Whatever you type wins, so the suggested numbers are only ever a head start:

SparkPay wants your approval

The values you enter here are what gets saved. The suggestions are only a starting point.

Tier
pro
Plan name
Lifetime
Billing model
One-time (pay once)
Price in dollars
299
Card badge
BEST VALUE (elite)
CancelApprove
Nothing happens until you approve
Claude cannot fill these forms in. It proposes; you type and click approve. If you cancel, nothing is written, and the stages you already approved stay saved.

What it can and cannot do

Money-moving actions are deliberately fenced off.

It can
  • Read revenue, customers, payments and plans
  • Change prices and plan badges, with your approval
  • Create and retire discount codes
  • Set your page theme, FAQ and testimonials
It cannot
  • Issue a refund
  • Cancel anyone's subscription
  • Change a price without you typing the number
  • Touch an app you did not name
Existing customers keep their price
Repricing changes what new buyers pay. Anyone already subscribed stays on the price they signed up at.

Desktop vs Claude Code

Approval forms need a client that can show them.

Reading works everywhere. Saving a change needs a client that can render an approval form, which today means Claude Desktop. From Claude Code you can still preview any change by asking for a dry run.

ActionClaude DesktopClaude Code
Read anythingYesYes
Preview a change (dry run)YesYes
Save a changeYesNo
Refused is not broken
Ask Claude Code to save a price and it will politely refuse. That is the guard doing its job, not an error. Preview there, approve in Desktop.

Everything it can reach

You never type these names; Claude picks the right one.

AppsEvery app connected to your account.
PlansAn app's catalog: tiers, prices, limits.
SubscriptionsWho is on which plan, and their status.
Customer lookupOne customer across every app you own.
Recent paymentsThe latest charges as they land.
RevenueNet revenue, MRR and growth in one query.
CouponsActive codes, expiry and redemption counts.

After you change pricing

One command in your app repo keeps its copy in sync.

Your app keeps a local copy of its plans so it can gate features without a network call. After a price or limit change, refresh it:

In your app repo

bun run plans:sync
Checking your live page
Your deployed site charges real cards; local development uses Stripe test mode. A price created in one will show as "Coming Soon" in the other, so confirm pricing on your live page. Colours, badges, FAQ and testimonials appear in both straight away.

Ready to ship?

Add Stripe payments to your app in minutes. $99, one-time purchase.