---
title: Cursor
description: Cursor support for the POINTS MCP server is planned. Use ChatGPT today, or follow the discovery guide for any MCP host.
url: https://thepoints.io/docs/agents/hosts/cursor
audience: [agents, operators]
status: Planned
---

# Cursor

**[ChatGPT is the live host today.](/docs/agents/hosts/chatgpt)**

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](/docs/agents/hosts/chatgpt).

Host status comes from [/docs/catalog.json](/docs/catalog.json). For how any MCP host discovers POINTS, see [Discovery](/docs/agents/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.

1. Add the POINTS server to Cursor's MCP config at `~/.cursor/mcp.json` or the project `.cursor/mcp.json`:

   ```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](cursor://anysphere.cursor-deeplink/mcp/install?name=points&config=eyJ1cmwiOiJodHRwczovL3RoZXBvaW50cy5pby9tY3AifQ%3D%3D).

2. Open Cursor Settings → MCP, find the `points` server, 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 callback `http://localhost:8787/callback`, or the web/Agents callback `https://www.cursor.com/agents/mcp/oauth/callback`.
3. 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` (add `identity:read` if prompted).
4. Confirm the green connection status and the advertised tools. See [MCP tools](/docs/agents/reference/mcp-tools). `prepare_payment` should be present and `create_payment_draft` should not be advertised.

### Check the connection

1. Ask Cursor to call `get_agent_pay_policy_vocabulary` and `get_wallet_status`. Expect the real vocabulary and only this account's stored data.
2. Prepare a draft with `prepare_payment` for the saved test payee. The response shows `status: "requires_approval"`. Approve does not execute.
3. Approve the draft in POINTS as the QA owner from the browser, then call `get_payment_status`. It shows `approved` and `executed: false`.
4. 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](/docs/agents/reference/scopes). |

Modes that still present the `cursor://` custom-scheme fallback are not supported. Use the loopback path above, or connect through Cursor web/Agents.
