Strips ALL tool definitions from every LLM request. The LLM only sees load_tool as a callable tool. To use any other tool (built-in, user-installed, or MCP), the LLM must call load_tool — there is no other path.
This is a plugin/middleware tool, not a traditional MCP server. The single tool 'load_tool' has a reasonable description but critical structural issues: (1) The input schema is visible and typed, but the tool's core function is to dynamically load and execute OTHER tools, making it a meta-tool that bypasses normal tool discovery. (2) The description is ~280 chars, adequate, but the tool's design violates single-responsibility and composition patterns, it conflates tool discovery (returning schema) with tool execution (running the tool). (3) No output schema is documented; the tool returns either a schema object or execution results, both unstructured. (4) Error handling is absent from the visible code. (5) The tool accepts arbitrary tool names and arguments, creating a security surface (injection risk via 'name' and 'args' parameters). (6) The 'args' parameter is typed as 'object' with no schema constraints, inviting malformed payloads.
On-demand tool loader. Two modes: load_tool({name: "read"}) returns full instructions + schema; load_tool({name: "read", args: {path: "/x"}}) executes read({path: "/x"}). Provides access to all available tools (built-in, user-installed, and MCP) that are otherwise hidden from the LLM.
No output schema documented. Tool returns either a schema object (for discovery mode) or execution results (for execute mode), both unstructured. LLMs cannot plan downstream calls or extract required fields.
Input parameter 'args' is typed as generic 'object' with no schema constraints. Accepts arbitrary JSON, inviting malformed payloads and injection attacks. Should validate against the target tool's schema.
Tool conflates two distinct operations: discovery (return schema) and execution (run tool). Violates single-responsibility principle. Should be split into load_tool_schema and execute_tool, or clearly document mode-switching behavior.
No error handling visible. Tool accepts arbitrary tool names; if a name is invalid or execution fails, no recovery guidance is provided. LLM cannot self-correct.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | 2026-07-28+ | v2 |
Security: 'name' parameter accepts any string and is used to look up and execute tools. No validation against a whitelist. Malicious or typo'd names could trigger unintended tool execution or information disclosure.