Fact
16 of 59 registered tools have 0 calls in the entire observation history (13,105 sessions, 80,523 calls, including 76k dev): between, chains, flag, ideas, link_cloud, outcomes, path, read_chain, rename_initiative, reopen, reweight, surface, tagged, test, trace, unpin. Another ~10 have single-digit counts. A 60-tool surface dilutes choice and burns context on the tool listing; in deferred-tool environments the agent sees names only, and names like surface/ideas/flag mean nothing without a description (we even recorded a call to a nonexistent mcp__kaeru__hobbies — a hallucinated name).
Breakdown by fate (from the audit, verified)
Merge/collapse:
path → a dry-run mode of chain (path's own description points to chain; chain is idempotent and reports disconnection);
chains → let read_chain accept a member node and find its chains (absorbs chains);
reweight → upsert semantics on link (link on an existing edge updates weight; weight is already set at creation — dozens of strong=true in transcripts);
flag → alias of link edge_type=contradicts (identical semantics per under_review.rs; agents already run the review flow through link by hand);
between → show edges in drill (the "why are A and B connected" question doesn't arise — drill already shows neighbors);
ideas/outcomes → sections of overview (called 209 times — the display case already exists; today ideas is empty on the ENTIRE graph, outcomes=4 — these tools literally have nothing to return).
Leave as-is (zero base need, not discoverability): unpin (pin=4), rename_initiative — admin CRUD on explicit request.
Separate issues: test (epistemic cycle), link_cloud (cloud), tagged/surface/trace (read nudges + instructions).
Proposal
Walk the list above: each merge shrinks the surface without losing function. Success metric — the chains cluster read/write ratio (currently 3/25, and all "reads" are maintenance).
Fact
16 of 59 registered tools have 0 calls in the entire observation history (13,105 sessions, 80,523 calls, including 76k dev):
between, chains, flag, ideas, link_cloud, outcomes, path, read_chain, rename_initiative, reopen, reweight, surface, tagged, test, trace, unpin. Another ~10 have single-digit counts. A 60-tool surface dilutes choice and burns context on the tool listing; in deferred-tool environments the agent sees names only, and names like surface/ideas/flag mean nothing without a description (we even recorded a call to a nonexistentmcp__kaeru__hobbies— a hallucinated name).Breakdown by fate (from the audit, verified)
Merge/collapse:
path→ a dry-run mode ofchain(path's own description points to chain; chain is idempotent and reports disconnection);chains→ letread_chainaccept a member node and find its chains (absorbs chains);reweight→ upsert semantics onlink(link on an existing edge updates weight; weight is already set at creation — dozens of strong=true in transcripts);flag→ alias oflink edge_type=contradicts(identical semantics per under_review.rs; agents already run the review flow through link by hand);between→ show edges in drill (the "why are A and B connected" question doesn't arise — drill already shows neighbors);ideas/outcomes→ sections of overview (called 209 times — the display case already exists; today ideas is empty on the ENTIRE graph, outcomes=4 — these tools literally have nothing to return).Leave as-is (zero base need, not discoverability):
unpin(pin=4),rename_initiative— admin CRUD on explicit request.Separate issues:
test(epistemic cycle),link_cloud(cloud),tagged/surface/trace(read nudges + instructions).Proposal
Walk the list above: each merge shrinks the surface without losing function. Success metric — the chains cluster read/write ratio (currently 3/25, and all "reads" are maintenance).