MCP server

Your paywall stack, set up by your agent.

Connect Claude, Cursor, Codex or any MCP client to CashSDK. Your agent creates apps, syncs store catalogs, builds paywalls, runs experiments and reads revenue, without you leaving the editor.

  • 64 tools
  • OAuth or token
  • Integration skill
cashsdk / mcp server Product preview
cashsdk · mcp

› set up in-app purchases in this app

  • get_setup_checklist
  • sync_catalog_from_app_store
  • create_entitlement
  • get_store_notification_urls
  • create_paywall_from_template
  • publish_paywall

At a glance

A complete configuration surface, not a demo

64MCP tools
9Client setup guides
2Ways to authenticate
$0Cost to use it
ONE CONNECTED PURCHASE FLOW
CashSDK
CashSDK
Store receipt
pro active
A purchase startsproduct: "pro.yearly"A familiar checkout, in your app.
Illustrative flow no live transactions

Setup

Connect your coding agent

Pick your tool and paste one snippet. The endpoint is the same for everything.

https://mcp.cashsdk.com/mcp
Run in your terminal, then authenticate with /mcp Sign in, no token
claude mcp add --transport http cashsdk https://mcp.cashsdk.com/mcp

Follow the instructions above, then authenticate in your client. Sign in to CashSDK, choose a workspace and app, and review access in the browser.

Add the CashSDK integration skill

One download includes MCP configuration and a skill for iOS, macOS, Android, web, Chrome extensions and standalone Stripe. It guides your agent through platform selection, setup checks and purchase verification.

Install locally in compatible clients, or use the MCP commands above. Each client asks you to authorize access.

Tools

Every one of the 64 tools

Each tool calls the same authorized API routes as the dashboard. Ask for the platform catalog to check release availability before choosing an SDK.

64/64

Workspace

Where an agent starts when nothing exists yet.

list_supported_platforms
Every platform, its billing path, distribution status and guide.
list_apps
Every app in the workspace, with its platform identifiers.
create_app
Choose iOS, Mac App Store, Android, web, direct macOS, Chrome or Stripe only.
get_app
One app's config summary, no secrets.
update_app_settings
Name, default placement, App Store id, package, environment.

Setup & diagnostics

Status computed from observed state, never self-reported.

get_setup_checklist
The live go-live checklist and what is still outstanding.
get_setup_diagnostics
Store-side problems (app not live, products not submitted, wrong key role) each with its fix.
get_integration_snippets
Integration code for any platform, including Stripe without a client SDK.
get_commerce_configuration
Origins, customer sessions and deployed checkout gates.
configure_commerce
Configure sessions with admin write access; revokes existing sessions.
get_macos_integration_snippets
Mac App Store Swift integration.
get_web_integration_snippets
Web and backend sessions.
get_macos_direct_integration_snippets
Native Swift and merchant-owned Stripe.
get_chrome_extension_integration_snippets
Manifest V3 customer access and Stripe.
get_stripe_integration_snippets
Your existing Checkout and server access.
get_ios_integration_snippets
Compilable Swift: package, configure, identify, purchase, paywall.
get_android_integration_snippets
The same for Kotlin, with the Gradle coordinate that resolves.

Catalog

Products, entitlements, and the store on both sides.

get_catalog
Products and entitlements for an app.
create_product
Create a store product.
create_entitlement
Create a named access tier.
sync_catalog_from_app_store
Import the catalog from App Store Connect or Play. Supports dryRun.
push_catalog_to_app_store
Push local catalog changes back to the store.
grant_entitlement
Comp, support and migration grants.

Paywalls & experiments

Design, place, split-test and read the result.

list_templates
The paywall template gallery.
list_paywalls
Existing paywalls.
get_paywall
One paywall's full config, published and draft.
create_paywall
A new blank paywall.
create_paywall_from_template
A paywall from a template id.
generate_paywall
Design or edit a paywall from a natural-language brief.
publish_paywall
Publish the draft so devices actually receive it.
list_placements
Placements for an app.
create_placement
A named trigger event you register in code.
list_campaigns
Campaigns for an app.
create_campaign
Map a placement to a paywall, or an A/B split with a holdout.
get_experiment_results
Per-variant conversion, revenue and significance.

Store notifications & webhooks

The wiring that makes renewals and refunds arrive.

get_store_notification_urls
The exact ASSN (Apple) / RTDN (Play) URL to paste into the console.
request_apple_test_notification
Ask the store to send a test notification, end to end.
list_webhook_endpoints
Endpoints registered for an app.
register_webhook_endpoint
Register one. Returns the signing secret once.
send_test_webhook
Send a signed test event and check you return 2xx.

Customers & revenue

Verify a real purchase actually landed.

get_customer
A customer's resolved entitlements, subscriptions and lifetime spend.
list_transactions
Recent store transactions.
tail_recent_events
Recent SDK and server events.
get_revenue_overview
Revenue, active subscriptions, trials and churn.
list_api_keys
Key ids and masked values, never a raw secret.
create_api_key
Mint a publishable or secret key. Returns it once.
rotate_api_key
Rotate in place; the old value stops immediately.

Marketplace

Billing backends and integrations, connected and mapped.

list_marketplace_apps
Every connector this workspace can connect.
list_marketplace_connections
What is connected already, with lifecycle status.
get_marketplace_status
One connection in full: mappings, recent events, last error.
connect_marketplace_app
Connect a billing backend or integration.
start_marketplace_oauth
Begin a “Connect with X” flow for an OAuth provider.
map_marketplace_catalog
Map a provider's plans to CashSDK products and entitlements.
list_stripe_prices
The connected Stripe account's prices, and which can be imported.
import_stripe_prices
Create CashSDK products from picked Stripe prices.
list_marketplace_user_links
Inspect who owns provider customers and subscriptions.
list_unlinked_subscriptions
Subscriptions waiting for an app-user identity.
link_marketplace_user
Assign a verified user and replay pending access; admin write access required.
sync_stripe
Pull existing Stripe subscriptions, payments and refunds.
get_stripe_sync
Progress and counts of the latest Stripe sync.
validate_marketplace_connection
Check credentials, signing secret and mappings.
activate_marketplace_connection
Start events flowing into the unified ledger.
pause_marketplace_connection
Pause without disconnecting.
disconnect_marketplace_app
Disconnect and wipe stored credentials.

In practice

Things you can just ask for

Plain requests, resolved into real tool calls against your own workspace.

  • Set up in-app purchases in this app and stop when you need me
  • Sync my App Store products and give every one an entitlement
  • Build a paywall for the onboarding screen and A/B test it against the current one
  • Why is my subscription checklist item still failing?
  • Show me what this customer is entitled to and what they've paid

How it works

From an empty project to a verified purchase

The agent drives; it stops at the two things only you can do.

01

Connect the server

One snippet in your agent's config, or sign in through the browser. Your agent discovers every tool automatically.

02

It reads the live checklist

Item statuses are computed from observed state, never self-reported, so the agent can tell the difference between done and assumed.

03

It configures and verifies

Catalog synced from the store, entitlements mapped, notification URLs wired, paywall built and published, SDK snippets applied and compiled.

04

You do the two physical steps

Upload your store credential, and make one test purchase on a real device. The agent polls while you do and shows you what arrived.

What it can't do

Broad enough to be useful. Bounded on purpose.

An agent reads store listings, webhook payloads and READMEs. Any of those can try to steer it, so the surface it can reach is decided here, not by a prompt.

Never touches money

Billing, partner payouts and revenue-history import are refused for every MCP token at every role.

Never changes who gets in

Team members, invitations, SSO, SCIM and user-token signing secrets are dashboard-only. So is deleting a workspace.

Never exceeds you

A token acts as the member who created it and passes the same role checks a dashboard session does. It cannot outrank you.

Scoped how you like

Workspace-wide or limited to one app; read/write or enforced read-only. Combine both restrictions for least privilege.

Revocable instantly

Revoke in the dashboard and the next tool call fails. OAuth refresh tokens rotate on every use.

Fully audited

Every change lands in your audit log marked agent-driven, next to the member who authorised it, so “was that me?” has an answer.

Compatibility

Works with any MCP client

MCP is an open standard, and this is a standard Streamable HTTP server, so a client we have never tested still works. These are the ones we ship a checked snippet for.

Claude CodeCursorCodex CLIClaude (web)Claude DesktopVS CodeWindsurfZedGemini CLI

Prefer to wire it yourself? Every tool is a REST endpoint too, and webhooks stream the results back to your stack.

FAQ

Questions developers actually ask

Frequently asked questions

A hosted Model Context Protocol server at https://mcp.cashsdk.com/mcp. MCP is the open standard that lets an AI agent call real tools, so instead of you clicking through a dashboard, your coding agent configures CashSDK directly, from the same editor you are already writing the app in.

No. The MCP server is included on every plan, including the free sandbox, and every tool call is free. CashSDK charges 0.5% of tracked Production revenue and nothing else, an agent doing your setup for you costs exactly the same as doing it by hand.

Any MCP client. We provide setup guides for Claude Code, Cursor, Codex CLI, Claude (web), Claude Desktop, VS Code, Windsurf, Zed, Gemini CLI. Claude Code, Cursor, Codex and Claude connectors support browser sign-in. For clients without OAuth, use a durable MCP token from your dashboard.

Everything about configuring in-app purchases: apps, store catalog sync in both directions, entitlements, paywalls, placements, A/B campaigns, webhook endpoints, SDK keys, and marketplace connections. It can read revenue, customers and transactions to verify its own work.

Billing, partner payouts, adding or removing team members, SSO and SCIM configuration, uploading store credentials, rotating the store notification token, bulk data export, and deleting your workspace. Those are refused for every MCP token at every role, no prompt, however confused or hostile, reaches them.

Dashboard → Settings → MCP → Create token. It is workspace-wide by default so your agent can list and create apps; you can narrow it to a single app, make it read-only, or use both restrictions together. It does not expire, and revoking it stops any agent using it immediately.

A token can never do more than the person who created it (every call passes the same role checks as a dashboard session) and the account-level surface above is denied outright. Tokens are shown once, stored only as a hash, and every change it makes is recorded in your audit log as agent-driven, alongside the member whose credential it used.

Choose the client integration for your platform. MCP returns snippets for iOS, Mac App Store, Android, web, direct macOS and Chrome extensions, including their distribution status. Stripe-only integrations need no client SDK: keep your checkout and verify access from your backend.

Point your agent at it and go.

Free while you build. The sandbox is unlimited, billing starts at your first real Production dollar, and the MCP server costs nothing on any plan.