MCP tool schemas
This page is the consolidated input/output reference for the nine Metatate Cloud MCP tools. Every input and output key is snake_case; each tool also accepts a 1:1 hyphenated protocol alias (authorize-use for authorize_use, and so on — underscores replaced by hyphens, nothing more). The server speaks MCP over HTTP and authenticates every request with a bearer workspace access token; see Connect an agent. Each accepted tool invocation consumes exactly one metered MCP call, charged before any read — inputs refused before parsing (invalid_parameters, insufficient_scope) are not metered.
Schemas below are JSON-Schema-style renderings of the server's validators. Inputs are strict: unknown keys are rejected. Outputs of decision-bearing tools are discriminated unions on state — see Typed answer states.
Tools, scopes, and annotationsDirect link to Tools, scopes, and annotations
| Tool | Alias | Required scope | Annotations | Side effects |
|---|---|---|---|---|
discover_context | discover-context | read | readOnlyHint: true | None |
get_decision_context | get-decision-context | read | readOnlyHint: true | None |
inspect_data_meaning | inspect-data-meaning | read | readOnlyHint: true | None |
inspect_governance_rules | inspect-governance-rules | read | readOnlyHint: true | None |
authorize_use | authorize-use | read | readOnlyHint: true | Writes a durable decision record |
validate_query_context | validate-query-context | read | readOnlyHint: true | Writes a durable decision record |
explain_why | explain-why | read | readOnlyHint: true | None |
request_access | request-access | request | readOnlyHint: false, destructiveHint: false, idempotentHint: true | Writes a workflow request row |
check_request | check-request | read | readOnlyHint: true | None |
No tool can modify governance state — policies, instructions, publications, and served decision rows are never written by a tool call. A tool whose required scope the token lacks is refused with insufficient_scope before its input is parsed.
These schemas describe the deployed endpoint, where the ledger identifiers (authorization_id, validation_id, finding_id) are always present: the durable evidence write is awaited, and a failure fails the call rather than returning an uncitable answer. The in-app workbench preview shares the same schemas but mints no ledger record, so those identifiers are absent there.
Per-tool behavior lives on the tool pages: discover_context, get_decision_context, inspect_data_meaning, inspect_governance_rules, authorize_use, validate_query_context, explain_why, request_access, check_request.
Shared shapesDirect link to Shared shapes
The tool schemas below reference these definitions via #/$defs/.... They are defined once here.
{
"$defs": {
"identifier": { "type": "string", "minLength": 1, "maxLength": 255 },
"uuid": { "type": "string", "format": "uuid" },
"scenario_key": {
"type": "string",
"description": "One of the 65 canonical scenario keys, e.g. access.read, masking.display, ai.training, ai.inference, purpose.allowed_use, purpose.prohibited_use, residency.cross_border_transfer."
},
"scenario_lane": { "type": "string", "enum": ["platform", "agent", "human"] },
"instruction_decision": {
"type": "string",
"enum": ["allow", "deny", "mask_full", "mask_partial", "require_review", "log_only", "retain", "conditional"]
},
"transfer_token": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^[A-Za-z0-9][A-Za-z0-9 _.-]*$"
},
"purpose_key": {
"type": "string",
"description": "One of the 16 registry purpose keys: analytics.reporting, operations.support, fraud.detection, compliance.reporting, compliance.audit, marketing.advertising, marketing.personalization, ai.training, ai.evaluation, ai.inference, ai.third_party_export, sharing.external, sharing.third_party, security.incident_response, research.general, commercial.general. Exact match only — no normalization of this input."
},
"purpose_category": {
"type": "string",
"enum": ["analytics", "operations", "fraud", "compliance", "marketing", "ai", "sharing", "security", "research", "commercial", "custom"]
},
"purpose_context": {
"type": "object",
"additionalProperties": false,
"required": ["purpose_key", "purpose_category", "registry_version"],
"properties": {
"purpose_key": { "$ref": "#/$defs/purpose_key" },
"purpose_category": { "$ref": "#/$defs/purpose_category" },
"registry_version": { "type": "integer", "minimum": 1, "maximum": 32767 }
}
},
"on_behalf_of": {
"type": "string",
"description": "Trimmed, single-line, 1-320 Unicode code points; control characters and line/paragraph separators rejected. Audit metadata only — decision-neutral, and never echoed into any output."
},
"data_access_context": {
"type": "object",
"additionalProperties": false,
"required": ["as_of"],
"properties": {
"as_of": { "type": "string", "format": "date-time" }
}
},
"evaluation_provenance": {
"description": "Carried by every authorize_use and validate_query_context payload, in all three states.",
"type": "object",
"required": ["evaluated_at", "evaluated_purpose", "evaluated_actor_role"],
"properties": {
"evaluated_at": { "type": "string", "minLength": 20, "maxLength": 64 },
"evaluated_purpose": { "anyOf": [{ "$ref": "#/$defs/purpose_context" }, { "type": "null" }] },
"evaluated_actor_role": { "type": ["string", "null"], "minLength": 1, "maxLength": 64 }
}
},
"obligation_projection": {
"description": "Read-only typed projection of a source rule's served parameters. Nested config/rules payloads carry the authored policy DSL verbatim. aggregate_only is reserved and never emitted.",
"oneOf": [
{
"type": "object",
"additionalProperties": false,
"required": ["kind", "method", "config", "exempt_roles"],
"properties": {
"kind": { "const": "mask" },
"method": { "type": ["string", "null"], "minLength": 1, "maxLength": 128 },
"config": { "type": "object" },
"exempt_roles": { "type": "array", "items": { "type": "string", "minLength": 1, "maxLength": 255 } }
}
},
{
"type": "object",
"additionalProperties": false,
"required": ["kind", "period", "trigger", "action"],
"properties": {
"kind": { "const": "retain" },
"period": { "type": ["string", "null"], "minLength": 1, "maxLength": 128 },
"trigger": { "type": ["string", "null"], "minLength": 1, "maxLength": 128 },
"action": { "type": ["string", "null"], "minLength": 1, "maxLength": 128 }
}
},
{
"type": "object",
"additionalProperties": false,
"required": ["kind", "rules"],
"properties": {
"kind": { "const": "row_filter" },
"rules": { "type": "array", "items": { "type": "object" } }
}
},
{
"type": "object",
"additionalProperties": false,
"required": ["kind", "requires_anonymization", "restrictions"],
"properties": {
"kind": { "const": "ai" },
"requires_anonymization": { "type": "boolean" },
"restrictions": { "type": "array", "items": { "type": "string", "minLength": 1, "maxLength": 512 } }
}
}
]
},
"satisfied_condition_echo": {
"type": "object",
"additionalProperties": false,
"required": ["kind", "exception_id", "result"],
"properties": {
"kind": { "const": "approval" },
"exception_id": { "$ref": "#/$defs/uuid" },
"result": { "type": "string", "enum": ["verified", "not_verified"] }
}
},
"satisfied_exception": {
"type": "object",
"additionalProperties": false,
"required": ["exception_id", "expires_at"],
"properties": {
"exception_id": { "$ref": "#/$defs/uuid" },
"expires_at": { "type": "string", "minLength": 1, "maxLength": 64 }
}
},
"ledger_provenance": {
"type": "object",
"additionalProperties": false,
"required": ["evaluated_at", "evaluator_version", "envelope_version", "actor", "publication"],
"properties": {
"evaluated_at": { "type": "string", "minLength": 1, "maxLength": 64 },
"evaluator_version": { "type": "string", "minLength": 1, "maxLength": 64 },
"envelope_version": { "type": "integer", "minimum": 1 },
"actor": {
"type": "object",
"additionalProperties": false,
"required": ["kind", "name", "bound_role"],
"properties": {
"kind": { "type": ["string", "null"], "minLength": 1, "maxLength": 64 },
"name": { "type": "string", "minLength": 1, "maxLength": 100 },
"bound_role": { "type": ["string", "null"], "minLength": 1, "maxLength": 64 }
}
},
"publication": {
"anyOf": [
{
"type": "object",
"additionalProperties": false,
"required": ["publication_id", "published_at", "is_current"],
"properties": {
"publication_id": { "$ref": "#/$defs/uuid" },
"published_at": { "type": ["string", "null"], "minLength": 1, "maxLength": 64 },
"is_current": { "type": "boolean" }
}
},
{ "type": "null" }
]
}
}
},
"asset_ref": {
"type": "object",
"additionalProperties": false,
"required": ["database", "schema", "table"],
"properties": {
"database": { "$ref": "#/$defs/identifier" },
"schema": { "$ref": "#/$defs/identifier" },
"table": { "$ref": "#/$defs/identifier" },
"column": { "$ref": "#/$defs/identifier" }
}
},
"asset_scope": {
"type": "object",
"additionalProperties": false,
"required": ["database", "schema", "table", "column"],
"properties": {
"database": { "$ref": "#/$defs/identifier" },
"schema": { "$ref": "#/$defs/identifier" },
"table": { "$ref": "#/$defs/identifier" },
"column": { "anyOf": [{ "$ref": "#/$defs/identifier" }, { "type": "null" }] }
}
},
"publication": {
"type": "object",
"additionalProperties": false,
"required": ["publication_id", "published_at"],
"properties": {
"publication_id": { "$ref": "#/$defs/uuid" },
"published_at": { "type": "string", "minLength": 1, "maxLength": 64 }
}
},
"provenance": {
"type": "object",
"additionalProperties": false,
"required": ["policy_id", "policy_version_id", "policy_name", "version_number"],
"properties": {
"policy_id": { "$ref": "#/$defs/uuid" },
"policy_version_id": { "$ref": "#/$defs/uuid" },
"policy_name": { "type": "string", "minLength": 1, "maxLength": 64 },
"version_number": { "type": "integer", "minimum": 1 }
}
},
"resolution_path": {
"type": "object",
"additionalProperties": false,
"required": ["source", "ref"],
"properties": {
"source": { "type": "string", "enum": ["selector", "collection", "taxonomy"] },
"ref": { "type": ["string", "null"], "minLength": 1, "maxLength": 255 }
}
},
"conflict_ref": {
"type": "object",
"additionalProperties": false,
"required": ["policy_version_id", "instruction_key", "decision"],
"properties": {
"policy_version_id": { "type": ["string", "null"], "minLength": 1, "maxLength": 128 },
"instruction_key": { "type": ["string", "null"], "minLength": 1, "maxLength": 256 },
"decision": { "$ref": "#/$defs/instruction_decision" }
}
},
"instruction_record": {
"type": "object",
"additionalProperties": false,
"required": [
"decision_id", "instruction_key", "instruction_family", "scenario_key",
"scenario_lane", "category", "priority", "weight", "enforcement_mode",
"decision", "decision_reason", "parameters", "effective_from", "effective_until",
"scope", "provenance", "primary_resolution_source", "resolution_paths",
"conflict_status", "conflict_group_id", "conflicts_with"
],
"properties": {
"decision_id": { "$ref": "#/$defs/uuid" },
"instruction_key": { "type": "string", "minLength": 1, "maxLength": 256 },
"instruction_family": { "type": "string", "minLength": 1, "maxLength": 64 },
"scenario_key": { "$ref": "#/$defs/scenario_key" },
"scenario_lane": { "$ref": "#/$defs/scenario_lane" },
"category": { "type": "string", "enum": ["enforceable", "advisory"] },
"priority": { "type": "integer", "minimum": 0, "maximum": 3 },
"weight": { "type": "number", "minimum": 0 },
"enforcement_mode": { "type": "string", "enum": ["enforce", "monitor", "advisory"] },
"decision": { "$ref": "#/$defs/instruction_decision" },
"decision_reason": { "type": "string", "minLength": 1, "maxLength": 2000 },
"parameters": {
"type": "object",
"description": "Extracted policy DSL parameters served verbatim. Keys inside follow the authoring-side policy DSL — the documented exemption from the snake_case wire convention."
},
"scope": { "$ref": "#/$defs/asset_scope" },
"provenance": { "$ref": "#/$defs/provenance" },
"effective_from": { "type": ["string", "null"], "minLength": 1, "maxLength": 64 },
"effective_until": { "type": ["string", "null"], "minLength": 1, "maxLength": 64 },
"primary_resolution_source": { "type": "string", "enum": ["selector", "collection", "taxonomy"] },
"resolution_paths": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/resolution_path" } },
"conflict_status": { "type": "string", "enum": ["none", "conflicted"] },
"conflict_group_id": { "anyOf": [{ "$ref": "#/$defs/uuid" }, { "type": "null" }] },
"conflicts_with": { "type": "array", "items": { "$ref": "#/$defs/conflict_ref" } }
}
},
"conflict_group": {
"type": "object",
"additionalProperties": false,
"required": ["group_id", "sources"],
"properties": {
"group_id": { "anyOf": [{ "$ref": "#/$defs/uuid" }, { "type": "null" }] },
"sources": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/instruction_record" } }
}
},
"context_facts": {
"type": "object",
"additionalProperties": false,
"required": ["sensitivity", "category", "subcategory", "pii", "masking"],
"properties": {
"sensitivity": { "type": ["string", "null"], "minLength": 1, "maxLength": 64 },
"category": { "type": ["string", "null"], "minLength": 1, "maxLength": 255 },
"subcategory": { "type": ["string", "null"], "minLength": 1, "maxLength": 255 },
"pii": { "type": "boolean" },
"masking": {
"anyOf": [
{
"type": "object",
"additionalProperties": false,
"required": ["type", "exempt_roles"],
"properties": {
"type": { "type": "string", "minLength": 1, "maxLength": 255 },
"exempt_roles": { "type": "array", "items": { "type": "string", "minLength": 1, "maxLength": 255 } }
}
},
{ "type": "null" }
]
}
}
},
"unresolved_target": {
"type": "object",
"additionalProperties": false,
"required": ["policy_name", "instruction_key", "kind", "ref", "reason"],
"properties": {
"policy_name": { "type": "string", "minLength": 1, "maxLength": 64 },
"instruction_key": { "type": ["string", "null"], "minLength": 1, "maxLength": 256 },
"kind": { "type": "string", "enum": ["selector", "collection", "taxonomy"] },
"ref": { "type": "string", "minLength": 1, "maxLength": 255 },
"reason": { "type": "string", "enum": ["no_match", "empty_collection", "unknown_type", "stale_member"] }
}
},
"not_enough_reason_code": {
"type": "string",
"enum": ["no_current_publication", "no_published_instruction_state", "unresolved_published_target", "scenario_unresolved", "not_currently_effective"]
},
"review_reason_code": {
"type": "string",
"enum": ["decision_requires_review", "conflicted_published_state"]
},
"next_actions": {
"type": "array",
"items": { "type": "string", "minLength": 1, "maxLength": 256 }
}
}
}
discover_contextDirect link to discover_context
Alias discover-context. All filters are evaluated against published serving state; results page through a publication-pinned cursor. Deliberately validity-blind — it reports published coverage, not current effectiveness.
Input:
{
"type": "object",
"additionalProperties": false,
"required": [],
"properties": {
"database": { "$ref": "#/$defs/identifier" },
"schema": { "$ref": "#/$defs/identifier" },
"domain": { "$ref": "#/$defs/identifier" },
"sensitivity": { "type": "string", "enum": ["public", "internal", "confidential", "restricted"] },
"pii": { "type": "boolean" },
"compliance_tag": { "type": "string", "minLength": 1, "maxLength": 255 },
"limit": { "type": "integer", "minimum": 1, "maximum": 200, "default": 100 },
"cursor": { "$ref": "#/$defs/discover_cursor" }
},
"$defs": {
"discover_cursor": {
"description": "Opaque. Pass next_cursor back verbatim and RESEND the same filters — the cursor pins the publication and position, not the filter set.",
"type": "object",
"additionalProperties": false,
"required": ["publication_id", "last_asset_key"],
"properties": {
"publication_id": { "$ref": "#/$defs/uuid" },
"last_asset_key": { "type": "string", "minLength": 1, "maxLength": 6136 }
}
}
}
}
An out-of-range limit is rejected with invalid_parameters, never clamped. A malformed cursor is invalid_parameters; a well-formed cursor that is unknown, foreign-workspace, or publication-mismatched is cursor_expired.
Output:
{
"oneOf": [
{
"title": "answered",
"type": "object",
"additionalProperties": false,
"required": ["state", "assets", "publication", "next_cursor"],
"properties": {
"state": { "const": "answered" },
"assets": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": ["ref", "instruction_count", "scenario_keys"],
"properties": {
"ref": { "$ref": "#/$defs/asset_scope" },
"instruction_count": { "type": "integer", "minimum": 0 },
"scenario_keys": { "type": "array", "items": { "$ref": "#/$defs/scenario_key" } }
}
}
},
"publication": { "$ref": "#/$defs/publication" },
"next_cursor": { "anyOf": [{ "$ref": "#/$defs/discover_cursor" }, { "type": "null" }] }
}
},
{
"title": "not_enough_published_state",
"type": "object",
"additionalProperties": false,
"required": ["state", "reason_code", "message", "unresolved_targets", "next_actions"],
"properties": {
"state": { "const": "not_enough_published_state" },
"reason_code": { "$ref": "#/$defs/not_enough_reason_code" },
"message": { "type": "string", "minLength": 1, "maxLength": 300 },
"unresolved_targets": { "type": "array", "items": { "$ref": "#/$defs/unresolved_target" } },
"next_actions": { "$ref": "#/$defs/next_actions" }
}
}
]
}
get_decision_contextDirect link to get_decision_context
Alias get-decision-context. At least one of asset or proposed_use is required; proposed_use without an asset answers not_supported. Every state carries evaluated_at (the instant validity windows were filtered at). Rules are served un-substituted — no purpose or actor evaluation — so this tool takes no purpose_key.
Input:
{
"type": "object",
"additionalProperties": false,
"anyOf": [{ "required": ["asset"] }, { "required": ["proposed_use"] }],
"properties": {
"asset": { "$ref": "#/$defs/asset_ref" },
"proposed_use": { "type": "string", "minLength": 1, "maxLength": 2000 },
"scenario_key": { "$ref": "#/$defs/scenario_key" }
}
}
Output:
{
"oneOf": [
{
"title": "answered",
"type": "object",
"additionalProperties": false,
"required": ["state", "asset", "scenario_key", "decisions", "effective_decision", "business_context", "publication", "evaluated_at"],
"properties": {
"state": { "const": "answered" },
"asset": { "$ref": "#/$defs/asset_scope" },
"scenario_key": { "anyOf": [{ "$ref": "#/$defs/scenario_key" }, { "type": "null" }] },
"decisions": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/instruction_record" } },
"effective_decision": { "$ref": "#/$defs/instruction_decision" },
"business_context": {
"anyOf": [
{
"type": "object",
"additionalProperties": false,
"required": ["owner", "steward", "domain", "purpose"],
"properties": {
"owner": { "type": ["string", "null"], "minLength": 1, "maxLength": 255 },
"steward": { "type": ["string", "null"], "minLength": 1, "maxLength": 255 },
"domain": { "type": ["string", "null"], "minLength": 1, "maxLength": 255 },
"purpose": { "type": ["string", "null"], "minLength": 1, "maxLength": 2000 }
}
},
{ "type": "null" }
]
},
"publication": { "$ref": "#/$defs/publication" },
"evaluated_at": { "type": "string", "minLength": 20, "maxLength": 64 }
}
},
{
"title": "review_required",
"type": "object",
"additionalProperties": false,
"required": ["state", "reason_code", "asset", "scenario_key", "decisions", "conflict", "next_actions", "publication", "evaluated_at"],
"properties": {
"state": { "const": "review_required" },
"reason_code": { "$ref": "#/$defs/review_reason_code" },
"asset": { "$ref": "#/$defs/asset_scope" },
"scenario_key": { "anyOf": [{ "$ref": "#/$defs/scenario_key" }, { "type": "null" }] },
"decisions": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/instruction_record" } },
"conflict": { "anyOf": [{ "$ref": "#/$defs/conflict_group" }, { "type": "null" }] },
"next_actions": { "$ref": "#/$defs/next_actions" },
"publication": { "$ref": "#/$defs/publication" },
"evaluated_at": { "type": "string", "minLength": 20, "maxLength": 64 }
}
},
{
"title": "not_enough_published_state",
"type": "object",
"additionalProperties": false,
"required": ["state", "reason_code", "message", "unresolved_targets", "next_actions", "asset", "scenario_key", "evaluated_at"],
"properties": {
"state": { "const": "not_enough_published_state" },
"reason_code": { "$ref": "#/$defs/not_enough_reason_code" },
"message": { "type": "string", "minLength": 1, "maxLength": 300 },
"unresolved_targets": { "type": "array", "items": { "$ref": "#/$defs/unresolved_target" } },
"next_actions": { "$ref": "#/$defs/next_actions" },
"asset": { "$ref": "#/$defs/asset_scope" },
"scenario_key": { "anyOf": [{ "$ref": "#/$defs/scenario_key" }, { "type": "null" }] },
"evaluated_at": { "type": "string", "minLength": 20, "maxLength": 64 }
}
}
]
}
inspect_data_meaningDirect link to inspect_data_meaning
Alias inspect-data-meaning. Returns published facts, not a decision — the output is a single object with no state field. An unresolvable ref is an asset_not_found error.
Input:
{
"type": "object",
"additionalProperties": false,
"required": ["ref"],
"properties": {
"ref": { "$ref": "#/$defs/asset_ref" }
}
}
Output:
{
"type": "object",
"additionalProperties": false,
"required": ["ref", "meaning", "data_type", "classification", "pii", "masking"],
"properties": {
"ref": { "$ref": "#/$defs/asset_scope" },
"meaning": { "type": ["string", "null"], "minLength": 1, "maxLength": 4000 },
"data_type": { "anyOf": [{ "$ref": "#/$defs/identifier" }, { "type": "null" }] },
"classification": {
"anyOf": [
{
"type": "object",
"additionalProperties": false,
"required": ["sensitivity", "category", "subcategory"],
"properties": {
"sensitivity": { "type": "string", "enum": ["public", "internal", "confidential", "restricted"] },
"category": { "$ref": "#/$defs/identifier" },
"subcategory": { "anyOf": [{ "$ref": "#/$defs/identifier" }, { "type": "null" }] }
}
},
{ "type": "null" }
]
},
"pii": { "type": "boolean" },
"masking": {
"anyOf": [
{
"type": "object",
"additionalProperties": false,
"required": ["type", "exempt_roles"],
"properties": {
"type": { "$ref": "#/$defs/identifier" },
"exempt_roles": { "type": "array", "items": { "$ref": "#/$defs/identifier" } }
}
},
{ "type": "null" }
]
}
}
}
inspect_governance_rulesDirect link to inspect_governance_rules
Alias inspect-governance-rules. Every state carries evaluated_at. Rules are served un-substituted — the authored rules, with no purpose or actor evaluation.
Input:
{
"type": "object",
"additionalProperties": false,
"required": ["asset"],
"properties": {
"asset": { "$ref": "#/$defs/asset_ref" },
"scenario_key": { "$ref": "#/$defs/scenario_key" }
}
}
Output:
{
"oneOf": [
{
"title": "answered",
"type": "object",
"additionalProperties": false,
"required": ["state", "asset", "scenario_key", "rules", "publication", "evaluated_at"],
"properties": {
"state": { "const": "answered" },
"asset": { "$ref": "#/$defs/asset_scope" },
"scenario_key": { "anyOf": [{ "$ref": "#/$defs/scenario_key" }, { "type": "null" }] },
"rules": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/instruction_record" } },
"publication": { "$ref": "#/$defs/publication" },
"evaluated_at": { "type": "string", "minLength": 20, "maxLength": 64 }
}
},
{
"title": "review_required",
"type": "object",
"additionalProperties": false,
"required": ["state", "reason_code", "asset", "scenario_key", "rules", "conflict", "next_actions", "publication", "evaluated_at"],
"properties": {
"state": { "const": "review_required" },
"reason_code": { "$ref": "#/$defs/review_reason_code" },
"asset": { "$ref": "#/$defs/asset_scope" },
"scenario_key": { "anyOf": [{ "$ref": "#/$defs/scenario_key" }, { "type": "null" }] },
"rules": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/instruction_record" } },
"conflict": { "anyOf": [{ "$ref": "#/$defs/conflict_group" }, { "type": "null" }] },
"next_actions": { "$ref": "#/$defs/next_actions" },
"publication": { "$ref": "#/$defs/publication" },
"evaluated_at": { "type": "string", "minLength": 20, "maxLength": 64 }
}
},
{
"title": "not_enough_published_state",
"type": "object",
"additionalProperties": false,
"required": ["state", "reason_code", "message", "unresolved_targets", "next_actions", "asset", "scenario_key", "evaluated_at"],
"properties": {
"state": { "const": "not_enough_published_state" },
"reason_code": { "$ref": "#/$defs/not_enough_reason_code" },
"message": { "type": "string", "minLength": 1, "maxLength": 300 },
"unresolved_targets": { "type": "array", "items": { "$ref": "#/$defs/unresolved_target" } },
"next_actions": { "$ref": "#/$defs/next_actions" },
"asset": { "$ref": "#/$defs/asset_scope" },
"scenario_key": { "anyOf": [{ "$ref": "#/$defs/scenario_key" }, { "type": "null" }] },
"evaluated_at": { "type": "string", "minLength": 20, "maxLength": 64 }
}
}
]
}
authorize_useDirect link to authorize_use
Alias authorize-use. destination requires at least one of system or jurisdiction when present. There is deliberately no role input and no caller-asserted anonymization flag.
Input:
{
"type": "object",
"additionalProperties": false,
"required": ["asset", "use"],
"properties": {
"asset": { "$ref": "#/$defs/asset_ref" },
"scenario_key": { "$ref": "#/$defs/scenario_key" },
"use": { "type": "string", "minLength": 1, "maxLength": 2000 },
"purpose_key": { "$ref": "#/$defs/purpose_key" },
"data_access_context": { "$ref": "#/$defs/data_access_context" },
"on_behalf_of": { "$ref": "#/$defs/on_behalf_of" },
"satisfied_conditions": {
"type": "array",
"minItems": 1,
"maxItems": 8,
"description": "Duplicate exception_id entries are rejected. Every entry is server-verified (subject, liveness, scope) before any condition is satisfied.",
"items": {
"type": "object",
"additionalProperties": false,
"required": ["kind", "exception_id"],
"properties": {
"kind": { "const": "approval" },
"exception_id": { "$ref": "#/$defs/uuid" }
}
}
},
"operation": { "$ref": "#/$defs/transfer_token" },
"destination": {
"type": "object",
"additionalProperties": false,
"anyOf": [{ "required": ["system"] }, { "required": ["jurisdiction"] }],
"properties": {
"system": { "$ref": "#/$defs/transfer_token" },
"jurisdiction": { "$ref": "#/$defs/transfer_token" }
}
},
"consumer_jurisdiction": { "$ref": "#/$defs/transfer_token" }
}
}
Output. All three variants carry advisory: true, authorization_id, the three evaluation_provenance fields, and the satisfied_conditions echo:
{
"oneOf": [
{
"title": "answered",
"type": "object",
"additionalProperties": false,
"required": [
"state", "advisory", "authorization_id", "decision", "decision_id", "reason",
"scenario_key", "scenario_lane", "asset", "instructions", "context_facts",
"obligations", "conditions", "prohibitions", "next_actions", "can_proceed_now",
"satisfied_conditions", "satisfied_exceptions", "publication",
"evaluated_at", "evaluated_purpose", "evaluated_actor_role"
],
"properties": {
"state": { "const": "answered" },
"advisory": { "const": true },
"authorization_id": { "$ref": "#/$defs/uuid" },
"decision": { "$ref": "#/$defs/instruction_decision" },
"decision_id": { "$ref": "#/$defs/uuid" },
"reason": { "type": "string", "minLength": 1, "maxLength": 2000 },
"scenario_key": { "$ref": "#/$defs/scenario_key" },
"scenario_lane": { "$ref": "#/$defs/scenario_lane" },
"asset": { "$ref": "#/$defs/asset_scope" },
"instructions": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/instruction_record" } },
"context_facts": { "anyOf": [{ "$ref": "#/$defs/context_facts" }, { "type": "null" }] },
"obligations": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": ["type", "target", "method", "required_by_policy", "projection"],
"properties": {
"type": { "type": "string", "enum": ["mask", "retain"] },
"target": { "type": "string", "minLength": 1, "maxLength": 512 },
"method": { "type": ["string", "null"], "minLength": 1, "maxLength": 128 },
"required_by_policy": { "type": "string", "minLength": 1, "maxLength": 64 },
"projection": { "anyOf": [{ "$ref": "#/$defs/obligation_projection" }, { "type": "null" }] }
}
}
},
"conditions": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": ["kind", "required_role", "requirement", "satisfied_by", "required_by_policy", "satisfied", "satisfied_by_exception_id", "projection"],
"properties": {
"kind": { "type": "string", "enum": ["approval_required", "anonymize_first", "role_restricted", "ai_restriction"] },
"required_role": { "type": ["string", "null"], "minLength": 1, "maxLength": 255 },
"requirement": { "type": "string", "minLength": 1, "maxLength": 512 },
"satisfied_by": { "type": ["string", "null"], "minLength": 1, "maxLength": 512 },
"required_by_policy": { "type": "string", "minLength": 1, "maxLength": 64 },
"satisfied": { "type": "boolean" },
"satisfied_by_exception_id": { "anyOf": [{ "$ref": "#/$defs/uuid" }, { "type": "null" }] },
"projection": { "anyOf": [{ "$ref": "#/$defs/obligation_projection" }, { "type": "null" }] }
}
}
},
"prohibitions": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": ["source", "detail", "required_by_policy"],
"properties": {
"source": { "type": "string", "enum": ["deny_decision", "prohibited_use", "ai_governance"] },
"detail": { "type": "string", "minLength": 1, "maxLength": 512 },
"required_by_policy": { "type": "string", "minLength": 1, "maxLength": 64 }
}
}
},
"next_actions": { "$ref": "#/$defs/next_actions" },
"can_proceed_now": { "type": "boolean" },
"satisfied_conditions": { "type": "array", "maxItems": 8, "items": { "$ref": "#/$defs/satisfied_condition_echo" } },
"satisfied_exceptions": { "type": "array", "maxItems": 8, "items": { "$ref": "#/$defs/satisfied_exception" } },
"publication": { "$ref": "#/$defs/publication" },
"evaluated_at": { "type": "string", "minLength": 20, "maxLength": 64 },
"evaluated_purpose": { "anyOf": [{ "$ref": "#/$defs/purpose_context" }, { "type": "null" }] },
"evaluated_actor_role": { "type": ["string", "null"], "minLength": 1, "maxLength": 64 }
}
},
{
"title": "review_required",
"type": "object",
"additionalProperties": false,
"required": [
"state", "advisory", "authorization_id", "reason_code", "decision", "reason",
"scenario_key", "scenario_lane", "asset", "instructions", "conflict", "context_facts",
"next_actions", "conditions", "can_proceed_now", "satisfied_conditions",
"satisfied_exceptions", "publication",
"evaluated_at", "evaluated_purpose", "evaluated_actor_role"
],
"properties": {
"state": { "const": "review_required" },
"advisory": { "const": true },
"authorization_id": { "$ref": "#/$defs/uuid" },
"reason_code": { "$ref": "#/$defs/review_reason_code" },
"decision": { "const": "require_review" },
"reason": { "type": "string", "minLength": 1, "maxLength": 2000 },
"scenario_key": { "$ref": "#/$defs/scenario_key" },
"scenario_lane": { "$ref": "#/$defs/scenario_lane" },
"asset": { "$ref": "#/$defs/asset_scope" },
"instructions": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/instruction_record" } },
"conflict": { "anyOf": [{ "$ref": "#/$defs/conflict_group" }, { "type": "null" }] },
"context_facts": { "anyOf": [{ "$ref": "#/$defs/context_facts" }, { "type": "null" }] },
"next_actions": { "$ref": "#/$defs/next_actions" },
"conditions": {
"type": "array",
"description": "Empty except on the one consumable review path (reason_code decision_requires_review with a verified exception), where it carries the transformed satisfied approval condition.",
"items": { "type": "object" }
},
"can_proceed_now": { "type": "boolean" },
"satisfied_conditions": { "type": "array", "maxItems": 8, "items": { "$ref": "#/$defs/satisfied_condition_echo" } },
"satisfied_exceptions": { "type": "array", "maxItems": 8, "items": { "$ref": "#/$defs/satisfied_exception" } },
"publication": { "$ref": "#/$defs/publication" },
"evaluated_at": { "type": "string", "minLength": 20, "maxLength": 64 },
"evaluated_purpose": { "anyOf": [{ "$ref": "#/$defs/purpose_context" }, { "type": "null" }] },
"evaluated_actor_role": { "type": ["string", "null"], "minLength": 1, "maxLength": 64 }
}
},
{
"title": "not_enough_published_state",
"type": "object",
"additionalProperties": false,
"required": [
"state", "reason_code", "message", "unresolved_targets", "next_actions", "advisory",
"authorization_id", "asset", "scenario_key", "satisfied_conditions",
"evaluated_at", "evaluated_purpose", "evaluated_actor_role"
],
"properties": {
"state": { "const": "not_enough_published_state" },
"reason_code": { "$ref": "#/$defs/not_enough_reason_code" },
"message": { "type": "string", "minLength": 1, "maxLength": 300 },
"unresolved_targets": { "type": "array", "items": { "$ref": "#/$defs/unresolved_target" } },
"next_actions": { "$ref": "#/$defs/next_actions" },
"advisory": { "const": true },
"authorization_id": { "$ref": "#/$defs/uuid" },
"asset": { "$ref": "#/$defs/asset_scope" },
"scenario_key": { "anyOf": [{ "$ref": "#/$defs/scenario_key" }, { "type": "null" }] },
"satisfied_conditions": {
"type": "array",
"maxItems": 8,
"description": "Always not_verified here — insufficient-state answers are never consumable.",
"items": { "$ref": "#/$defs/satisfied_condition_echo" }
},
"evaluated_at": { "type": "string", "minLength": 20, "maxLength": 64 },
"evaluated_purpose": { "anyOf": [{ "$ref": "#/$defs/purpose_context" }, { "type": "null" }] },
"evaluated_actor_role": { "type": ["string", "null"], "minLength": 1, "maxLength": 64 }
}
}
]
}
validate_query_contextDirect link to validate_query_context
Alias validate-query-context. SQL parse and identifier-resolution failures are typed errors (query_parse_failed, query_unresolved_identifier), not answer states. There is deliberately no satisfied_conditions input: verifying a granted exception is an authorize_use surface, and revalidating rewritten SQL never certifies anonymization.
Input:
{
"type": "object",
"additionalProperties": false,
"required": ["sql"],
"properties": {
"sql": { "type": "string", "minLength": 1, "maxLength": 100000 },
"default_database": { "$ref": "#/$defs/identifier" },
"default_schema": { "$ref": "#/$defs/identifier" },
"scenario_key": { "$ref": "#/$defs/scenario_key" },
"use": { "type": "string", "minLength": 1, "maxLength": 2000 },
"purpose_key": { "$ref": "#/$defs/purpose_key" },
"data_access_context": { "$ref": "#/$defs/data_access_context" },
"on_behalf_of": { "$ref": "#/$defs/on_behalf_of" },
"operation": { "$ref": "#/$defs/transfer_token" },
"destination": {
"type": "object",
"additionalProperties": false,
"anyOf": [{ "required": ["system"] }, { "required": ["jurisdiction"] }],
"properties": {
"system": { "$ref": "#/$defs/transfer_token" },
"jurisdiction": { "$ref": "#/$defs/transfer_token" }
}
},
"consumer_jurisdiction": { "$ref": "#/$defs/transfer_token" }
}
}
Output (the finding object is shown inline in the answered variant and referenced by name in review_required):
{
"$defs": {
"finding": {
"type": "object",
"additionalProperties": false,
"required": ["finding_id", "ref", "status", "reason_code", "decision", "decision_reason", "instructions", "conflict"],
"properties": {
"finding_id": { "$ref": "#/$defs/uuid" },
"ref": { "$ref": "#/$defs/asset_scope" },
"status": { "type": "string", "enum": ["evaluated", "not_enough_published_state"] },
"reason_code": { "anyOf": [{ "$ref": "#/$defs/not_enough_reason_code" }, { "type": "null" }] },
"decision": { "anyOf": [{ "$ref": "#/$defs/instruction_decision" }, { "type": "null" }] },
"decision_reason": { "type": ["string", "null"], "minLength": 1, "maxLength": 2000 },
"instructions": { "type": "array", "items": { "$ref": "#/$defs/instruction_record" } },
"conflict": { "anyOf": [{ "$ref": "#/$defs/conflict_group" }, { "type": "null" }] }
}
}
},
"oneOf": [
{
"title": "answered",
"type": "object",
"additionalProperties": false,
"required": ["state", "advisory", "validation_id", "verdict", "findings", "publication", "evaluated_at", "evaluated_purpose", "evaluated_actor_role"],
"properties": {
"state": { "const": "answered" },
"advisory": { "const": true },
"validation_id": { "$ref": "#/$defs/uuid" },
"verdict": { "type": "string", "enum": ["pass", "warn", "fail"] },
"findings": { "type": "array", "items": { "$ref": "#/$defs/finding" } },
"publication": { "anyOf": [{ "$ref": "#/$defs/publication" }, { "type": "null" }] },
"evaluated_at": { "type": "string", "minLength": 20, "maxLength": 64 },
"evaluated_purpose": { "anyOf": [{ "$ref": "#/$defs/purpose_context" }, { "type": "null" }] },
"evaluated_actor_role": { "type": ["string", "null"], "minLength": 1, "maxLength": 64 }
}
},
{
"title": "review_required",
"type": "object",
"additionalProperties": false,
"required": ["state", "advisory", "validation_id", "reason_code", "verdict", "findings", "next_actions", "publication", "evaluated_at", "evaluated_purpose", "evaluated_actor_role"],
"properties": {
"state": { "const": "review_required" },
"advisory": { "const": true },
"validation_id": { "$ref": "#/$defs/uuid" },
"reason_code": { "$ref": "#/$defs/review_reason_code" },
"verdict": { "type": "string", "enum": ["pass", "warn", "fail"] },
"findings": { "type": "array", "items": { "$ref": "#/$defs/finding" } },
"next_actions": { "$ref": "#/$defs/next_actions" },
"publication": { "$ref": "#/$defs/publication" },
"evaluated_at": { "type": "string", "minLength": 20, "maxLength": 64 },
"evaluated_purpose": { "anyOf": [{ "$ref": "#/$defs/purpose_context" }, { "type": "null" }] },
"evaluated_actor_role": { "type": ["string", "null"], "minLength": 1, "maxLength": 64 }
}
},
{
"title": "not_enough_published_state",
"type": "object",
"additionalProperties": false,
"required": ["state", "reason_code", "message", "unresolved_targets", "next_actions", "advisory", "validation_id", "evaluated_at", "evaluated_purpose", "evaluated_actor_role"],
"properties": {
"state": { "const": "not_enough_published_state" },
"reason_code": { "$ref": "#/$defs/not_enough_reason_code" },
"message": { "type": "string", "minLength": 1, "maxLength": 300 },
"unresolved_targets": { "type": "array", "items": { "$ref": "#/$defs/unresolved_target" } },
"next_actions": { "$ref": "#/$defs/next_actions" },
"advisory": { "const": true },
"validation_id": { "$ref": "#/$defs/uuid" },
"evaluated_at": { "type": "string", "minLength": 20, "maxLength": 64 },
"evaluated_purpose": { "anyOf": [{ "$ref": "#/$defs/purpose_context" }, { "type": "null" }] },
"evaluated_actor_role": { "type": ["string", "null"], "minLength": 1, "maxLength": 64 }
}
}
]
}
explain_whyDirect link to explain_why
Alias explain-why. The input is a discriminated union on kind; all three branches are strict and each requires its own identifier. Passing an identifier that does not match the stated kind is invalid_parameters. There is no not_enough_published_state variant — an unresolvable identifier is asset_not_found, and unknown, foreign-workspace, and foreign-token references are indistinguishable.
Input:
{
"oneOf": [
{
"type": "object",
"additionalProperties": false,
"required": ["kind", "decision_id"],
"properties": {
"kind": { "const": "decision" },
"decision_id": { "$ref": "#/$defs/uuid" }
}
},
{
"type": "object",
"additionalProperties": false,
"required": ["kind", "authorization_id"],
"properties": {
"kind": { "const": "authorization" },
"authorization_id": { "$ref": "#/$defs/uuid" }
}
},
{
"type": "object",
"additionalProperties": false,
"required": ["kind", "validation_id"],
"properties": {
"kind": { "const": "validation" },
"validation_id": { "$ref": "#/$defs/uuid" }
}
}
]
}
Output — four variants. The two kind: "decision" shapes are discriminated on state; the two ledger shapes are discriminated on kind. All four are strict, so a payload matches exactly one:
{
"oneOf": [
{
"title": "decision · answered",
"type": "object",
"additionalProperties": false,
"required": ["state", "explanation", "record", "current", "publication"],
"properties": {
"state": { "const": "answered" },
"explanation": { "type": "string", "minLength": 1, "maxLength": 4000 },
"record": { "$ref": "#/$defs/instruction_record" },
"current": { "type": "boolean" },
"publication": { "$ref": "#/$defs/publication" }
}
},
{
"title": "decision · review_required",
"type": "object",
"additionalProperties": false,
"required": ["state", "reason_code", "explanation", "record", "current", "publication"],
"properties": {
"state": { "const": "review_required" },
"reason_code": { "$ref": "#/$defs/review_reason_code" },
"explanation": { "type": "string", "minLength": 1, "maxLength": 4000 },
"record": { "$ref": "#/$defs/instruction_record" },
"current": { "type": "boolean" },
"publication": { "$ref": "#/$defs/publication" }
}
},
{
"title": "authorization",
"type": "object",
"additionalProperties": false,
"required": ["kind", "authorization_id", "answer_state", "decision", "reason_code", "evaluated", "cited_decision_ids", "satisfied_exception_ids", "provenance"],
"properties": {
"kind": { "const": "authorization" },
"authorization_id": { "$ref": "#/$defs/uuid" },
"answer_state": { "type": "string", "enum": ["answered", "review_required", "not_enough_published_state"] },
"decision": { "anyOf": [{ "$ref": "#/$defs/instruction_decision" }, { "type": "null" }] },
"reason_code": { "type": ["string", "null"], "description": "Any not_enough_published_state or review_required reason code." },
"evaluated": {
"description": "Canonical, redacted inputs. Never the free use text.",
"type": "object",
"additionalProperties": false,
"required": ["asset", "scenario_key", "operation", "destination", "consumer_jurisdiction", "purpose_context"],
"properties": {
"asset": { "$ref": "#/$defs/asset_scope" },
"scenario_key": { "anyOf": [{ "$ref": "#/$defs/scenario_key" }, { "type": "null" }] },
"operation": { "anyOf": [{ "$ref": "#/$defs/transfer_token" }, { "type": "null" }] },
"destination": {
"anyOf": [
{
"type": "object",
"additionalProperties": false,
"required": ["system", "jurisdiction"],
"properties": {
"system": { "anyOf": [{ "$ref": "#/$defs/transfer_token" }, { "type": "null" }] },
"jurisdiction": { "anyOf": [{ "$ref": "#/$defs/transfer_token" }, { "type": "null" }] }
}
},
{ "type": "null" }
]
},
"consumer_jurisdiction": { "anyOf": [{ "$ref": "#/$defs/transfer_token" }, { "type": "null" }] },
"purpose_context": { "anyOf": [{ "$ref": "#/$defs/purpose_context" }, { "type": "null" }] }
}
},
"cited_decision_ids": { "type": "array", "items": { "$ref": "#/$defs/uuid" } },
"satisfied_exception_ids": { "anyOf": [{ "type": "array", "items": { "$ref": "#/$defs/uuid" } }, { "type": "null" }] },
"provenance": { "$ref": "#/$defs/ledger_provenance" }
}
},
{
"title": "validation",
"type": "object",
"additionalProperties": false,
"required": ["kind", "validation_id", "answer_state", "verdict", "reason_code", "statement_kind", "query_fingerprint", "findings", "purpose_context", "provenance"],
"properties": {
"kind": { "const": "validation" },
"validation_id": { "$ref": "#/$defs/uuid" },
"answer_state": { "type": "string", "enum": ["answered", "review_required", "not_enough_published_state"] },
"verdict": { "type": ["string", "null"], "enum": ["pass", "warn", "fail", null] },
"reason_code": { "type": ["string", "null"] },
"statement_kind": { "type": ["string", "null"], "minLength": 1, "maxLength": 64 },
"query_fingerprint": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Stable hash of the canonical evaluation envelope. Identifies the EVALUATION, not the SQL — the same query under a different purpose or actor context hashes differently."
},
"findings": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": ["finding_id", "ref", "status", "decision", "reason_code"],
"properties": {
"finding_id": { "$ref": "#/$defs/uuid" },
"ref": { "$ref": "#/$defs/asset_scope" },
"status": { "type": "string", "enum": ["evaluated", "not_enough_published_state"] },
"decision": { "anyOf": [{ "$ref": "#/$defs/instruction_decision" }, { "type": "null" }] },
"reason_code": { "anyOf": [{ "$ref": "#/$defs/not_enough_reason_code" }, { "type": "null" }] }
}
}
},
"purpose_context": { "anyOf": [{ "$ref": "#/$defs/purpose_context" }, { "type": "null" }] },
"provenance": { "$ref": "#/$defs/ledger_provenance" }
}
}
]
}
Ledger explain outputs never contain raw SQL or raw use text. The actor the evaluation used is nested at provenance.actor.bound_role.
request_accessDirect link to request_access
Alias request-access. Requires the request token scope and advertises readOnlyHint: false. Writes a workflow request row; never governance state. The input carries no purpose, no role, no eligibility assertion, and no correlation id — all of those are derived server-side from the cited record and a fresh re-evaluation.
Input:
{
"type": "object",
"additionalProperties": false,
"required": ["source"],
"properties": {
"source": {
"type": "object",
"additionalProperties": false,
"required": ["kind", "id"],
"properties": {
"kind": { "type": "string", "enum": ["authorization"] },
"id": { "$ref": "#/$defs/uuid" }
}
},
"note": {
"type": "string",
"minLength": 1,
"maxLength": 2000,
"description": "Trimmed at the boundary, then bounded. Recorded only under the workspace raw-text privacy switch; never returned by any tool."
}
}
}
Output:
{
"oneOf": [
{
"title": "submitted",
"type": "object",
"additionalProperties": false,
"required": ["state", "request_id", "request_status", "resubmitted", "eligibility", "asset", "scenario_key", "purpose_category", "source", "note_recorded", "request_expires_at", "created_at"],
"properties": {
"state": { "const": "submitted" },
"request_id": { "$ref": "#/$defs/uuid" },
"request_status": { "const": "open" },
"resubmitted": { "type": "boolean" },
"eligibility": { "type": "string", "enum": ["exception_grantable", "not_waiverable"] },
"asset": { "type": "string", "minLength": 1, "maxLength": 1023 },
"scenario_key": { "anyOf": [{ "$ref": "#/$defs/scenario_key" }, { "type": "null" }] },
"purpose_category": { "type": ["string", "null"], "minLength": 1, "maxLength": 128 },
"source": { "type": "object" },
"note_recorded": { "type": "boolean" },
"request_expires_at": { "type": "string", "minLength": 1, "maxLength": 64 },
"created_at": { "type": "string", "minLength": 1, "maxLength": 64 }
}
},
{
"title": "not_eligible",
"type": "object",
"additionalProperties": false,
"required": ["state", "reason_code", "source", "evaluated_answer_state", "evaluated_decision"],
"properties": {
"state": { "const": "not_eligible" },
"reason_code": { "type": "string", "enum": ["use_not_blocked", "open_request_limit"] },
"source": { "type": "object" },
"evaluated_answer_state": { "type": "string", "enum": ["answered", "review_required", "not_enough_published_state"] },
"evaluated_decision": { "type": ["string", "null"], "minLength": 1, "maxLength": 64 }
}
}
]
}
check_requestDirect link to check_request
Alias check-request. Requires only the read scope; subject-verified, so a token sees only its own requests and a foreign request is indistinguishable from not found. Statuses and exception state are derived at read time.
Input:
{
"type": "object",
"additionalProperties": false,
"required": ["request_id"],
"properties": {
"request_id": { "$ref": "#/$defs/uuid" }
}
}
Output — a single object, not a discriminated union:
{
"type": "object",
"additionalProperties": false,
"required": ["request_id", "status", "eligibility", "resolution_kind", "exception", "asset", "scenario_key", "purpose_category", "created_at", "resolved_at", "request_expires_at"],
"properties": {
"request_id": { "$ref": "#/$defs/uuid" },
"status": { "type": "string", "enum": ["open", "resolved", "withdrawn", "expired"] },
"eligibility": { "type": "string", "enum": ["exception_grantable", "not_waiverable"] },
"resolution_kind": { "type": ["string", "null"], "enum": ["exception_granted", "denied", "policy_change_required", null] },
"exception": {
"anyOf": [
{
"type": "object",
"additionalProperties": false,
"required": ["exception_id", "expires_at", "state"],
"properties": {
"exception_id": { "$ref": "#/$defs/uuid" },
"expires_at": { "type": "string", "minLength": 1, "maxLength": 64 },
"state": { "type": "string", "enum": ["active", "expired", "revoked"] }
}
},
{ "type": "null" }
]
},
"asset": { "type": "string", "minLength": 1, "maxLength": 1023 },
"scenario_key": { "anyOf": [{ "$ref": "#/$defs/scenario_key" }, { "type": "null" }] },
"purpose_category": { "type": ["string", "null"], "minLength": 1, "maxLength": 128 },
"created_at": { "type": "string", "minLength": 1, "maxLength": 64 },
"resolved_at": { "type": ["string", "null"], "minLength": 1, "maxLength": 64 },
"request_expires_at": { "type": "string", "minLength": 1, "maxLength": 64 }
}
}
Notes are never returned, and neither is the steward's identity.
Error codesDirect link to Error codes
Failures outside the typed answer states are redacted errors with a closed code set: unauthorized, auth_unavailable, rate_limited, not_supported, asset_not_found, invalid_parameters, insufficient_scope, cursor_expired, read_failed, query_parse_failed, query_unresolved_identifier, output_validation_failed, quota_exceeded, internal_error. Messages are fixed and never echo your SQL, token material, or workspace identifiers. See Troubleshooting for what each one means and how to fix it.