Cursor and VS Code
In Cursor and VS Code your coding agent can ask closed questions about transactions and get a closed answer, a probability and an abstain flag back.
Not open yet. Opens with early access.
On this page
Before you start
- Cursor or VS Code with an agent that can use MCP servers.
- An API key from the console, if you use a header. You need an account first. Both editors can also sign in instead, which needs no key.
- Keep the key out of the file. Both editors can read it from the environment or prompt for it, so nothing secret goes into a repository.
Set it up
Cursor
Put this in .cursor/mcp.json in a project, or ~/.cursor/mcp.json for every project:
{ "mcpServers": { "understanding": { "url": "https://api.theunderstanding.company/mcp/cursor", "headers": { "Authorization": "Bearer ${env:UNDERSTANDING_API_KEY}" } } } }
Export UNDERSTANDING_API_KEY where Cursor starts, then restart Cursor. Cursor reads ${env:NAME} in url and headers, so the key is not written into the file.
To sign in instead, leave out headers. Cursor opens our sign-in page; sign in and Allow. Cursor's return addresses are https://www.cursor.com/agents/mcp/oauth/callback for web and cloud agents and a local address for the desktop app, and the server recognizes both.
A Cursor plugin bundles this server with the agent skill, so one install gives the agent both. It reads the key from UNDERSTANDING_API_KEY too. Not open yet. Opens with early access.
VS Code
Put this in .vscode/mcp.json. VS Code asks for the key once and keeps it, so it is not in the file:
{ "inputs": [ { "id": "understanding-key", "type": "promptString", "description": "Understanding API key", "password": true } ], "servers": { "understanding": { "type": "http", "url": "https://api.theunderstanding.company/mcp", "headers": { "Authorization": "Bearer ${input:understanding-key}" } } } }
VS Code's format uses servers, not mcpServers. You can also run MCP: Add Server from the command palette and choose HTTP. To sign in instead of using a key, leave out headers; VS Code opens a browser on first connect. VS Code uses a local return address and may change its port, which the server accepts.
What we tuned for this service
- Cursor uses
/mcp/cursor. It is the same wording and result shape as the Claude address: short descriptions that describe and do not instruct, and one compact JSON object per result with the abstain flag first. It is a stable address of its own, because Cursor's allow-lists for organizations are written by address. It offers all eleven tools, including the three health tools. Grok Bot reaches us through the same address, so it can see them too; the Grok Bot template tells it not to use them. - VS Code is not tuned. It uses
/mcp, the standard server. - Every tool is marked read-only. An abstain is a normal successful result.
Check that it works
In the editor's agent chat, ask:
Is the merchant DRAFTKINGS with merchant category code 7995 a gambling merchant?The agent should call check_restricted_merchant. In Cursor and Claude-style tools you may see it named mcp__understanding__check_restricted_merchant. The result is one JSON object:
{"abstain":false,"answer":true,"probability":0.97,"reasons":["mcc_7995","rule_gambling_category","kind_sportsbook"],"decision":"restricted_merchant","type":"predicate"}For a case that abstains, ask about LUCKY COINS LLC with code 5816. The result starts {"abstain":true,... and the agent should say it is unsure instead of stating the answer as fact. The numbers show the format. They are not measured results.
If it doesn't connect
- The server is listed but has no tools. Check the key. A 401 means it is wrong or revoked. In Cursor, check that the editor was started from a shell where
UNDERSTANDING_API_KEYis set. - VS Code shows the server as stopped. Open the output for the MCP server, and check that
"type": "http"is set. VS Code tries the HTTP transport first and only falls back to the older SSE one if HTTP fails. - Sign-in fails in Cursor. Cursor's client registration is reported to differ from the standard in places, so a sign-in can fail where the header works. Use the header.
- An organization blocks the server. Cursor's Enterprise allow-lists match by address. Ask an admin to allow
https://api.theunderstanding.company/mcp/cursor.
# Cursor and VS Code
In Cursor and VS Code your coding agent can ask closed questions about transactions and get a closed answer, a probability and an abstain flag back.
Not open yet. Opens with early access.
## Before you start
- Cursor or VS Code with an agent that can use MCP servers.
- An API key from the console, if you use a header. You need an account first. Both editors can also sign in instead, which needs no key.
- Keep the key out of the file. Both editors can read it from the environment or prompt for it, so nothing secret goes into a repository.
## Set it up
### Cursor
Put this in `.cursor/mcp.json` in a project, or `~/.cursor/mcp.json` for every project:
```
{
"mcpServers": {
"understanding": {
"url": "https://api.theunderstanding.company/mcp/cursor",
"headers": { "Authorization": "Bearer ${env:UNDERSTANDING_API_KEY}" }
}
}
}
```
Export `UNDERSTANDING_API_KEY` where Cursor starts, then restart Cursor. Cursor reads `${env:NAME}` in `url` and `headers`, so the key is not written into the file.
To sign in instead, leave out `headers`. Cursor opens our sign-in page; sign in and Allow. Cursor's return addresses are `https://www.cursor.com/agents/mcp/oauth/callback` for web and cloud agents and a local address for the desktop app, and the server recognizes both.
A Cursor plugin bundles this server with the agent skill, so one install gives the agent both. It reads the key from `UNDERSTANDING_API_KEY` too. Not open yet. Opens with early access.
### VS Code
Put this in `.vscode/mcp.json`. VS Code asks for the key once and keeps it, so it is not in the file:
```
{
"inputs": [
{ "id": "understanding-key", "type": "promptString", "description": "Understanding API key", "password": true }
],
"servers": {
"understanding": {
"type": "http",
"url": "https://api.theunderstanding.company/mcp",
"headers": { "Authorization": "Bearer ${input:understanding-key}" }
}
}
}
```
VS Code's format uses `servers`, not `mcpServers`. You can also run MCP: Add Server from the command palette and choose HTTP. To sign in instead of using a key, leave out `headers`; VS Code opens a browser on first connect. VS Code uses a local return address and may change its port, which the server accepts.
## What we tuned for this service
- Cursor uses `/mcp/cursor`. It is the same wording and result shape as the Claude address: short descriptions that describe and do not instruct, and one compact JSON object per result with the abstain flag first. It is a stable address of its own, because Cursor's allow-lists for organizations are written by address. It offers all eleven tools, including the three health tools. Grok Bot reaches us through the same address, so it can see them too; the Grok Bot template tells it not to use them.
- VS Code is not tuned. It uses `/mcp`, the standard server.
- Every tool is marked read-only. An abstain is a normal successful result.
## Check that it works
In the editor's agent chat, ask:
```
Is the merchant DRAFTKINGS with merchant category code 7995 a gambling merchant?
```
The agent should call `check_restricted_merchant`. In Cursor and Claude-style tools you may see it named `mcp__understanding__check_restricted_merchant`. The result is one JSON object:
```
{"abstain":false,"answer":true,"probability":0.97,"reasons":["mcc_7995","rule_gambling_category","kind_sportsbook"],"decision":"restricted_merchant","type":"predicate"}
```
For a case that abstains, ask about LUCKY COINS LLC with code 5816. The result starts `{"abstain":true,...` and the agent should say it is unsure instead of stating the answer as fact. The numbers show the format. They are not measured results.
## If it doesn't connect
- The server is listed but has no tools. Check the key. A 401 means it is wrong or revoked. In Cursor, check that the editor was started from a shell where `UNDERSTANDING_API_KEY` is set.
- VS Code shows the server as stopped. Open the output for the MCP server, and check that `"type": "http"` is set. VS Code tries the HTTP transport first and only falls back to the older SSE one if HTTP fails.
- Sign-in fails in Cursor. Cursor's client registration is reported to differ from the standard in places, so a sign-in can fail where the header works. Use the header.
- An organization blocks the server. Cursor's Enterprise allow-lists match by address. Ask an admin to allow `https://api.theunderstanding.company/mcp/cursor`.
Source: /api/docs/integrations/cursor-vscode