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
› 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
product: "pro.yearly"A familiar checkout, in your app.Setup
Connect your coding agent
Pick your tool and paste one snippet. The endpoint is the same for everything.
https://mcp.cashsdk.com/mcpclaude 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.
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.
Connect the server
One snippet in your agent's config, or sign in through the browser. Your agent discovers every tool automatically.
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.
It configures and verifies
Catalog synced from the store, entitlements mapped, notification URLs wired, paywall built and published, SDK snippets applied and compiled.
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.
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.
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.