Get the tenant's policy document
const url = 'https://example.com/v1/policy';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 \ --header 'Authorization: Bearer <token>'Returns the calling tenant’s current policy document. A tenant with no policy configured gets the empty/absent default (version: 0, no default/on_error, empty rules, no updated_at) rather than a 404 — no policy means zero behavior change (spec 0009).
Authorizations
Section titled “Authorizations”Responses
Section titled “Responses”The tenant’s policy document (or its empty default).
The GET /v1/policy response — the full document, or its empty default when unconfigured.
object
0 when the tenant has no policy configured.
One ordered entry in a policy document’s rule list, evaluated in order (spec 0009).
object
Conditions a rule matches an in-flight call against (spec 0009). Every populated field must match for the rule to apply; an absent/empty field is not a match condition (matches any value). tools is meaningless for protocol=http agents (route-level only).
object
Matches the calling agent’s ID. Absent/empty matches any agent.
Matches the parsed MCP tool name, supporting a single trailing * wildcard (e.g. read_*). Absent/empty matches any tool.
Matches when the request body size is at least this many bytes.
Matches when the caller’s observed rate exceeds this many requests per minute.
Absent when the tenant has no policy configured.
Example
{ "default": "allow", "on_error": "allow", "rules": [ { "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