# Hosted MCP errors

There are two kinds. A refusal of the request itself is a JSON-RPC error with an HTTP status. A failed tool call is a tool result marked `isError`, with HTTP `200`, so the agent can read it and try again. "…" stands for a value the message fills in.

## Refusals

| Message | HTTP | JSON-RPC | When |
| --- | --- | --- | --- |
| `There’s no hosted MCP server here.` | `404` | `-32000` | The project doesn't exist, or its server is off. |
| `Send a Latitude 10 MCP key for this server: Authorization: Bearer l10m_…` | `401` | `-32000` | No key or a wrong one, on a server that takes keys only. |
| `Sign in to use this server: your MCP client can start it from this response’s WWW-Authenticate header.` | `401` | `-32000` | No sign-in, on a server that takes signed-in users only. |
| `Sign in to use this server, or send a Latitude 10 MCP key: Authorization: Bearer l10m_…` | `401` | `-32000` | Neither, on a server that takes both. |
| `The pinned version (v…) is no longer kept. An owner can pin another version or follow the latest.` | `409` | `-32000` | The server is pinned to a version the registry deleted. |
| `This server has no version of its API yet. Push one to the registry.` | `409` | `-32000` | The project has no version. |
| `Version … of this API can’t be turned into tools.` | `409` | `-32000` | The version's document can't be read as tools. |
| `This server’s API host isn’t verified, so no calls are made. An owner can verify it in the workspace.` | `503` | `-32000` | The host was never verified, or its recheck failed. |
| `Hosted MCP isn’t available right now.` | `503` | `-32000` | The service can't reach its storage. |
| `Too many requests. Try again later.` | `429` | `-32000` | Too many requests from one address. |
| `Tool … isn’t available with this key.` | `200` | `-32602` | The tool is off, or not in the key's allow list. |
| `Too many calls with …: at most … a minute. Try again shortly.` | `200` | `-32029` | The calls a minute for this key, or this sign-in, are used. A signed-in user gets a key's limit. |
| `This workspace has used its tool calls for this month. They reset at ….` | `200` | `-32029` | The workspace's monthly calls are used. |

Under MCP revision 2026-07-28, the two limit errors carry `-32010` instead of `-32029`.

## Failed tool calls

| Message | When |
| --- | --- |
| `The arguments don’t match this tool:` | The arguments failed the check. Each wrong path follows on its own line. |
| `arguments.…: is required.` | A path argument is missing or empty. |
| `arguments.…: can’t be “.” or “..”.` | A path argument would move up the path. |
| `The tool’s path leaves the API’s base URL.` | The built path is outside your base URL. |
| `arguments.…: can’t contain line breaks.` | A header argument has a line break. |
| `arguments.…: isn’t a valid header value.` | A header argument can't be sent as a header. |
| `The API’s base URL isn’t allowed.` | The base URL no longer passes the host check. |
| `The stored credential can’t be used. Store it again.` | The credential can't be opened or sent. |
| `Your sign-in has expired. Sign in again from your MCP client.` | A signed-in user's identity provider session has ended. |
| `This server calls its API as each signed-in user; keys can’t be used.` | A key on a server that calls your API as each user, with no stored credential. |
| `The call couldn’t be built.` | Anything else went wrong before sending. |
| `The API didn’t answer within … seconds.` | Your API took longer than 15 seconds. |
| `The API couldn’t be reached.` | The connection failed. |
| `The API answered … Redirects are not followed` | Your API answered a redirect. Its `Location` follows. |
| `The API answered ….` | Your API answered an error status. The start of its body follows. |

## Where this comes from

- `app/hosted-mcp/_lib/upstream.ts`
- `app/hosted-mcp/_lib/mcp.ts`
- `app/hosted-mcp/_lib/server.ts`
- `app/hosted-mcp/_lib/credential.ts`
- `app/mcp/_lib/handler.ts`
- `app/mcp/_lib/modern.ts`
