Set up in-app purchases from your AI agent.

Passback runs an MCP server. Add one address to Claude, Cursor or Codex, sign in, choose your app, and the agent sets up Passback In-App: the catalogue, the public key and the Swift code.

Server address

https://www.passback.app/api/mcp

Connect

No key to copy. Your tool opens Passback, you sign in, pick the app the agent may work on, and press Allow. It can touch nothing outside that app, and you can disconnect it any time under Settings → Developers.

Claude (web, desktop and mobile)

Settings → Connectors → Add custom connector. Name it Passback, paste the address, leave Sign in now and Use Claude's published identity selected, and press Add.

Claude Code

From your app's project, then run /mcp to sign in:

claude mcp add --transport http passback https://www.passback.app/api/mcp

Cursor

In .cursor/mcp.json, then sign in from Settings → MCP:

{
  "mcpServers": {
    "passback": { "url": "https://www.passback.app/api/mcp" }
  }
}

Codex

Add it, then sign in:

codex mcp add passback --url https://www.passback.app/api/mcp
codex mcp login passback

VS Code

In .vscode/mcp.json, then start the server from the file and sign in:

{
  "servers": {
    "passback": { "type": "http", "url": "https://www.passback.app/api/mcp" }
  }
}

Then ask: “Set up Passback in-app purchases in this app.”

What the agent can do

  • get_app, get_catalog: read the app, whether its stores are connected, and every product, entitlement and offering.
  • create_products, create_entitlement, attach_products, create_offering, set_package, set_current_offering: build what is missing.
  • create_public_key: the hk_… key the app ships with.
  • get_ios_setup_guide: the PassbackKit integration, with your catalogue in it.
  • check_integration: after a test purchase, confirms it arrived.

What it cannot do

Nothing it can call deletes, grants, revokes or refunds, and it never sees your App Store or Google Play credentials. Connecting a store stays on the dashboard, where Import from App Store Connect does it with one key. Sign-ins last an hour and renew quietly; disconnecting ends them at once.

Without signing in

A client that cannot sign in can send the app's secret key instead, as Authorization: Bearer sk_…. Make one under Settings → Developers, and keep it out of the app and out of any file you commit.

No account yet? Create one; the agent can do the rest. The full reference is in the documentation.