400
Do not retryMalformed request — Something in the request itself is wrong — most often a cursor.
Response body
{ "error": { "code": "invalid_cursor", … } }
Should you retry?
No — the same request will fail the same way. Fix it first.
What it means
The server understood the request and rejected it. Retrying the same request produces the same result. error.code says which case you hit — invalid_cursor, missing_parameter, invalid_request or batch_too_large.
Common causes
- `invalid_cursor` — a `cursor` value that was edited, truncated or built by hand.
- `missing_parameter` — a required parameter was not sent.
- `invalid_request` — most often a query parameter the endpoint does not accept: a typo, an invented filter, or a spelling retired in an earlier release. `details.parameters` names each one and `details.supported` lists what the endpoint does take. Also covers a request that could not be parsed.
- `batch_too_large` — too many operations in one MCP JSON-RPC batch.
How to fix it
Fix the request. For a cursor error, restart pagination without the bad cursor — cursors are opaque and must be passed back exactly as received, never constructed.
Endpoints that return this
Read from the OpenAPI specification, so this list cannot claim an endpoint returns a status the contract does not list.