Optional eager-schema-load hint for MCP servers / plugins

Resolved 💬 3 comments Opened May 3, 2026 by timncox Closed May 7, 2026

Problem

Tool schemas are deferred behind ToolSearch by default — the model sees tool names but must do a discovery call to load schemas before invoking. This is the right default when 1000s of schemas would otherwise sit in the system prompt unused.

But for some MCPs the tools are virtually certain to be called as soon as the session starts. Example: a Kodak Charmera digital-camera MCP whose menu-bar app launches claude "<curated import prompt>" whenever the camera is mounted. In that flow:

  • 100% of sessions immediately call detect_camera, prepare_camera_import, read_photo
  • The mandatory ToolSearch round-trip costs one extra LLM turn (latency) plus ~300–500 tokens for the discovery output (cost)
  • The discovery output is then cached forever in the transcript even though the model only needed it once

Proposed behavior

Let MCPs / plugins opt into eager schema loading — schemas land in the initial system context without ToolSearch. Several possible shapes; not prescribing one:

(a) Manifest flag

{ "name": "charmera", "mcp": { }, "eager": true }

(b) Conditional trigger (matches existing plugin trigger semantics)

{ "eager": { "when": "<predicate>" } }

(c) Per-project opt-in via slash command or settings
User runs /charmera-eager once; harness persists per project.

(d) Session-prompt directive
<eager>charmera</eager> in the user prompt or CLAUDE.md to load named MCPs eagerly for that session.

Tradeoffs / open questions

  • Need a hard cap on eager schemas so a misbehaving plugin can't bloat the system prompt
  • Does (b) need a sandboxed predicate language, or is a shell exit-code check enough?
  • Should eager loading also bypass the tool-name reminder (see related issue) so the schemas are the only thing that lands?

Use case

charmera-mcp (https://github.com/timncox/charmerapp) ships in Charmera.app/Contents/MacOS/charmera-mcp and is launched by a menu-bar app whenever the camera mounts. Every invocation currently pays the ToolSearch tax for tools that are guaranteed to be called within the next two turns.

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗