Skip to content

Polar MCP by usefulapi

by usefulapi.io · remote · no sign-in to list tools · v1.16.3 · published by io.usefulapi

Products, customers, orders, subscriptions, benefits, revenue metrics and refunds.

Deletes · 4

26 tools: 4 can delete or cancel things and 22 only read.

Scanned Oct 21, 2026

No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http polar-sh https://polar-sh.usefulapi.io/mcp

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

26 tools

Deletes or cancels 4Claude Code: deny
  • polar_cancel_subscriptionCancel a subscription at the end of its current period.No findings

    Why it is in this group

    • The name "polar_cancel_subscription" says "cancel": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Cancel a subscription at the end of its current period. The customer keeps access until then. Polar: PATCH /v1/subscriptions/{id}.

    Annotations the server declares

    • title: Cancel a subscription
    • destructiveHint: true
  • polar_create_refundRefund an order, in full or in part.No findings

    Why it is in this group

    • The name "polar_create_refund" says "create": a word for a change.
    • The name "polar_create_refund" also says "refund": a word that usually means money moves, which cannot be taken back.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Refund an order, in full or in part. This moves real money back to the customer. Polar: POST /v1/refunds/.

    Annotations the server declares

    • title: Refund an order
    • destructiveHint: true
  • polar_redeliver_webhook_eventQueue one webhook event for redelivery after your endpoint recovered.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Queue one webhook event for redelivery after your endpoint recovered. Polar: POST /v1/webhooks/events/{id}/redeliver.

    Annotations the server declares

    • title: Redeliver a webhook event
    • destructiveHint: true
Only reads 22Claude Code: allow
  • polar_get_customerFetch a single customer by Polar id.No findings

    Why it is in this group

    • The name "polar_get_customer" says "get": a word for reading.
    Description, as the server wrote it
    Fetch a single customer by Polar id. Polar: GET /v1/customers/{id}.

    Annotations the server declares

    • title: Get one customer
    • readOnlyHint: true
  • polar_get_customer_stateFetch everything about one customer in a single call — active subscriptions, granted benefits and entitlements.No findings

    Why it is in this group

    • The name "polar_get_customer_state" says "get": a word for reading.
    Description, as the server wrote it
    Fetch everything about one customer in a single call — active subscriptions, granted benefits and entitlements. The best answer to 'what does this customer currently have?'. Polar: GET /v1/customers/{id}/state.

    Annotations the server declares

    • title: Get a customer's full state
    • readOnlyHint: true
  • polar_get_customer_state_by_external_idSame as polar_get_customer_state, but looked up by YOUR external id rather than Polar's — the usual path when you hold your own user id.No findings

    Why it is in this group

    • The name "polar_get_customer_state_by_external_id" says "get": a word for reading.
    Description, as the server wrote it
    Same as polar_get_customer_state, but looked up by YOUR external id rather than Polar's — the usual path when you hold your own user id. Polar: GET /v1/customers/external/{external_id}/state.

    Annotations the server declares

    • title: Get a customer's state by your own id
    • readOnlyHint: true
  • polar_get_meter_quantitiesFetch the aggregated quantities a meter has recorded over a window — what usage-based billing will charge for.No findings

    Why it is in this group

    • The name "polar_get_meter_quantities" says "get": a word for reading.
    Description, as the server wrote it
    Fetch the aggregated quantities a meter has recorded over a window — what usage-based billing will charge for. Polar: GET /v1/meters/{id}/quantities.

    Annotations the server declares

    • title: Get a meter's quantities
    • readOnlyHint: true
  • polar_get_metricsFetch revenue and subscription metrics over a date range, bucketed by interval — orders, revenue, MRR, active subscriptions.No findings

    Why it is in this group

    • The name "polar_get_metrics" says "get": a word for reading.
    Description, as the server wrote it
    Fetch revenue and subscription metrics over a date range, bucketed by interval — orders, revenue, MRR, active subscriptions. Polar: GET /v1/metrics/.

    Annotations the server declares

    • title: Get revenue metrics
    • readOnlyHint: true
  • polar_get_orderFetch a single order with its line items, discount and tax.No findings

    Why it is in this group

    • The name "polar_get_order" says "get": a word for reading.
    Description, as the server wrote it
    Fetch a single order with its line items, discount and tax. Polar: GET /v1/orders/{id}.

    Annotations the server declares

    • title: Get one order
    • readOnlyHint: true
  • polar_get_productFetch a single product with its prices and attached benefits.No findings

    Why it is in this group

    • The name "polar_get_product" says "get": a word for reading.
    Description, as the server wrote it
    Fetch a single product with its prices and attached benefits. Polar: GET /v1/products/{id}.

    Annotations the server declares

    • title: Get one product
    • readOnlyHint: true
  • polar_get_subscriptionFetch a single subscription with its product, price and period.No findings

    Why it is in this group

    • The name "polar_get_subscription" says "get": a word for reading.
    Description, as the server wrote it
    Fetch a single subscription with its product, price and period. Polar: GET /v1/subscriptions/{id}.

    Annotations the server declares

    • title: Get one subscription
    • readOnlyHint: true
  • polar_list_benefit_grantsList who has been granted one benefit, and whether the grant is still active.No findings

    Why it is in this group

    • The name "polar_list_benefit_grants" says "list": a word for reading.
    Description, as the server wrote it
    List who has been granted one benefit, and whether the grant is still active. Polar: GET /v1/benefits/{id}/grants.

    Annotations the server declares

    • title: List grants of a benefit
    • readOnlyHint: true
  • polar_list_benefitsList benefits — the things a product grants, such as licence keys, file downloads or Discord roles.No findings

    Why it is in this group

    • The name "polar_list_benefits" says "list": a word for reading.
    Description, as the server wrote it
    List benefits — the things a product grants, such as licence keys, file downloads or Discord roles. Polar: GET /v1/benefits/.

    Annotations the server declares

    • title: List benefits
    • readOnlyHint: true
  • polar_list_customersList customers, optionally by email or a text query.No findings

    Why it is in this group

    • The name "polar_list_customers" says "list": a word for reading.
    Description, as the server wrote it
    List customers, optionally by email or a text query. Polar: GET /v1/customers/.

    Annotations the server declares

    • title: List customers
    • readOnlyHint: true
  • polar_list_discountsList discount codes and their redemption limits.No findings

    Why it is in this group

    • The name "polar_list_discounts" says "list": a word for reading.
    Description, as the server wrote it
    List discount codes and their redemption limits. Polar: GET /v1/discounts/.

    Annotations the server declares

    • title: List discounts
    • readOnlyHint: true
  • polar_list_eventsList the raw usage events ingested for metering, filtered by customer, meter, name or time.No findings

    Why it is in this group

    • The name "polar_list_events" says "list": a word for reading.
    Description, as the server wrote it
    List the raw usage events ingested for metering, filtered by customer, meter, name or time. Polar: GET /v1/events/.

    Annotations the server declares

    • title: List usage events
    • readOnlyHint: true
  • polar_list_license_keysList issued licence keys and their status.No findings

    Why it is in this group

    • The name "polar_list_license_keys" says "list": a word for reading.
    Description, as the server wrote it
    List issued licence keys and their status. Polar: GET /v1/license-keys/.

    Annotations the server declares

    • title: List licence keys
    • readOnlyHint: true
  • polar_list_metersList the usage meters that aggregate events into billable quantities.No findings

    Why it is in this group

    • The name "polar_list_meters" says "list": a word for reading.
    Description, as the server wrote it
    List the usage meters that aggregate events into billable quantities. Polar: GET /v1/meters/.

    Annotations the server declares

    • title: List usage meters
    • readOnlyHint: true
  • polar_list_ordersList orders, filtered by customer, product, subscription, status or a date window.No findings

    Why it is in this group

    • The name "polar_list_orders" says "list": a word for reading.
    Description, as the server wrote it
    List orders, filtered by customer, product, subscription, status or a date window. Polar: GET /v1/orders/.

    Annotations the server declares

    • title: List orders
    • readOnlyHint: true
  • polar_list_organizationsList the organisations the token can act for.No findings

    Why it is in this group

    • The name "polar_list_organizations" says "list": a word for reading.
    Description, as the server wrote it
    List the organisations the token can act for. Start here — most other tools take an organization_id. Polar: GET /v1/organizations/.

    Annotations the server declares

    • title: List organisations
    • readOnlyHint: true
  • polar_list_productsList products, optionally filtered by archived state, recurrence or a text query.No findings

    Why it is in this group

    • The name "polar_list_products" says "list": a word for reading.
    Description, as the server wrote it
    List products, optionally filtered by archived state, recurrence or a text query. Polar: GET /v1/products/.

    Annotations the server declares

    • title: List products
    • readOnlyHint: true
  • polar_list_refundsList refunds, filtered by order, subscription, customer or success.No findings

    Why it is in this group

    • The name "polar_list_refunds" says "list": a word for reading.
    Description, as the server wrote it
    List refunds, filtered by order, subscription, customer or success. Polar: GET /v1/refunds/.

    Annotations the server declares

    • title: List refunds
    • readOnlyHint: true
  • polar_list_subscriptionsList subscriptions, filtered by customer, product, status, active state or cancellation window.No findings

    Why it is in this group

    • The name "polar_list_subscriptions" says "list": a word for reading.
    Description, as the server wrote it
    List subscriptions, filtered by customer, product, status, active state or cancellation window. Polar: GET /v1/subscriptions/.

    Annotations the server declares

    • title: List subscriptions
    • readOnlyHint: true
  • polar_list_webhook_deliveriesList webhook delivery attempts with their HTTP results — the tool for 'why did my webhook not arrive?'.No findings

    Why it is in this group

    • The name "polar_list_webhook_deliveries" says "list": a word for reading.
    Description, as the server wrote it
    List webhook delivery attempts with their HTTP results — the tool for 'why did my webhook not arrive?'. Polar: GET /v1/webhooks/deliveries.

    Annotations the server declares

    • title: List webhook deliveries
    • readOnlyHint: true
  • polar_list_webhook_endpointsList the configured webhook endpoints and their subscribed events.No findings

    Why it is in this group

    • The name "polar_list_webhook_endpoints" says "list": a word for reading.
    Description, as the server wrote it
    List the configured webhook endpoints and their subscribed events. Polar: GET /v1/webhooks/endpoints.

    Annotations the server declares

    • title: List webhook endpoints
    • readOnlyHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.16.3. Values in angle brackets are yours to fill in.

claude mcp add --transport http polar-sh https://polar-sh.usefulapi.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__polar-sh__polar_list_organizations",
      "mcp__polar-sh__polar_list_products",
      "mcp__polar-sh__polar_get_product",
      "mcp__polar-sh__polar_list_customers",
      "mcp__polar-sh__polar_get_customer",
      "mcp__polar-sh__polar_get_customer_state",
      "mcp__polar-sh__polar_get_customer_state_by_external_id",
      "mcp__polar-sh__polar_list_orders",
      "mcp__polar-sh__polar_get_order",
      "mcp__polar-sh__polar_list_subscriptions",
      "mcp__polar-sh__polar_get_subscription",
      "mcp__polar-sh__polar_get_metrics",
      "mcp__polar-sh__polar_list_benefits",
      "mcp__polar-sh__polar_list_benefit_grants",
      "mcp__polar-sh__polar_list_discounts",
      "mcp__polar-sh__polar_list_refunds",
      "mcp__polar-sh__polar_list_license_keys",
      "mcp__polar-sh__polar_list_meters",
      "mcp__polar-sh__polar_get_meter_quantities",
      "mcp__polar-sh__polar_list_events",
      "mcp__polar-sh__polar_list_webhook_deliveries",
      "mcp__polar-sh__polar_list_webhook_endpoints"
    ],
    "ask": [],
    "deny": [
      "mcp__polar-sh__polar_redeliver_webhook_event",
      "mcp__polar-sh__polar_create_refund",
      "mcp__polar-sh__polar_cancel_subscription",
      "mcp__polar-sh__polar_create_checkout_link"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as polar-sh. Review it before you use it.