Errors and troubleshooting
What each failure means and which side needs to change: your config, your plan, or the call itself.
Two error shapes
Transport errors are JSON-RPC errors: the request was malformed, the version is unsupported, the method does not exist, or the credential is wrong. These need a change in your client.
Tool errors come back as a normal result with isError: true and a readable message. The model is meant to read them and correct its next call, which is why a quota problem does not look like a protocol failure.
Transport errors
| Code | Name | Meaning |
|---|---|---|
-32700 | Parse error | Body was not valid JSON, or a batch was sent. Send one message per POST. |
-32601 | Method not found | Unknown RPC method or unknown tool name. Re-read tools/list. |
-32602 | Invalid params | Missing required _meta field, or arguments that are not an object. |
-32020 | HeaderMismatch | The Mcp-Method or Mcp-Name header does not match the body, or a required header is missing (2026-07-28 only). |
-32022 | UnsupportedProtocolVersion | The requested revision is not implemented. The data.supported array lists what is. |
Tool errors
| Code | Meaning | Fix |
|---|---|---|
4003 | Plan does not include MCP | Upgrade to Pro or Ultra. The message carries the upgrade link. |
4004 | Quota exhausted | The named allowance (B2B, scrape or email) is spent for this period. |
4029 | Rate limited | Wait. The message names which ceiling was hit: per minute, per day, or the hourly sending guard. |
-32602 | Bad arguments | Missing required argument, a ceiling exceeded, or a missing confirm on a destructive tool. |
HTTP statuses
| Status | When |
|---|---|
200 | Success, including tool errors. |
202 | A notification was accepted; there is no body. |
400 | Malformed request, header mismatch, unsupported version. |
401 | Missing, unknown, expired or revoked credential. Carries WWW-Authenticate. |
403 | Valid credential without the required scope, or a blocked Origin. |
404 | Unknown method or tool on a 2026-07-28 request. |
405 | GET or DELETE on the MCP endpoint. It accepts POST only. |
503 | MCP is disabled on the deployment, or OAuth is not configured. |
Common failures
The client shows zero tools
Almost always the credential. Check the health endpoint (no auth needed), then run a real call with your key:
curl -s https://mcp.getle.ad/mcp/healthcurl -s https://mcp.getle.ad/mcp \
-H "Authorization: Bearer glm_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-H "MCP-Protocol-Version: 2026-07-28" \
-H "Mcp-Method: tools/call" \
-H "Mcp-Name: get_account" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "get_account",
"arguments": {},
"_meta": {
"io.modelcontextprotocol/protocolVersion": "2026-07-28",
"io.modelcontextprotocol/clientCapabilities": {}
}
}
}'“Method not allowed” on connect
The client opened a GET stream. That was removed in the 2026-07-28 revision and this server answers 405 for it. Configure the client for streamable HTTP, not the deprecated HTTP+SSE transport, and point it at https://mcp.getle.ad/mcp.
OAuth loops back to the consent screen
The redirect URI is not registered for that client, or the code expired. Codes live two minutes. Start the connection again from the client; if it still loops, disconnect the client in Settings, MCP and re-add it.
Everything returns a plan error
The workspace is not on Pro or Ultra. get_account keeps working precisely so the assistant can report this. See Limits and credits.
Writes fail with 403 while reads work
That key is read-only. Mint a second key with the write scope in Settings, MCP, or approve the write scope on the OAuth consent screen.
A legacy client cannot initialize
The handshake is still supported. Confirm the client posts to the endpoint with JSON:
curl -s https://mcp.getle.ad/mcp \
-H "Authorization: Bearer glm_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-06-18",
"capabilities": {},
"clientInfo": { "name": "my-client", "version": "1.0.0" }
}
}'