Skip to main content

Authorize request/decision schema

See Authorize API for the full endpoint reference; this page is the schema detail.

AuthorizeRequest​

FieldTypeNotes
session_idstr
callerstr (max 255)agent://<name>, or user:<sub> at hop 1
targetstr (max 512)mcp://host/tool, or agent://<name>
data_classstr (max 128)Exactly one data class
taintTaint | nulltrusted_internal | untrusted_external
enforcedbool (default true)Reported by the caller; never affects the decision

There is deliberately no hop_count field — depth is derived from the presented token's verified act chain.

AuthorizeDecision​

FieldTypeNotes
outcome"allow" | "deny"
hopint (≥1)Derived from the verified act chain
policy_versionint
session_idstr
reasonDenyReason | nullPresent only on deny
recoverablebool | nullA property of the reason, not the call
targetstr | null
taintTaint | null
messagestr | nullHuman-readable; never the machine contract
action_idUUID | nullThe audit row this decision was recorded under
acting_agentstr | nullThe verified token holder
recordedbool (default true)Whether the audit row was committed before this response

DenyReason​

OUT_OF_SCOPE · HOP_BUDGET_EXCEEDED · EDGE_NOT_IN_DAG · SCOPE_NOT_CONSENTED · PDP_UNAVAILABLE · TOKEN_SERVICE_UNAVAILABLE · AUDIT_UNAVAILABLE

Every reason is classified as exactly one of Policy (OUT_OF_SCOPE, HOP_BUDGET_EXCEEDED, EDGE_NOT_IN_DAG, SCOPE_NOT_CONSENTED) or Infrastructure (PDP_UNAVAILABLE, TOKEN_SERVICE_UNAVAILABLE, AUDIT_UNAVAILABLE) — observe mode may let a policy reason through (that's its purpose) but must never let an infrastructure reason through, since that would forward an outage as if it were a policy prediction.