READ

get_council_session

One sitting of Heimdall's council with everything it holds, the verdict, the voices' turns and every finding with what a person decided; free to call.

Return one sitting of Heimdall's council in full: the moment, the record it read, the voices, where it stands and the phase of its deliberation, Heimdall's verdict once written (the plan the council agreed, the summary, the findings ranked by id with a reason each, and where the voices disagreed), the voices' turns round by round with what each did (research with its sources, reading, replies, refinement) and their words, and every finding with its claim, the evidence quoted, the suggestion in the record's own words, the severity, the confidence, the record it drafted when it did (kind and payload) and what a person decided. Poll it after convene_council while the status is queued, running or summarising; once ready, read the ranked findings first, they are what the analyst reads.

The sitting is named by session_id. Deciding a finding stays with people, in the application and over REST; an agent reads what the council found and says so. A guest token is refused.

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

session_id*string

UUID of the council session.

What it returns

{  "data": {    "id": "d4e5f6a7-b8c9-4d0e-8f1a-2b3c4d5e6f70",    "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",    "moment": "requirement_review",    "subject_type": "work-item",    "subject_id": "0f9e8d7c-6b5a-4c3d-8e2f-1a0b9c8d7e6f",    "subject_title": "Apply a voucher at checkout",    "status": "ready",    "voices": ["thor", "loki"],    "round": 3,    "phase": "verdict",    "summary": "The story is sound; one criterion cannot be verified and the voucher code is personal data the record does not say how to keep.",    "plan": "1. Name the limit on the voucher criterion.\n2. Add the masking rule, naming the logs and the analytics.",    "ranked": [      {        "finding_id": "f6a7b8c9-d0e1-4f2a-8b3c-4d5e6f7a8b92",        "reason": "The rule applies to every voucher."      },      {        "finding_id": "e5f6a7b8-c9d0-4e1f-8a2b-3c4d5e6f7a81",        "reason": "A tester is blocked until the limit is named."      }    ],    "disagreements": [],    "finding_count": 2,    "cost_micros": 12500,    "cost": "$0.0125",    "failure_reason": null,    "requested_by": "c3d4e5f6-a7b8-4c9d-8e0f-1a2b3c4d5e6f",    "requester_name": "Jane Doe",    "started_at": "2026-10-28T15:00:05+00:00",    "finished_at": "2026-10-28T15:03:00+00:00",    "created_at": "2026-10-28T15:00:00+00:00",    "turns": [      {        "id": "a7b8c9d0-e1f2-4a3b-8c4d-5e6f7a8b9c03",        "session_id": "d4e5f6a7-b8c9-4d0e-8f1a-2b3c4d5e6f70",        "voice": "thor",        "voice_name": "Thor",        "lens": "Testing, verification and defects",        "round": 1,        "kind": "reading",        "status": "ready",        "stance": "One criterion cannot be verified as written.",        "sources": null,        "finding_count": 1,        "failure_reason": null,        "started_at": "2026-10-28T15:00:05+00:00",        "finished_at": "2026-10-28T15:01:10+00:00"      }    ],    "findings": [      {        "id": "f6a7b8c9-d0e1-4f2a-8b3c-4d5e6f7a8b92",        "session_id": "d4e5f6a7-b8c9-4d0e-8f1a-2b3c4d5e6f70",        "turn_id": "b8c9d0e1-f2a3-4b4c-8d5e-6f7a8b9c0d14",        "voice": "loki",        "voice_name": "Loki",        "round": 1,        "position": 1,        "title": "Keep voucher codes out of the logs",        "claim": "A voucher code ties a purchase to a person; nothing says it is masked in logs and analytics.",        "evidence": null,        "suggestion": "Add a rule that voucher codes are masked before any log line.",        "severity": "medium",        "confidence": 0.7,        "kind": "business_rule",        "payload": {          "name": "Keep voucher codes out of the logs",          "type": "policy",          "statement": "<p>Voucher codes are never written to logs or analytics in clear.</p>",          "condition": "When a voucher is applied or refused",          "action": "Then the code is masked before any log line or event is written",          "exceptions": null,          "examples": ["ABCD-1234 → ABCD-****"]        },        "status": "pending",        "suggestion_id": null,        "decided_by": null,        "decider_name": null,        "decided_at": null,        "created_at": "2026-10-28T15:02:00+00:00"      }    ]  }}

How it fails

RESOURCE_NOT_FOUND

unknown session_id, or a sitting of a project outside the token's scope or the person's visibility; a client guest's token reads every sitting as not found.

TOKEN_MISSING_ABILITY

token lacks import:view.

How is this guide?

Last updated on