MCP tools
This page uses the wire’s own names (node, edge, ledger event), because that is what an agent sees. The server explains its tools itself: an agent should call read_instructions before anything else.
Read-only; nothing changes. A client may always allow these.
| Tool | What it answers |
|---|---|
whoami |
The account the connection acts as, and the projects it reaches. |
list_projects |
The projects the connection can open. |
read_instructions |
How to work with unbranch: the loop, the concepts and every tool. Read it first. |
read_overview |
The whole product at a glance: live nodes grouped by type with their delivery state, and what is in flight. It also says when a project is empty and offers an import. |
read_model |
The canonical model in detail (live, or the full archive), stamped with asOfEventId. |
read_status |
What is waiting on the person: proposals they have not answered and work in delivery. |
list_commitments |
Commitments and their delivery status. |
read_ledger |
A page of ledger events after a cursor, with hasMore and nextAfter. |
list_proposals |
Proposals by status. With status=draft, only the caller’s own drafts. |
get_proposal |
One proposal: its revisions, who answered what, its audit, and the exact nodes and edges accepting it would write. |
Draft writes
Section titled “Draft writes”These add to or advance a draft and take nothing away. A client should ask before each.
| Tool | What it does |
|---|---|
write_draft |
Writes a whole draft (a direction, a capability, a replacement or a baseline) and answers with its url. Free. |
write_revision |
Writes the next version of a proposal in review and leaves it waiting for the person to submit on the web. It never changes the proposal itself. |
check_draft |
Runs the pre-review audit on a draft: duplicates, crossed constraints, delivered work undone. Uses a model credit. |
submit_draft |
Opens the draft for review, only when the person says so. The audit runs, or its kept verdict is reused. |
Destructive
Section titled “Destructive”| Tool | What it does |
|---|---|
discard_draft |
Throws away one of the caller’s own drafts. |
What is not here
Section titled “What is not here”There is no tool to consent, accept, reject, start delivery or verify, and there will not be. See Agents read, people decide.
How an answer reads
Section titled “How an answer reads”A tool that has something to conclude answers with two text blocks. The first is a short lead: what it found, Next:, and where relevant Tell the person:. The second is the JSON. write_draft, write_revision and check_draft also answer with structuredContent that matches their declared outputSchema.
How a refusal reads
Section titled “How a refusal reads”A refusal is not a JSON-RPC error. The call succeeds, and the tool result carries isError: true and a text block holding {statusCode, message}, plus errors on a validation failure and audit on a flagged submit. Its lead reads Refused: … and Next: ….
- Arguments are strict: a key a tool does not declare is
400 Unrecognized key. - A project the connection cannot reach is
404 Project not found, whether it does not exist or you lack access. - A draft that is not yours is
403 Only the author edits a draft.
Attribution
Section titled “Attribution”A draft an agent writes is marked as created by an agent, and submit_draft records its ledger event with actorType: "agent". The person’s account owns the action; the record shows the words were the model’s.