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.
26 tools: 4 can delete or cancel things and 22 only read.
Scanned Oct 21, 2026
- Deletes or cancels4Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things0Claude Code: ask
- Only reads22Claude Code: allow: see these tools
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/mcpTools
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_checkout_linkCreate a reusable checkout URL for one or more products — the link you put in a page or an email.No findings
Why it is in this group
- The name "polar_create_checkout_link" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Create a reusable checkout URL for one or more products — the link you put in a page or an email. Polar: POST /v1/checkout-links/.
Annotations the server declares
- title: Create a checkout link
- 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/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .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.