Cursor
ChatGPT is the live host today.
Cursor is a planned MCP host for POINTS. It is not QA-passed on production, and POINTS does not publish a date.
This page will carry the connection guide once the host passes QA on production. Until then, ChatGPT is the host to use; see the ChatGPT guide.
Host status comes from /docs/catalog.json. For how any MCP host discovers POINTS, see Discovery.
Draft setup (not yet QA-passed)
This draft is for the Cursor QA run only. It is not a production guarantee and does not change Cursor's Planned status.
-
Add the POINTS server to Cursor's MCP config at
~/.cursor/mcp.jsonor the project.cursor/mcp.json:{ "mcpServers": { "points": { "url": "https://thepoints.io/mcp" } } }The in-app POINTS setup modal also offers an Add to Cursor button. It opens Cursor's install prompt with the same URL prefilled and Cursor still asks you to confirm before anything connects. The raw deeplink is Add to Cursor.
-
Open Cursor Settings → MCP, find the
pointsserver, and choose Connect. Cursor opens a browser sign-in to POINTS. You do not need a client id or secret: Cursor registers itself and can call through the fixed loopback callbackhttp://localhost:8787/callback, or the web/Agents callbackhttps://www.cursor.com/agents/mcp/oauth/callback. -
On the POINTS consent page, review the client name, the redirect host, and the requested scopes, then approve. The QA run approves only
balances:read payments:draft payments:status module-status:read(addidentity:readif prompted). -
Confirm the green connection status and the advertised tools. See MCP tools.
prepare_paymentshould be present andcreate_payment_draftshould not be advertised.
Check the connection
- Ask Cursor to call
get_agent_pay_policy_vocabularyandget_wallet_status. Expect the real vocabulary and only this account's stored data. - Prepare a draft with
prepare_paymentfor the saved test payee. The response showsstatus: "requires_approval". Approve does not execute. - Approve the draft in POINTS as the QA owner from the browser, then call
get_payment_status. It showsapprovedandexecuted: false. - Wait past the 15-minute access-token lifetime and call a tool again. It works without a new consent step. Revoke the connection in POINTS and the next call returns HTTP 401.
Troubleshooting
| Symptom | What to check |
|---|---|
| Redirect mismatch: Cursor tried a fallback callback (port 8787 busy) | Free port 8787 and reconnect. The desktop IDE/CLI uses the fixed loopback callback on port 8787. |
invalid_grant at the token endpoint | Keep the resource value exactly https://thepoints.io/mcp, with no trailing slash. |
| HTTP 401 on every call | The connection was revoked or the token expired. Reconnect. |
Missing required scope: <scope> | Reconnect and approve the scope the tool needs. See OAuth scopes. |
Modes that still present the cursor:// custom-scheme fallback are not supported. Use the loopback path above, or connect through Cursor web/Agents.