Read the tenant's recent policy decisions
const url = 'https://example.com/v1/policy/decisions?limit=20';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://example.com/v1/policy/decisions?limit=20' \ --header 'Authorization: Bearer <token>'Returns the calling tenant’s most-recent policy decisions (allow, warn, and deny), newest first — the audit-capture read side (spec 0009). Each row carries the action, the matched rule position, the coarse reason, and the agent/tool it applied to; a request body is never recorded (invariant #3). Tenant-scoped: a tenant only ever sees its own decisions.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Maximum decisions to return, newest first. Clamped to [1, 100]; defaults to 20.
Responses
Section titled “Responses”The tenant’s recent policy decisions.
The GET /v1/policy/decisions response — recent decisions, newest first.
object
One recorded policy decision (spec 0009 audit capture). reason is the coarse, rule-position explanation — never call content (invariant #3).
object
The pdec_<uuidv7> decision ID (opaque).
The agent the decision applied to.
The agent’s protocol (e.g. mcp, http).
The parsed MCP tool the decision applied to; null for protocol=http calls.
The 1-based position of the rule that produced the action, or empty when it came from default/on_error.
A coarse explanation of the action.
The effective limit applied to this response.
Example
{ "data": [ { "action": "allow" } ]}Missing or invalid bearer token, or the token’s tenant/user claims are absent. No body.
An unexpected server-side error. No body (internal detail is never returned to callers, invariant