READ

get_approval_request

Fetches one approval request by UUID with the record it is about, the approvers the policy named, the tally, the clocks and every verdict given, round by round.

Read one approval request in full: the record under approval, the gate, where it stands, who asked and why, the approvers with how each was found (owner, role, user or stakeholder), the tally, the clocks and their rings, the version under review, and decisions, each with its round, the approver's name, the verdict, the reason and the signature hash. The same record GET /v1/approvals/{approval} answers.

An unknown id, another tenant's request or a guest token the request does not name surfaces as RESOURCE_NOT_FOUND. Read it to explain why a record is still in review, who has answered and who has not; deciding stays with people.

Requires ability

The token behind the MCP session must hold it, or the call is refused with TOKEN_MISSING_ABILITY.

Runs the same action as

The REST endpoint and this tool share one action, so validation, permissions and events are identical.

Annotations

Read-only

It reads and never changes anything.

Arguments

approval_id*string

UUID of the approval request to fetch.

What it returns

{  "data": {    "id": "c1d2e3f4-a5b6-4c7d-8e9f-0a1b2c3d4e5f",    "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",    "approvable_type": "requirement",    "approvable_id": "a8b9c0d1-e2f3-4a4b-9c5d-6e7f8a9b0c13",    "reference": "CRM-FR-12",    "title": "Apply a voucher at checkout",    "kind": "requirement_review",    "status": "changes_requested",    "rule": "any",    "quorum": 1,    "round": 1,    "approvers": [      {        "user_id": "3f8a1c2e-7b4d-4e5f-9a6b-1c2d3e4f5a6b",        "name": "Pat Manager",        "via": "role",        "stakeholder_id": null      }    ],    "tally": { "approved": 0, "needed": 1, "total": 1 },    "requires_comment": true,    "requested_by": "5b6c7d8e-9f0a-4b1c-8d2e-3f4a5b6c7d8e",    "requester_name": "Bea Analyst",    "summary": "First cut of the voucher rules.",    "revision_id": "0e1f2a3b-4c5d-4e6f-8a7b-9c0d1e2f3a4b",    "due_at": "2026-10-31T09:20:00+00:00",    "remind_at": "2026-10-29T09:20:00+00:00",    "auto_approve_at": null,    "reminded_at": null,    "escalated_at": null,    "decided_at": null,    "auto_approved": false,    "decisions": [      {        "id": "d4e5f6a7-b8c9-4d0e-9f1a-2b3c4d5e6f7a",        "approval_request_id": "c1d2e3f4-a5b6-4c7d-8e9f-0a1b2c3d4e5f",        "round": 1,        "approver_id": "3f8a1c2e-7b4d-4e5f-9a6b-1c2d3e4f5a6b",        "approver_name": "Pat Manager",        "stakeholder_id": null,        "verdict": "changes_requested",        "comment": "Name the voucher kinds it applies to.",        "signature_hash": "4f9c2a7e1b0d3c5f6a8e9b2d4c6f8a0b1c3d5e7f9a1b3c5d7e9f0a2b4c6d8e0f",        "decided_at": "2026-10-28T11:05:00+00:00"      }    ],    "created_at": "2026-10-28T09:20:00+00:00",    "updated_at": "2026-10-28T11:05:00+00:00"  }}

How it fails

RESOURCE_NOT_FOUND

unknown approval_id, a request outside the token's scope or the person's visibility, or a guest token the request does not name.

TOKEN_MISSING_ABILITY

token lacks approval:view.

How is this guide?

Last updated on