[FEATURE] Tool manifest — a third tool-loading mode between preload and on-demand

Status Open
Maintainer reply None cached
Activity 0 comments · opened Jul 22, 2026

Preflight Checklist

  • [x] I have searched existing requests and this feature hasn't been requested yet
  • [x] This is a single feature request (not multiple features)

Problem Statement

Current tool-loading modes fail at MCP scale (10s of servers, 100s of tools):

Preload: context bloat plus dual accuracy loss — _tool-selection dilution_ as candidate count grows, and _lost-in-the-middle-class degradation_ across the whole session from a large always-present schema block.

On-demand: recall is bounded by _model priors_, not _registry freshness_. Search keywords come from training; zero-prior tools never get queried. Known tools structurally outcompete unknown ones regardless of task fit, so the long tail of connected tools is dead weight.

Proposed Solution

Solution

Manifest preload: compile a compact, always-in-context manifest of connected tools; schemas stay lazy-loaded.

Compilation. On connector add/change, _incrementally recompile_ that server's entries: name, scope summary, hard preconditions, anti-triggers for overlapping scopes. Server-level, not per-tool — shorter, less drift.
Staleness. _Daily auto-refresh_ + manual trigger. A 1-day-old manifest dominates prior-bounded search on tail recall. Invocation still goes through live retrieval, so stale-entry failure mode is one wasted search, never a phantom invocation.

Preferences (optional). User-editable overlap routing (perplexity_search: research; web_search: lookups), hand-written or elicited by an _overlap-detection skill_. Fallback: model routing, as today. Storable as memories instead.

Surfacing. Two instruction sections: read-only manifest (regenerate button) + editable preferences. In Code/Cowork: CLAUDE_TOOLS.md or managed CLAUDE.md section.

Objections, pre-answered

Injection: same surface as preload mode, same mitigations; compile step summarizes rather than copies verbatim (smaller vector), entries provenance-tagged untrusted.

Coherence: incremental updates + daily refresh bound divergence to 1 day; live retrieval before invocation degrades failures to an extra search.

Cost: scope-level manifest for ~30 servers ≈ low thousands of tokens, cacheable.

Alternative Solutions

Power users already hand-pin tool lists in CLAUDE.md to work around prior-bounded discovery.

Make it a first-class, auto-maintained loading mode: fixes tail recall that keyword search structurally cannot, and restores both routing and task accuracy that full preload sacrifices.

Priority

Critical - Blocking my work

Feature Category

CLI commands and flags

Use Case Example

_No response_

Additional Context

_No response_

View original on GitHub ↗