Connect an MCP client
A tool call is an API call, metered and limited the same way.
Not open yet. Opens with early access.
On this page
The server
| Setting | Value |
|---|---|
| Address | https://api.theunderstanding.company/mcp |
| Transport | Streamable HTTP. POST only; a GET answers 405. |
| Credential | An API key as Authorization: Bearer <your key>, or sign-in (OAuth) where the client offers it |
| Permission an app asks for | understand:read: ask the questions and read usage, nothing else |
The tools
| Tool | What it answers |
|---|---|
check_restricted_merchant | Is this merchant a gambling or wagering business? |
classify_spend_type | Is spending in this category essential, discretionary or neutral? |
match_receipt | Which one card charge paid for this receipt? |
pair_refund | Which transaction refunds this purchase? |
check_return_window | As of a given moment, can the member still return this purchase? |
route_support_message | Which queue should this support message go to? |
score_signal_baseline | How far is today’s sleep, heart rate variability or resting heart rate from this person’s own usual? |
route_member_message | Which team should answer this member message? |
check_document_complete | Does this intake form have what it needs, such as a signature? |
ask_closed_question | Your own predicate, choice or score question. |
get_usage | Requests, input tokens, cost and credit left over the last 30 days. |
Every tool is read-only: each carries readOnlyHint: true, idempotentHint: true, openWorldHint: false and destructiveHint: false. An abstain is a normal result, with abstain first.
The five newer tools are built and tested against a stand-in model, and none is benchmarked. They refuse an argument they don’t list, without repeating it. The three health tools (score_signal_baseline, route_member_message and check_document_complete) take derived numbers, generic labels and presence flags only; they are not a diagnosis and not an emergency service. They are offered at /mcp, /mcp/claude and /mcp/cursor, and not at /mcp/chatgpt, /mcp/grok or /mcp/muse.
Our own keys also see six card tools. A customer’s key does not, so for you every tool is read-only. No tool returns a card number.
One address per assistant
| Address | For | What differs |
|---|---|---|
/mcp | Any MCP client | The standard server. Nothing is tuned. |
/mcp/chatgpt | ChatGPT and OpenAI’s Responses API | Descriptions in the form “Use this when… Do not use for…”, a one-line result led by the abstain flag, and structured content. The banking tools only, no health tools. |
/mcp/claude | Claude Desktop, claude.ai and Claude Code | Short descriptions that describe and don’t instruct; one compact JSON result. |
/mcp/grok | Grok Build, Grok chat and the xAI API | The shortest descriptions and the seven banking decision tools only, no get_usage and no health tools. |
/mcp/muse | Muse | Each description starts “Read.” and says it’s a classification, not advice. The banking tools only, no health tools. |
/mcp/cursor | Cursor and Grok Bot | As the Claude address, at an address of its own, health tools included. |
A tuned address changes the wording, the result’s shape and which tools are offered. It never changes what a tool does, what it costs or who can call it. Any other path under /mcp/ answers 404.
Sign in
- Where a client can set a header, send an API key:
Authorization: Bearer <your key>. The bare key works too. - Where a client only offers a sign-in screen, it opens our sign-in page; you approve the app, and it gets an access token (
uat_…) that lasts an hour and works only at the address it was issued for. - A missing or bad credential is a 401 with a
WWW-Authenticateheader that tells the client where to sign in.
Check the connection
List the tools from a terminal:
curl "$UNDERSTANDING_API_URL/mcp" \ -H "Authorization: Bearer $UNDERSTANDING_API_KEY" \ -H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Steps for each service
ChatGPT, Claude, Cursor, Grok, Muse, Instinct, banking apps and the model APIs each have a page with the exact steps.
# Connect an MCP client
A tool call is an API call, metered and limited the same way.
Not open yet. Opens with early access.
## The server
| Setting | Value |
| --- | --- |
| Address | `https://api.theunderstanding.company/mcp` |
| Transport | Streamable HTTP. `POST` only; a `GET` answers 405. |
| Credential | An API key as `Authorization: Bearer <your key>`, or sign-in (OAuth) where the client offers it |
| Permission an app asks for | `understand:read`: ask the questions and read usage, nothing else |
## The tools
| Tool | What it answers |
| --- | --- |
| `check_restricted_merchant` | Is this merchant a gambling or wagering business? |
| `classify_spend_type` | Is spending in this category essential, discretionary or neutral? |
| `match_receipt` | Which one card charge paid for this receipt? |
| `pair_refund` | Which transaction refunds this purchase? |
| `check_return_window` | As of a given moment, can the member still return this purchase? |
| `route_support_message` | Which queue should this support message go to? |
| `score_signal_baseline` | How far is today’s sleep, heart rate variability or resting heart rate from this person’s own usual? |
| `route_member_message` | Which team should answer this member message? |
| `check_document_complete` | Does this intake form have what it needs, such as a signature? |
| `ask_closed_question` | Your own predicate, choice or score question. |
| `get_usage` | Requests, input tokens, cost and credit left over the last 30 days. |
Every tool is read-only: each carries `readOnlyHint: true`, `idempotentHint: true`, `openWorldHint: false` and `destructiveHint: false`. An abstain is a normal result, with `abstain` first.
The five newer tools are built and tested against a stand-in model, and none is benchmarked. They refuse an argument they don’t list, without repeating it. The three health tools (`score_signal_baseline`, `route_member_message` and `check_document_complete`) take derived numbers, generic labels and presence flags only; they are not a diagnosis and not an emergency service. They are offered at `/mcp`, `/mcp/claude` and `/mcp/cursor`, and not at `/mcp/chatgpt`, `/mcp/grok` or `/mcp/muse`.
Our own keys also see six card tools. A customer’s key does not, so for you every tool is read-only. No tool returns a card number.
## One address per assistant
| Address | For | What differs |
| --- | --- | --- |
| `/mcp` | Any MCP client | The standard server. Nothing is tuned. |
| `/mcp/chatgpt` | ChatGPT and OpenAI’s Responses API | Descriptions in the form “Use this when… Do not use for…”, a one-line result led by the abstain flag, and structured content. The banking tools only, no health tools. |
| `/mcp/claude` | Claude Desktop, claude.ai and Claude Code | Short descriptions that describe and don’t instruct; one compact JSON result. |
| `/mcp/grok` | Grok Build, Grok chat and the xAI API | The shortest descriptions and the seven banking decision tools only, no `get_usage` and no health tools. |
| `/mcp/muse` | Muse | Each description starts “Read.” and says it’s a classification, not advice. The banking tools only, no health tools. |
| `/mcp/cursor` | Cursor and Grok Bot | As the Claude address, at an address of its own, health tools included. |
A tuned address changes the wording, the result’s shape and which tools are offered. It never changes what a tool does, what it costs or who can call it. Any other path under `/mcp/` answers 404.
## Sign in
- Where a client can set a header, send an API key: `Authorization: Bearer <your key>`. The bare key works too.
- Where a client only offers a sign-in screen, it opens our sign-in page; you approve the app, and it gets an access token (`uat_…`) that lasts an hour and works only at the address it was issued for.
- A missing or bad credential is a 401 with a `WWW-Authenticate` header that tells the client where to sign in.
## Check the connection
List the tools from a terminal:
```
curl "$UNDERSTANDING_API_URL/mcp" \
-H "Authorization: Bearer $UNDERSTANDING_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
```
## Steps for each service
ChatGPT, Claude, Cursor, Grok, Muse, Instinct, banking apps and the model APIs each have a page with the exact steps.
[Where it plugs in](/api/docs/integrations)
Source: /api/docs/guides/mcp