14 tools · ships to npm

@stackcurious/polar-mcp

Give your AI agent control of Polar.sh. Products, checkouts, subscriptions, customers, and license keys — callable from Claude, Cursor, or any MCP client.

GitHubSwitch from RevenueCat in 30 minnpm i -g @stackcurious/polar-mcp

Built by Q — an autonomous AI agent platform.

14 tools, 7 resources

Covers ~80% of operational queries a founder or agent would actually ask. Refunds, benefit grants, and customer portal sessions are excluded from v0.1 — either high blast-radius or different auth model.

Products

  • polar_list_products

    List products, filter by org / archived / recurring

  • polar_get_product

    Fetch one product including prices and benefits

Subscriptions

  • polar_list_subscriptions

    List subscriptions by product / customer / active

  • polar_get_subscription

    Fetch one subscription with period and status

Orders

  • polar_list_orders

    One-time orders and subscription invoices

  • polar_get_order

    Line items, taxes, customer reference

Customers

  • polar_list_customers

    Filter by email or free-text query

  • polar_get_customer

    Fetch one customer

  • polar_get_customer_state

    Snapshot of subs, granted benefits, recent orders

Checkouts

  • polar_create_checkout

    Create a checkout session and return the URL

  • polar_get_checkout

    Inspect an existing checkout session

License Keys

  • polar_validate_license_key

    Validate a key against your org

  • polar_list_license_keys

    List keys issued by your org

Webhooks

  • polar_list_webhook_endpoints

    List registered webhook URLs for debugging

Example: an agent running your billing

Simulated transcript of Claude using the MCP. Two prompts, five tool calls, real answers.

You
List my Polar products. Which one has the most active subscribers?
→ polar_list_products({"is_archived":false,"is_recurring":true,"limit":20})
→ polar_list_subscriptions({"active":true,"limit":100})
Claude
You have 3 recurring products. Subscriber counts: - **Pro ($12/mo)** — 187 active subscribers - **Founder ($29/mo)** — 41 active subscribers - **Team ($99/mo)** — 12 active subscribers Pro has the most subscribers by volume (~76%), but Team generates nearly as much MRR as Pro ($1,188 vs $2,244) because of the higher price point.
You
Create a checkout link for Team, pre-fill the email dave@example.com.
→ polar_create_checkout({"products":["prod_team_abc123"],"customer_email":"dave@example.com","success_url":"https://getqpro.com/thanks"})
Claude
Created. Checkout URL: `https://buy.polar.sh/polar_c_live_xxxxx` It's valid for 24 hours. Dave will land on /thanks after successful payment, and you'll receive a `checkout.completed` webhook.

Transcript illustrative. Replace IDs and values with your own org's data by setting POLAR_ACCESS_TOKEN and asking Claude directly.

Set it up in 90 seconds

  1. 1

    Install

    npm install -g @stackcurious/polar-mcp
  2. 2

    Create an Organization Access Token

    Polar dashboard → Settings → Developer → Access Tokens. Token starts with polar_oat_….

  3. 3

    Wire it into Claude Code

    claude mcp add polar -- env POLAR_ACCESS_TOKEN=polar_oat_... npx @stackcurious/polar-mcp

    For Claude Desktop / Cursor / Windsurf, use the JSON config from the README.

  4. 4

    Ask Claude anything

    "Create a checkout link for Pro." · "Who subscribed in the last 7 days?" · "Validate this license key."

Polar is developer-first. This makes it agent-first.

Free, open-source, MIT licensed. Pairs with @stackcurious/revenuecat-charts-mcp if you need RevenueCat analytics on the way out.