Reference
Errors and limits
HTTP responses, tool errors, rate limits and how to retry safely.
Kinro reports problems in two places: HTTP status codes from the endpoint, before any tool runs, and tool results with isError: true, after a tool has run. In both cases the text says what happened and what to do next.
HTTP responses
| Status | Meaning | What to do |
|---|---|---|
200 | The JSON-RPC message was handled. Check the result for tool errors. | — |
400 | The body is not valid JSON, or it is a JSON-RPC batch. Batches are not supported. | Send one JSON-RPC message per HTTP request. |
403 | The request came from a web page in a browser. Browser origins are not supported. | Call the endpoint from your server or MCP client, not from page scripts. |
405 | The method was not POST. The server offers no event stream to GET. | Use POST. |
413 | The request body is larger than 30 MB. | Send fewer or smaller inline files per message. |
429 | Kinro's MCP endpoint is at capacity. | Wait for the number of seconds in the Retry-After header, then retry. |
503 | Kinro's MCP endpoint is temporarily unavailable. No tool ran. | Retry after a short wait. |
A 429 or 503 means the request was not processed, so retrying it is safe. Capacity is shared by all callers and measured over rolling windows; access reopens on its own.
Tool errors
| Situation | What the result says | What to do |
|---|---|---|
| No conversation | There is no conversation with Kinro yet. | Call ask_kinro with the user's message and no conversation_id, then reuse the ID it returns. |
| Still answering | Leo is still answering the previous message. | Call ask_kinro without a message to get the reply before sending another message. |
| Completion unknown | Leo's response could not be retrieved, and Kinro cannot confirm whether the message was handled. | Do not resend automatically. Check with ask_kinro without a message, then ask the user. |
| Document refused | Why a file was refused: type, size, encoding, source, or a daily limit. Nothing was sent. | Tell the user. Resend without the file if they want to continue. See Documents. |
| Paused | Kinro's connection for this app is paused, and the message was not sent. | Tell the user to try again later or contact Kinro at kinro.com. |
| Check failed | New messages could not be retrieved. | Check again shortly. |
Retrying safely
ask_kinrowith a message sends it each time it is called. Never retry it automatically, except after an HTTP429or503, which means nothing was sent.ask_kinrowithout a message sends nothing, but it delivers new messages once. Keep checks sequential and save their results; a lost response may not be recovered by checking again. See Conversations.- When Kinro says it is still working on your message, the message was received. Check with
ask_kinrowithout a message; do not resend.