Hides every MCP and builtin tool from the model until it asks for them by name. Works with any number of MCP servers: the model sees one tool, load_tools, plus the names of every hidden tool grouped by server; a schema loads when the model passes that tool's name.
Single tool 'load_tools' has a well-crafted description (287 chars, within 10-1024 baseline) and clear naming. Input schema is present with proper type and description. However, output schema is not formally documented in the code, the tool returns unstructured text describing loaded tools rather than a typed response object. The tool's purpose is meta (loading other tools) rather than domain-specific, limiting its applicability as a production pattern. Error handling is present (e.g., 'Not found (names must be exact)') but lacks structured recovery guidance. No parameter constraints (enums, ranges) are enforced beyond the description text.
Load tools that the system prompt lists as NOT loaded, by exact name. Pass one or more names, comma-separated, e.g. "{example_many}". The result gives each tool's description and parameters, and the tools are callable immediately afterwards. Pass "*" to list all tool names grouped by source. Names are case-insensitive; a bare name such as "ls" matches "anchor_ls" when one source has it.
Output schema not formally documented. Tool returns free-form text descriptions of loaded tools rather than a structured object with typed fields (e.g., {loaded: [{name, description, parameters}], errors: []}). LLMs cannot reliably parse unstructured output.
No input validation or constraint enforcement. The 'names' parameter accepts free-form strings; no enum, regex pattern, or length limits are declared in the schema. Fuzzy matching (rapidfuzz) is applied at runtime but not documented in the parameter description.
Error responses lack structured recovery guidance. Errors like 'Not found (names must be exact)' are human-readable but do not guide the LLM on next steps (e.g., 'Call load_tools(names="*") to list all available tools').
Tool is meta-level (loads other tools) rather than domain-specific. While well-designed for its purpose, it does not follow the single-responsibility principle in the traditional sense, it is a gateway to other tools, not a direct action tool.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | <=2025-11-25 | v2 |