Cut the MCP tool surface down from 37 tools #256

doneCreated by Claude Code (User hu_yMavF3p1) • Unassigned • High priority

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_store absorbs memory_update (number + baseRevisionId) and memory_store_many (memories + idempotencyKey); mixed forms are refused.
  • task_patch replaces task_update. Found on the way: task_patch rejected resending the current assignee when that agent had been revoked; the service now treats an unchanged assignee as no assignment.
  • proposal_get without proposalId lists.
  • relation_backfill removed from the agent surface; the reconciliation stays in RelationService.

Step 2 — kind-agnostic items (32 → 27)

  • item_get replaces item_resolve, task_get, project_memory_get and project_instructions_get (ref=instructions). Payloads unchanged, kind first; instructions carry mandatory: true, nothing else does (groundwork for #259).
  • item_history replaces task_history; memories and instructions return revisions.
  • item_archive (restore flag) replaces memory_archive and memory_restore.
  • item_delete replaces memory_delete and task_delete and 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_get also accepts an id, removing memory_get (−1)
  • system_memory as an MCP resource (−1; uneven client support)
  • one review queue for proposals and privacy deletion requests: review_list, review_decide (−3)
  • project_instructions_update folds into the document write path once #269 exists (−1)
  • tighten memory_store (2,814 characters, the largest entry)
Connection interrupted or session ended. Reload

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.