READ

get_change_request

Fetches one change request by id with the records it touches, its impact, Heimdall's draft, its baseline and the people behind it; a guest token reads it without the effort, the cost and the draft.

Read one change request in full. Beside its own fields the answer carries affected: every record the request touches, with artefact_type, artefact_id, and the reference and title as they read now (null when the record is gone or hidden from the token's holder). Use it to know what an approval will unlock, to read the impact the analyst wrote and Heimdall's draft under ai_impact_draft with analysed_at, and to read the approver's words under decision_note on a rejected request. A client guest's token reads the requests they raised or asked for, without impact_effort_hours, impact_cost and ai_impact_draft.

Requires ability

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

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

change_request_id*string

UUID of the change request to fetch.

What it returns

{  "data": {    "id": "c7d8e9f0-a1b2-4c3d-8e4f-5a6b7c8d9e0f",    "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",    "number": 2,    "reference": "CRM-CR-2",    "title": "Accept vouchers on subscriptions too",    "description": "<p>The client wants the voucher applied to the first renewal as well.</p>",    "reason": "client_request",    "requested_by": "5b6c7d8e-9f0a-4b1c-8d2e-3f4a5b6c7d8e",    "requester_name": "Bea Analyst",    "stakeholder_id": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",    "stakeholder_name": "Gail of the Client",    "baseline_id": "6a7b8c9d-0e1f-4a2b-8c3d-4e5f6a7b8c9d",    "baseline_name": "v1.0 scope",    "affected": [      {        "artefact_type": "requirement",        "artefact_id": "a8b9c0d1-e2f3-4a4b-9c5d-6e7f8a9b0c13",        "reference": "CRM-FR-12",        "title": "Password reset by email"      },      {        "artefact_type": "work-item",        "artefact_id": "0f9e8d7c-6b5a-4c3d-8e2f-1a0b9c8d7e6f",        "reference": "CRM-142",        "title": "Apply a voucher at checkout"      }    ],    "impact_scope": "<p>CRM-FR-12 gains a renewal clause; CRM-142 and its checkout tests change.</p>",    "impact_schedule_days": 5,    "impact_effort_hours": "24.00",    "impact_cost": "1800.00",    "impact_risk": "<p>The renewal job runs unattended; a voucher applied twice would refund twice.</p>",    "impact_level": "medium",    "ai_impact_draft": "<p>A small change to the renewal flow; the story that implements the requirement changes with it.</p><h4>Scope</h4><p>…</p>",    "analysed_at": "2026-10-29T10:40:00+00:00",    "priority": "high",    "status": "approved",    "decision_note": null,    "verified_by": null,    "verified_at": null,    "version": 1,    "approved_at": "2026-10-29T11:05:00+00:00",    "approved_revision_id": "3b4c5d6e-7f8a-4b9c-8d0e-1f2a3b4c5d6e",    "position": 1,    "created_at": "2026-10-29T09:20:00+00:00",    "updated_at": "2026-10-29T11:05:00+00:00"  }}

How it fails

RESOURCE_NOT_FOUND

unknown change_request_id, a request outside the token's scope, or one a client guest's token neither raised nor asked for.

TOKEN_MISSING_ABILITY

token lacks change-request:view.

How is this guide?

Last updated on