MCP reference
The five tools and six prompts at the agent boundary — inputs, outputs, and what MCP will never decide.
health
Project identity, Git revision, working tree, provider status, and coverage. A missing Codebase Memory is an explicit degraded result, never invented coverage.
prepare_change
Input: target (path or path::symbol) and the agent’s real intent.
Optional: max_tokens (default 2400), max_nodes (12), max_relationships
(16), mode: baseline to skip intent-conflict detection.
Output: an operation_id and a packet with
critical_constraintsanddecisionsthat govern the target, each withauthority,provenance, and how it matched;relationshipsexplained by Records, with derivedstateand the path whenindirect;structure: the selected nodes and edges around the target, each tagged with its role and any explaining Record ids;relevant_code,intent_conflicts,known_risks,known_unknowns,warnings, the consistencysnapshot, andbudget_overflowwhen authoritative context exceeded the ceiling.
The budget is a ceiling, never a target: an empty neighborhood produces a small packet, and governing knowledge is never cut to fit.
explain_target
Why a target exists: the Records that govern it by exact binding, its Subject,
and what is known versus unknown. It uses the same matcher as prepare_change,
so the two tools never disagree.
finalize_change
Input: operation_id, summary, and candidates. Each candidate requires
kind, statement, rationale, durability, and bindings; it may add
relationships, supersedes, severity, id, risks, evidence, and
subject. A relationship is {source, kind, target} with path::symbol
endpoints and a kind such as calls, uses, writes, imports, or tests;
once resolved, it also anchors the Record. The diff
base is the declared base_revision, else the HEAD that prepare_change saw,
else HEAD.
Output: committed Records, discarded candidates with a reason, conflicts,
superseded Records, the derived state of relationships the new Records
explain, observed signals, and the mechanical capture of the change.
Discard reasons include transient, duplicate, missing_rationale,
rationale_restates_statement, mechanical_noise, no_meaningful_binding,
and legacy_contract (a pre-1.0 call without candidates).
resolve_conflict
Input: conflict_id, decision (keep_pinned or adopt_new), and
human_answer — the person’s literal answer, kept for audit. Without
human_answer the tool refuses. adopt_new requires the Git actor to be
declared in .rationale/config.yaml.
Prompts
prompts/list returns six actions from the same source as the Claude Code
shortcuts:
| Prompt | Purpose | Arguments |
|---|---|---|
preflight |
Prepare context and state governing Records before editing. | target, intent |
explain |
Explain a possible Chesterton fence. | target |
capture |
Close a change with durable candidates. | optional statement |
conflicts |
Present conflicts with pinned Records and hand the decision to a person. | none |
health |
Diagnose MCP, provider, Git, and canon health. | none |
protocol |
Load the master protocol. | none |
A retired prompt such as review answers with the action that replaced it. An
unknown prompt is a JSON-RPC error and never ends the session.
Since v1.1.0, prompt and tool descriptions are written in English and ask the agent to reply in the user’s language, keeping identifiers verbatim.
Transport
Newline-delimited JSON-RPC over stdio, protocol 2024-11-05. One persistent
provider session per server process. Diagnostics go to stderr; stdout carries
only MCP messages.