CashSDKCashSDK
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.

  • 48 tools
  • OAuth or token
  • Under a minute
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

0
MCP tools
0
Clients with tested snippets
0
Ways to authenticate
$0
Cost to use it

Setup

Connect in under a minute

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

https://mcp.cashsdk.com/mcp
Run in your project directory Token
claude 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.

48/48

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.

1

Connect the server

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

2

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.

3

It configures and verifies

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

4

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.

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.

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.