Cut the MCP tool surface down from 37 tools #256
Description
Result (deployed 2026-09-16)
37 tools, 25,852 characters → 27 tools, 19,020 characters: 26% less context in every agent session. McpDiscoveryTests.ToolListStaysWithinItsContextBudget pins 27 / 19,020 and prints per-tool sizes.
Commits: 2bb5bd4 budget test, 334c5f3 step 1, 5612bad step 2, 8dba19a docs.
Step 1 — merges (37 → 32)
memory_storeabsorbsmemory_update(number + baseRevisionId) andmemory_store_many(memories + idempotencyKey); mixed forms are refused.task_patchreplacestask_update. Found on the way:task_patchrejected resending the current assignee when that agent had been revoked; the service now treats an unchanged assignee as no assignment.proposal_getwithout proposalId lists.relation_backfillremoved from the agent surface; the reconciliation stays inRelationService.
Step 2 — kind-agnostic items (32 → 27)
item_getreplacesitem_resolve,task_get,project_memory_getandproject_instructions_get(ref=instructions). Payloads unchanged,kindfirst; instructions carrymandatory: true, nothing else does (groundwork for #259).item_historyreplacestask_history; memories and instructions return revisions.item_archive(restore flag) replacesmemory_archiveandmemory_restore.item_deletereplacesmemory_deleteandtask_deleteand only requests privacy deletion.
Deviation: item_search was not introduced. Tasks are not searchable today, and renaming memory_search would promise a search that does not exist. Revisit with #273.
All 28 projects had empty stored instructions, so no stored guidance referenced removed tools. Connected clients must reload their MCP connection to see the new list.
Open options (separate decisions)
item_getalso accepts an id, removingmemory_get(−1)system_memoryas an MCP resource (−1; uneven client support)- one review queue for proposals and privacy deletion requests:
review_list,review_decide(−3) project_instructions_updatefolds into the document write path once #269 exists (−1)- tighten
memory_store(2,814 characters, the largest entry)