MCP 2025-06-18
approval_request
Request a human decision. Advisory proposals record the decision but execute nothing; supported command proposals execute atomically only after approval. Link the request to your session with sessionId so the session shows as waiting. An agent_request may ask a question instead: send question {} for a free-text answer or { choices } for up to 6 options. The answer appears in approval_status and, with a sessionId, as an instruction on your next session_heartbeat. With expiresInMinutes, an unresolved request expires and a command proposal never executes.
Input schema
This schema is shared with tools/list. The server also verifies current scopes and resource-level access before returning data or changing a record.
{
"type": "object",
"properties": {
"kind": {
"enum": [
"work_change",
"memory_change",
"life_change",
"agent_request"
]
},
"title": {
"type": "string",
"description": "Approval title"
},
"description": {
"type": "string",
"description": "What will change and why"
},
"targetType": {
"type": "string",
"description": "Optional target type"
},
"targetId": {
"type": "string",
"description": "Optional target ID"
},
"proposal": {
"oneOf": [
{
"type": "object",
"properties": {
"mode": {
"const": "advisory"
}
},
"required": [
"mode"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"mode": {
"const": "command"
},
"command": {
"type": "object",
"properties": {
"method": {
"const": "work_move"
},
"input": {
"type": "object",
"properties": {
"itemId": {
"type": "string",
"description": "Work item ID"
},
"columnKey": {
"type": "string",
"description": "Destination column key"
}
},
"required": [
"itemId",
"columnKey"
],
"additionalProperties": false
}
},
"required": [
"method",
"input"
],
"additionalProperties": false
}
},
"required": [
"mode",
"command"
],
"additionalProperties": false
}
],
"description": "Explicitly advisory, or a typed command from the supported executable subset."
},
"sessionId": {
"type": "string",
"description": "Optional ID of one of this agent's open sessions"
},
"expiresInMinutes": {
"type": "integer",
"minimum": 5,
"maximum": 10080,
"description": "Optional. Minutes until the request expires, from 5 to 10,080 (7 days)."
},
"question": {
"type": "object",
"properties": {
"choices": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"minItems": 2,
"maxItems": 6,
"description": "Distinct options. Omit for a free-text answer."
}
},
"additionalProperties": false,
"description": "Optional, agent_request with an advisory proposal only. The title is the question."
},
"idempotencyKey": {
"type": "string",
"description": "Unique retry key"
}
},
"required": [
"kind",
"title",
"proposal",
"idempotencyKey"
],
"additionalProperties": false
}Call this tool
Use the tool name below in params.name. Supply the exact arguments described above; this envelope deliberately leaves required resource values for your authorized context.
{
"jsonrpc": "2.0",
"id": "example_request",
"method": "tools/call",
"params": {
"name": "approval_request",
"arguments": {}
}
}Read the result before continuing
Inspect protocol errors and the tool result’s isError flag. A request being accepted is not proof of an external action completing. Preserve correlation IDs and unchanged mutation idempotency keys across safe retries.