Errors and limits
What failure looks like, and the boundaries worth designing around.
How errors come back
Tool failures come back as a normal result with isError: true, per the MCP spec — so your client sees the message instead of a transport failure:
{
"jsonrpc": "2.0",
"id": 3,
"result": {
"isError": true,
"content": [{ "type": "text", "text": "Stage not found." }]
}
}Check result.isError before trusting a tool result. A 200 response does not on its own mean the call did what you asked.
Status codes
| Code | Meaning |
|---|---|
| 200 | Request reached a tool. Check isError for the outcome. |
| 404 | Endpoint not configured, or the token is not authorised. Deliberately indistinguishable. |
| 405 | Wrong method. The endpoint is POST-only; GET /api/mcp always returns this. |
Limits
- A pipeline takes between 1 and 25 stages. Larger plans need splitting across pipelines.
categoryis capped at 40 characters.- Dates are
YYYY-MM-DD. Pass an empty string to clear one rather than null. - Requests are stateless request/response. There is no server-to-client streaming.