MCP tool
record_agent_decision
Append a structured decision, rationale and up to 20 inline evidence records to a non-terminal run. Evidence content is SHA-256 digested by the API. This is an audit/explanation record only: a decision does not grant approval, change a mandate or prove a provider action occurred.
Input
Pass fields from this schema as the tool arguments. Runtime ownership, product scope and readiness checks still apply.
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"runId": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"kind": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"pattern": "^[a-z][a-z0-9]*(?:[._:-][a-z0-9]+)*$"
},
"outcome": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"rationale": {
"type": "string",
"minLength": 1,
"maxLength": 4000
},
"stepId": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"evidence": {
"default": [],
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"pattern": "^[a-z][a-z0-9]*(?:[._:-][a-z0-9]+)*$"
},
"source": {
"type": "string",
"minLength": 1,
"maxLength": 500
},
"content": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"observedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
}
},
"required": [
"kind",
"source",
"content"
]
}
}
},
"required": [
"runId",
"kind",
"outcome",
"rationale"
]
}REST mapping and authority
The tool wraps this REST endpoint. The mapping identifies path/query/body transformations and approval or idempotency headers.
{
"method": "POST",
"path": "/api/v1/agent/runs/{runId}/decisions",
"pathFields": [
"runId"
],
"pathSchema": {
"type": "object",
"properties": {
"runId": {
"type": "string",
"minLength": 1,
"maxLength": 128
}
},
"additionalProperties": false,
"required": [
"runId"
]
},
"pathEncoding": "encodeURIComponent for each path field",
"governedAction": null,
"headers": {},
"bodySchema": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"pattern": "^[a-z][a-z0-9]*(?:[._:-][a-z0-9]+)*$"
},
"outcome": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"rationale": {
"type": "string",
"minLength": 1,
"maxLength": 4000
},
"stepId": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"evidence": {
"default": [],
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"pattern": "^[a-z][a-z0-9]*(?:[._:-][a-z0-9]+)*$"
},
"source": {
"type": "string",
"minLength": 1,
"maxLength": 500
},
"content": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"observedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
}
},
"required": [
"kind",
"source",
"content"
]
}
}
},
"additionalProperties": false,
"required": [
"kind",
"outcome",
"rationale"
]
},
"responseMapping": "REST JSON is returned as MCP structuredContent and a compatibility text block; privacy-sensitive tools validate their output schema."
}Output
This is the registered MCP output envelope. Nested fields are only modeled where the schema explicitly defines them.
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"decision": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"decision"
],
"additionalProperties": {}
}Safety annotations
{
"readOnlyHint": false,
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": false
}Annotations help a client present the tool. The API independently enforces authorization and exact action approvals. Error and retry guidance →