Skip to main content
Use Polar’s remote Model Context Protocol (MCP) server to give AI agents secure access to your Polar organization. Agents can look up data and take actions across your products, customers, subscriptions, orders, benefits, and more.
Polar MCP uses OAuth. When you connect a client, your browser opens so you can sign in and authorize access to your organization. You never need to copy an API key into your agent.

Connect your agent

Use the production server at https://mcp.polar.sh/mcp/polar-mcp for your live organization. While building or testing, use the sandbox server at https://mcp.polar.sh/mcp/polar-sandbox and give it a distinct name such as polar-sandbox. Choose your client and add the appropriate server.
Add the following to .cursor/mcp.json in your project, or to ~/.cursor/mcp.json to make Polar available in every project:
Open Cursor’s MCP settings and connect to polar to complete authorization.

How the tools work

Polar exposes more than a hundred API operations. Instead of sending every operation and its input schema to your agent at the start of every conversation, the server gives it a few tools and lets it write short JavaScript snippets to find and call what it needs:
1

Search

The agent calls search to find the operations for its task, such as “find a customer and check their active subscriptions”, and their exact inputs.
2

Execute

The agent calls execute with code that makes the API calls and returns the result.
Code runs in an isolated sandbox. It can only call the Polar operations listed below, with the access you granted when you authorized the client, and it cannot reach any other host.

Read-only mode

For agents that should look up data but never change it, add ?readonly=true to the server URL, for example https://mcp.polar.sh/mcp/polar-mcp?readonly=true. Only read operations are available, and the agent asks for read-only access when you authorize it.

Telemetry

The server sends one event per tool call to help us improve it, plus a second event carrying the feedback itself when your agent calls the feedback tool. Each tool-call event carries:
  • The tool name, whether the call succeeded, the error type and status code, and the duration.
  • Your agent’s name and version, when its client reports them.
  • The API operations the call used (for example GET /v1/products/{id}) with their status codes, and the names of any fields the API rejected (for example body.prices.0.price_amount).
  • The size of the result.
  • For search, the JavaScript engine’s error message when the agent’s script fails. Search runs against the public API specification without network access, so the message cannot contain your data.
  • The intent your agent passes: one sentence on the goal of the call.
  • What your agent writes in the feedback tool.
Events from the same account share an identifier, a keyed one-way hash of your user or organization ID, so we can see how a session unfolds. Never sent: the ID itself, access tokens, every other tool argument (including the code that execute runs), results, field values, request and response bodies, and IDs in URLs. intent and feedback are the only text your agent writes that the server sends. Every tool asks the agent to write them without customer names, emails or IDs, and before they are sent or logged the server redacts anything that looks like an identifier or a secret, such as emails, IDs, card numbers and API keys. Redaction matches shapes, not meaning, so a name written in plain words can still pass. If your agent handles data you don’t want to share with us at all, opt out. To opt out, add ?telemetry=false (or 0, no, off) to the server URL, for example https://mcp.polar.sh/mcp/polar-mcp?telemetry=false. The server then ignores intent, which is neither sent nor written to its request logs, and removes the feedback tool. It combines with read-only mode: ?readonly=true&telemetry=false. The server still keeps request logs to operate and secure the service, as the Polar API does.

Available operations