code is the stable contract — branch on it, not on message wording.
details is optional context (offending field, retry_after seconds,
required_scope, …).
Over MCP, errors arrive as tool errors whose text is CODE: message, so
agents get the same signal and can branch on the same codes.
General codes
Confirm-token codes
Returned by the three execute operations. See Write actions and confirmation.Write rule codes
Rejections that come from the rules of the action itself.Real examples
401 — no key (captured live):401 responses carry a
WWW-Authenticate: Bearer realm="seesaw-open-api" header.
Depending on the network path it may arrive under the name
x-amzn-remapped-www-authenticate — match either when debugging.write scope rather
than looking for an upgrade endpoint. See
Authentication.
409 — reusing a spent token (captured live):
404 semantics worth knowing
A 404 does not distinguish between “never existed”, “hidden by the owner’s privacy settings”, and “removed by moderation” — deliberately. Don’t retry 404s; surface them as “not available”.Preview reasons are not errors
When a preview returnscan_place / can_publish / can_back as false, the
call succeeded (HTTP 200). The blocking condition is in reason and the
summary still carries real numbers, so you can explain the situation to the user
instead of reporting a failure. No confirm_token is issued.