🧠KNOA🏠Life🌐Market

Developers

Errors

Errors come in layers. Each table is the closed set the code emits.

Protocol codesEarly access

The ARK Record Protocol actions answer an HTTP status and a body of the form {"error": code, "message": text}. Over MCP the same code comes back as the tool result text with isError set.

CodeHTTPJSON-RPCRetryCode sent by
schema_invalid400noneDo not retry; fix the requestREST and MCP
hash_mismatch400noneDo not retry; fix the requestREST and MCP
grant_scope403noneDo not retry; fix the requestREST and MCP
subject_reserved403noneDo not retry; fix the requestREST and MCP
verbatim_required400noneDo not retry; fix the requestREST and MCP
quota_exceeded429noneRetry after a backoffREST and MCP
ingestion_capnonenoneRetry after a backoffREST and MCP
contradicted_pending_reviewnonenoneDo not retry; fix the requestREST and MCP
scope_missing403noneDo not retry; fix the requestREST and MCP
not_found404noneDo not retry; fix the requestREST and MCP
filter_invalid400noneDo not retry; fix the requestREST and MCP
not_enabled403noneDo not retry; fix the requestREST and MCP
invalid_input400noneDo not retry; fix the requestREST and MCP
invalid_cursor400noneDo not retry; fix the requestREST and MCP
not_stored503noneResend the same request; dedupe makes it safeREST and MCP

Gateway refusals

Both gateways refuse a request before any action runs when the credential, the size, the method or the call limit is wrong. The MCP gateway sends the code below; the REST gateway sends an HTTP status and a plain message for most of them, so switch on the status over REST.

CodeHTTPJSON-RPCRetryCode sent by
unauthorized401noneDo not retry; fix the requestMCP (REST sends a status and a message)
forbidden403noneDo not retry; fix the requestMCP (REST sends a status and a message)
rate_limited429noneRetry after a backoffMCP (REST sends a status and a message)
payload_too_large413noneDo not retry; fix the requestMCP (REST sends a status and a message)
method_not_allowed405noneDo not retry; fix the requestMCP (REST sends a status and a message)
unsupported_protocol_version400noneDo not retry; fix the requestMCP (REST sends a status and a message)
server_error500noneRetry after a backoffMCP (REST sends a status and a message)
source_key_forbidden403noneDo not retry; fix the requestREST and MCP
not_recorded503noneResend the same request; dedupe makes it safeREST and MCP
entitlement_revoked401noneDo not retry; fix the requestREST and MCP
master_dormant403noneDo not retry; fix the requestREST and MCP

Over REST the gateway refusals marked MCP are sent as an HTTP status and a plain message ({"error": "<message>"}: 401 for a missing or invalid credential, 405, 429 for the call limit, 500); source_key_forbidden and the entitlement codes arrive in a code field beside the message. Switch on the HTTP status over REST, on the code over MCP.

MCP JSON-RPC codes

The MCP server answers a malformed call with a JSON-RPC error object. A tool that runs and fails answers a normal result with isError true: a live tool's text starts with "Error:"; a protocol tool's text is the same JSON body REST would send, {"error": "<code>", "message": "..."}.

CodeHTTPJSON-RPCRetryCode sent by
parse_error400-32700Do not retry; fix the requestMCP (REST sends a status and a message)
invalid_requestnone-32600Do not retry; fix the requestMCP (REST sends a status and a message)
method_not_foundnone-32601Do not retry; fix the requestMCP (REST sends a status and a message)
invalid_paramsnone-32602Do not retry; fix the requestMCP (REST sends a status and a message)
internal_error500-32603Retry after a backoffMCP (REST sends a status and a message)
source_key_forbiddennone-32003Do not retry; fix the requestMCP (REST sends a status and a message)
not_recordednone-32000Resend the same request; dedupe makes it safeMCP (REST sends a status and a message)

The live actionsLive

get_ark_profile, search_ark_topics and ask_ark answer an HTTP status and a plain message, {"error": message}, with no code. Over MCP the message comes back as isError text. Retry a 429 or a 5xx after a backoff; fix the request for a 4xx.

duplicate is a result, not an errorEarly access

A proposal your source already sent answers HTTP 200 with status duplicate and duplicate_of naming the first proposal. Nothing new is stored and no quota is used twice. Treat it as success.

Licensed for use, not for copying: you may not use this ARK's output to train, build or populate another ARK, model or dataset.

Your wallet on this device

Your wallet is not currently authenticated on this new device. Authenticate now or later?

Your wallet, your choice

Create a wallet in ARKZ or use one you already own. Connecting proves ownership and moves no funds.

Sign in to continue