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.
- 48 tools
- OAuth or token
- Under a minute
› 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
Setup
Connect in under a minute
Pick your tool and paste one snippet. The endpoint is the same for everything.
https://mcp.cashsdk.com/mcpclaude mcp add cashsdk --transport http https://mcp.cashsdk.com/mcp \ --header "Authorization: Bearer csk_mcp_YOUR_TOKEN"
Replace the placeholder with a token from your dashboard — Settings → MCP. It does not expire; revoke it there when you are done.
Tools
Every one of the 48 tools
Each maps onto a REST endpoint your backend could call, so results are the same JSON either way. Nothing here is a preview.
Workspace
Where an agent starts when nothing exists yet.
list_apps- Every app in the workspace, with its platform identifiers.
create_app- Create a new app from a bundle id or Android package name.
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_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.
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 and SCIM 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 so an agent can bootstrap from nothing, or narrowed to a single app that it genuinely cannot escape.
Revocable instantly
Revoke in the dashboard and the next tool call fails. OAuth refresh tokens rotate on every use.
Fully audited
Every call lands in your audit log marked as agent-driven, so you can see exactly what was changed and when.
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.
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.