Documentation
Error reference
The error codes the API and MCP server can return: what each one means and how to recover.
Errors are returned in a { error_code, message, details } envelope; the code is what to branch on.
Validation failed
validation_failedThe request shape was rejected: a field is missing, malformed, or out of range.
Recover: Fix the flagged field against the tool's input schema and retry.
Artifact not found
artifact_not_foundNo artifact resolved for the given id in this workspace.
Recover: Check the id; the envelope's details carry ranked suggestions of close matches you likely meant.
Invalid parent type
invalid_parent_typeThe parent you linked isn't an allowed parent for that child type; parenting is type-by-shape.
Recover: Read artifact_types (or hf://types) for the child's allowedParentTypes, pick a valid parent, and retry. Nothing was written.
Internal error
internal_errorAn unexpected server-side failure the caller can't correct.
Recover: Retry once; if it persists, report it via send_feedback with the request details.
Datastore degraded
datastore_degradedA read-only tool could not reach the datastore needed to answer accurately.
Recover: Retry shortly. Do not interpret the failed response as an empty result; the underlying facts were not read.
User declined
user_declinedA proposed change was declined or never applied.
Recover: Nothing landed. Revisit the proposal or adjust it before requesting another decision.
Workspace membership missing
workspace_membership_missingYou're authenticated but not a member of the target workspace (403, not 404; the workspace exists).
Recover: Use a workspace you belong to, or have an admin invite you.
Response too large
response_too_largeThe result exceeded the response cap and was withheld or degraded.
Recover: Narrow the request: add filters, lower the limit, page with offset, or pass a slimmer shape.
Rate limited
rate_limitedToo many requests in a short window.
Recover: Back off and retry after a short delay.
Stale base
stale_baseAn optimistic-concurrency conflict: the base you edited against had already moved on.
Recover: Re-read the current state and re-apply your change on top of it.
Workspace not found
workspace_not_foundThe workspace itself didn't resolve (distinct from missing membership).
Recover: Check the workspace id in the URL / pin; use a valid workspace.
Side effect failed
edge_side_effect_failedThe primary write succeeded but a declared side-effect didn't; the operation is retryable and convergent.
Recover: Re-issue the identical call; it keys off live state and completes the outstanding side-effect without duplicating the primary write.
Capability restricted
capability_restrictedYou're authenticated, but this operation isn't permitted for your execution context (the action verb is outside the proposable allowlist, or its payload doesn't fit the allowlist entry's contract).
Recover: Read the details: `restricting` names what scoped the refusal and `next_step` says whether to amend and resubmit, await review, or abandon.
Workspace read-only
workspace_read_onlyYou're a member of this workspace, but your role carries no write capability, so tools that mutate workspace content are refused. `details.tool` names the tool that was refused.
Recover: Don't retry and don't reshape the call — nothing about the request will change the outcome. Read tools still work. A workspace admin must grant write access.