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 athttps://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.
- Cursor
- Claude Code
- ChatGPT
- Claude Desktop
- Codex
- OpenCode
- Other clients
Add the following to Open Cursor’s MCP settings and connect to
.cursor/mcp.json in your project, or to ~/.cursor/mcp.json to make Polar available in every project: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.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 thefeedback 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 examplebody.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
intentyour agent passes: one sentence on the goal of the call. - What your agent writes in the
feedbacktool.
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
Available operations (103)
Available operations (103)

