MCP tools reference

Every registered MCP tool: purpose, who may call it, parameters, and a minimal example.

orch MCP tool reference

Generated by go run ./cmd/orch-docs from mcp.ToolDefs() (client/internal/mcp/server.go) — the same manifest tools/list serves. 56 tools total, 9 Chair-only (denyWorkerFanout, client/internal/mcp/spawn.go); every other tool is callable from any seat.

architecture#

Who may call it: any seat

Purpose: Directory map: symbols and edges per directory.

parameter type required default description
limit integer no 20

Minimal example:

{
  "arguments": {},
  "name": "architecture"
}

ask#

Who may call it: any seat

Purpose: Worker: block on a question for the Chair.

parameter type required default description
context string no
options array<string> no
question string yes
timeout_sec integer no 600
to_project string no
to_session string no

Minimal example:

{
  "arguments": {
    "question": "..."
  },
  "name": "ask"
}

ask_answer#

Who may call it: any seat

Purpose: Chair: answer an ask by id; the worker unblocks.

parameter type required default description
answer string yes
by string no
id integer yes
symbol_ref object no (fields: line, path, project, symbol)

Minimal example:

{
  "arguments": {
    "answer": "...",
    "id": 0
  },
  "name": "ask_answer"
}

ask_list#

Who may call it: any seat

Purpose: Chair: list asks by status.

parameter type required default description
limit integer no 20
session string no
status string no "open"

Minimal example:

{
  "arguments": {},
  "name": "ask_list"
}

code_snippet#

Who may call it: any seat

Purpose: One symbol's body by line range, not the whole file.

parameter type required default description
id string no
max_lines integer no 120
project string no
symbol string no

Minimal example:

{
  "arguments": {},
  "name": "code_snippet"
}

context_crush#

Who may call it: any seat

Purpose: Crush repetitive success/log noise.

parameter type required default description
text string yes

Minimal example:

{
  "arguments": {
    "text": "..."
  },
  "name": "context_crush"
}

context_externalize#

Who may call it: any seat

Purpose: Park bulky text in .orch/context; returns a stub + id.

parameter type required default description
text string yes

Minimal example:

{
  "arguments": {
    "text": "..."
  },
  "name": "context_externalize"
}

context_retrieve#

Who may call it: any seat

Purpose: Fetch a full externalized blob by id.

parameter type required default description
id string yes

Minimal example:

{
  "arguments": {
    "id": "..."
  },
  "name": "context_retrieve"
}

Who may call it: any seat

Purpose: FTS over externalized context chunks.

parameter type required default description
limit integer no 20
query string yes

Minimal example:

{
  "arguments": {
    "query": "..."
  },
  "name": "context_search"
}

decision_get#

Who may call it: any seat

Purpose: Fetch Decision by id.

parameter type required default description
id string yes

Minimal example:

{
  "arguments": {
    "id": "..."
  },
  "name": "decision_get"
}

decision_list#

Who may call it: any seat

Purpose: Pending HITL decisions.

parameter type required default description
limit integer no 50

Minimal example:

{
  "arguments": {},
  "name": "decision_list"
}

dispatch_worker#

Who may call it: Chair-only

Purpose: Chair: spawn a worker. Async; task_wait before the turn ends.

parameter type required default description
acp_session string no
actor string no
agent string no empty + risk: roster row
auth string no account|gateway; empty: config default
base string no start ref
continue string no resume session
force object no
force_load string no
force_reason string no
gate_ok string no
inplace boolean no
keep_worktree boolean no
lane string no fast = small-fix lane
lesson_ok string no
model string no gateway model id
name string no
no_done_means boolean no
overlap_ok string no
plan boolean no read-only; returns a plan
plan_from string no earlier plan session to inject
project string no
prompt string no
risk string no security|money|keys: strong; ui|copy: cheap; agentless only
session string no
timeout_sec integer no
title string no
unknown_ok string no
wait boolean no

Minimal example:

{
  "arguments": {},
  "name": "dispatch_worker"
}

entitlements_status#

Who may call it: any seat

Purpose: Active plan, quotas and capability catalog.

No parameters.

Minimal example:

{
  "arguments": {},
  "name": "entitlements_status"
}

evidence_bundle#

Who may call it: Chair-only

Purpose: Chair: verdict, files, commands, tests, usage for a session (markdown).

parameter type required default description
session string yes

Minimal example:

{
  "arguments": {
    "session": "..."
  },
  "name": "evidence_bundle"
}

impact#

Who may call it: any seat

Purpose: Symbols in paths plus their callers, two hops.

parameter type required default description
git_range string no
limit integer no 20
paths array<string> no
symbol string no

Minimal example:

{
  "arguments": {},
  "name": "impact"
}

inspect_symbol#

Who may call it: any seat

Purpose: Inspect one shared symbol by name or id.

parameter type required default description
name string yes

Minimal example:

{
  "arguments": {
    "name": "..."
  },
  "name": "inspect_symbol"
}

lock_acquire#

Who may call it: any seat

Purpose: Take the shared/** semaphore before editing.

parameter type required default description
holder string yes
path string yes
ttl_min integer no 15

Minimal example:

{
  "arguments": {
    "holder": "...",
    "path": "..."
  },
  "name": "lock_acquire"
}

lock_check#

Who may call it: any seat

Purpose: Deny unless holder holds a valid lock on path.

parameter type required default description
holder string yes
path string yes

Minimal example:

{
  "arguments": {
    "holder": "...",
    "path": "..."
  },
  "name": "lock_check"
}

lock_release#

Who may call it: any seat

Purpose: Release a shared/** lock; reindexes and notifies peers.

parameter type required default description
holder string yes
path string yes

Minimal example:

{
  "arguments": {
    "holder": "...",
    "path": "..."
  },
  "name": "lock_release"
}

lock_status#

Who may call it: any seat

Purpose: One lock, or every held lock when path is empty.

parameter type required default description
path string no

Minimal example:

{
  "arguments": {},
  "name": "lock_status"
}

memory_conflicts#

Who may call it: any seat

Purpose: Memories sharing type+title but differing in body.

No parameters.

Minimal example:

{
  "arguments": {},
  "name": "memory_conflicts"
}

memory_export#

Who may call it: any seat

Purpose: Export the memory estate as OKF-lite markdown.

parameter type required default description
all boolean no
dir string no
limit integer no

Minimal example:

{
  "arguments": {},
  "name": "memory_export"
}

memory_forget#

Who may call it: any seat

Purpose: Soft-expire a memory by id.

parameter type required default description
id string yes

Minimal example:

{
  "arguments": {
    "id": "..."
  },
  "name": "memory_forget"
}

memory_import#

Who may call it: any seat

Purpose: Import OKF-lite markdown into the memory estate.

parameter type required default description
dir string no

Minimal example:

{
  "arguments": {},
  "name": "memory_import"
}

memory_list#

Who may call it: any seat

Purpose: List active memories.

parameter type required default description
limit integer no 20
type string no

Minimal example:

{
  "arguments": {},
  "name": "memory_list"
}

memory_recall#

Who may call it: any seat

Purpose: FTS recall over memories, ctxstore chunks and disk memory files. Brief before reinventing.

parameter type required default description
limit integer no 20
max_bytes integer no 2048
query string no
type string no

Minimal example:

{
  "arguments": {},
  "name": "memory_recall"
}

memory_remember#

Who may call it: any seat

Purpose: Store a durable memory. Refused unless it changes behaviour, commits, decides with a reason, or user asked.

parameter type required default description
source string no
tags string no
text string yes
title string no
type string no "fact"
user_request string no

Minimal example:

{
  "arguments": {
    "text": "..."
  },
  "name": "memory_remember"
}

memory_sweep#

Who may call it: any seat

Purpose: Expire memories past retention_days.

No parameters.

Minimal example:

{
  "arguments": {},
  "name": "memory_sweep"
}

msg_ack#

Who may call it: any seat

Purpose: Ack a message by id as its recipient.

parameter type required default description
agent string no
id integer yes
session string no

Minimal example:

{
  "arguments": {
    "id": 0
  },
  "name": "msg_ack"
}

msg_inbox#

Who may call it: any seat

Purpose: Read this seat's inbox; a Chair also gets role mail. wait_sec blocks for mail instead of polling.

parameter type required default description
agent string no
limit integer no 20
session string no
unread boolean no true
verbose boolean no
wait_sec integer no

Minimal example:

{
  "arguments": {},
  "name": "msg_inbox"
}

msg_peers#

Who may call it: any seat

Purpose: Discoverable sessions; session gives the roster.

parameter type required default description
limit integer no 20
session string no
to_project string no
to_worker string no

Example (from tests):

From peers_live_internal_test.go:47

	out, err := srv.callTool("msg_peers", map[string]any{})
	if err != nil {
		t.Fatal(err)
	}
	row := func(id string) string {
		i := strings.Index(out, `"SessionID":"`+id+`"`)
		if i < 0 {
			t.Fatalf("%s missing from msg_peers: %s", id, out)
		}
		end := strings.Index(out[i:], "}")
		return out[i : i+end]
	}

msg_send#

Who may call it: any seat

Purpose: Send a bus message.

parameter type required default description
body string yes
from_agent string no
from_session string no
kind string no
name string no
parent_id integer no
payload_path string no
to_agent string no
to_project string no
to_role string no
to_session string no
to_worker string no
wake boolean no if nobody answers to that seat name, re-dispatch it with this body as its prompt (plan/quota checked first)

Minimal example:

{
  "arguments": {
    "body": "..."
  },
  "name": "msg_send"
}

msg_stale#

Who may call it: any seat

Purpose: Unread alerts older than older_min minutes.

parameter type required default description
limit integer no 20
older_min integer no 15

Minimal example:

{
  "arguments": {},
  "name": "msg_stale"
}

notify_events#

Who may call it: any seat

Purpose: Outbound event catalog (n8n/Zapier).

No parameters.

Minimal example:

{
  "arguments": {},
  "name": "notify_events"
}

search_shared_symbols#

Who may call it: any seat

Purpose: Search the shared symbol registry.

parameter type required default description
limit integer no 50
project string no
query string yes

Minimal example:

{
  "arguments": {
    "query": "..."
  },
  "name": "search_shared_symbols"
}

seat_attach#

Who may call it: any seat

Purpose: Dial info for a detached hold. User returns via orch <agent> (auto); MCP cannot steal TTY.

parameter type required default description
session string no

Minimal example:

{
  "arguments": {},
  "name": "seat_attach"
}

seat_detach#

Who may call it: any seat

Purpose: User left the UI, agent keeps running (hosted hold). Call this, not exit.

parameter type required default description
session string no

Minimal example:

{
  "arguments": {},
  "name": "seat_detach"
}

seat_read#

Who may call it: any seat

Purpose: Read seat tail; deep pages more history from the live seat_host.

parameter type required default description
deep boolean no
deep_timeout_sec integer no 15
lines integer no
session string no

Minimal example:

{
  "arguments": {},
  "name": "seat_read"
}

seat_report#

Who may call it: any seat

Purpose: Write authoritative seat state (working|ready|blocked|exit).

parameter type required default description
next string no
pid integer no
preset string no
resume_ref string no
session string no
state string yes
summary string no

Minimal example:

{
  "arguments": {
    "state": "..."
  },
  "name": "seat_report"
}

seat_status#

Who may call it: any seat

Purpose: Live seat lifecycle JSON (state/source; maybe_blocked is hint only).

parameter type required default description
session string no

Minimal example:

{
  "arguments": {},
  "name": "seat_status"
}

seat_wait#

Who may call it: any seat

Purpose: Poll until authoritative seat state is in until (not maybe_blocked).

parameter type required default description
session string no
timeout_sec integer no 30
until array<string> yes

Minimal example:

{
  "arguments": {
    "until": []
  },
  "name": "seat_wait"
}

task_add#

Who may call it: Chair-only

Purpose: Chair: create a Board task.

parameter type required default description
acceptance_criteria array<string> no
agent string no
body string no
context string no
ledger string no
role string no
title string yes

Minimal example:

{
  "arguments": {
    "title": "..."
  },
  "name": "task_add"
}

task_assign#

Who may call it: Chair-only

Purpose: Chair: assign a task to an agent.

parameter type required default description
agent string yes
id string yes

Minimal example:

{
  "arguments": {
    "agent": "...",
    "id": "..."
  },
  "name": "task_assign"
}

task_claim#

Who may call it: any seat

Purpose: Claim a ledger checklist item; fails if a live session holds it.

parameter type required default description
holder string yes
item integer yes
ledger string yes
ttl_min integer no 15

Minimal example:

{
  "arguments": {
    "holder": "...",
    "item": 0,
    "ledger": "..."
  },
  "name": "task_claim"
}

task_done#

Who may call it: any seat

Purpose: Mark a task done or failed.

parameter type required default description
id string yes
status string no "done"

Minimal example:

{
  "arguments": {
    "id": "..."
  },
  "name": "task_done"
}

task_list#

Who may call it: any seat

Purpose: List Board tasks. verbose adds body/context/verification.

parameter type required default description
limit integer no 20
status string no
verbose boolean no

Minimal example:

{
  "arguments": {},
  "name": "task_list"
}

task_release#

Who may call it: any seat

Purpose: Release a ledger claim; holder must match, or be *.

parameter type required default description
holder string yes
item integer yes
ledger string yes

Minimal example:

{
  "arguments": {
    "holder": "...",
    "item": 0,
    "ledger": "..."
  },
  "name": "task_release"
}

task_run#

Who may call it: Chair-only

Purpose: Chair: dispatch an assigned task as a worker. Async.

parameter type required default description
acp_session string no
actor string no
base string no
force object no
id string yes
inplace boolean no
keep_worktree boolean no
name string no
project string no
session string no
timeout_sec integer no
wait boolean no

Minimal example:

{
  "arguments": {
    "id": "..."
  },
  "name": "task_run"
}

task_wait#

Who may call it: Chair-only

Purpose: Chair: wait for given (or all running) workers to seal; returns verdicts and new bus messages.

parameter type required default description
all boolean no
sessions array<string> no
timeout_sec integer no 300

Minimal example:

{
  "arguments": {},
  "name": "task_wait"
}

trace_path#

Who may call it: any seat

Purpose: Call graph around a symbol, with a confidence per edge.

parameter type required default description
depth integer no 2
direction string no "both"
limit integer no 20
symbol string yes

Minimal example:

{
  "arguments": {
    "symbol": "..."
  },
  "name": "trace_path"
}

usage_status#

Who may call it: any seat

Purpose: Token spend and workspace telemetry by view. Content-free.

parameter type required default description
limit integer no 20
recent integer no
verbose boolean no
view string no "summary"

Minimal example:

{
  "arguments": {},
  "name": "usage_status"
}

verify_report#

Who may call it: any seat

Purpose: Worker: file verification evidence before finishing.

parameter type required default description
criteria array<object> no
session string no
summary string no
symbols array<object> no
task string no
tests array<object> no

Minimal example:

{
  "arguments": {},
  "name": "verify_report"
}

verify_status#

Who may call it: any seat

Purpose: Read a session's verification report; with none, the caller's project, then the workspace.

parameter type required default description
session string no

Minimal example:

{
  "arguments": {},
  "name": "verify_status"
}

worktree_promote#

Who may call it: Chair-only

Purpose: Merge orch/<session> into base. Fail-closed, never pushes.

parameter type required default description
base string no
pr boolean no Push and open a PR with the evidence summary (needs gh; else skipped).
project string no
session string yes
strategy string no

Minimal example:

{
  "arguments": {
    "session": "..."
  },
  "name": "worktree_promote"
}

worktree_prune#

Who may call it: Chair-only

Purpose: Prune orphan orch worktree dirs and orch/* branches.

parameter type required default description
project string no

Minimal example:

{
  "arguments": {},
  "name": "worktree_prune"
}

worktree_status#

Who may call it: Chair-only

Purpose: List this project's orch session worktrees (dirty/orphan).

parameter type required default description
base string no
limit integer no 20
project string no

Minimal example:

{
  "arguments": {},
  "name": "worktree_status"
}