Smart MCP proxy with code execution — connect N MCP servers, expose 2 tools (execute + search). O(1) token cost.
toolmux exposes 2 meta-tools (execute, search) with clear names and reasonable descriptions. Both tools have input schemas with type definitions and parameter descriptions. However, critical gaps limit production readiness: (1) execute tool lacks output schema documentation, agents cannot predict what fields to expect from code execution results; (2) no error handling guidance, when code fails, the tool returns isError=true but does not guide the LLM on recovery steps; (3) search tool returns unstructured text by default, forcing LLMs to parse results rather than consuming structured data; (4) no parameter constraints (enums, ranges, patterns) to prevent invalid inputs; (5) execute tool accepts arbitrary JavaScript with no sandboxing validation or timeout documentation. The tool names are verb-forward (execute, search) and descriptions are adequate (100-150 chars), but lack the depth needed for reliable agent selection in complex scenarios.
Run JS in sandbox. Call tools via await tools.name(args). Return a value. No fetch.
Find available tools by intent. Use before execute when you don't know the tool name or need to see its input schema. Set include_schema=true to get the full JSON Schema for matching tools (avoids a second round trip).
execute tool lacks output schema documentation. Agents cannot predict return structure (logs array, error field, value field). Without documented output schema, LLMs cannot plan downstream operations or extract results reliably.
No error recovery guidance. When code execution fails, tool returns isError=true with error message, but does not tell the LLM what to do next (retry? ask user? try different approach?). Violates error-classification pattern.
search tool returns unstructured text by default (lines joined with newlines). LLMs must parse free-form text rather than consuming structured JSON. When include_schema=true, structured output is available but not default. Violates response-shaper pattern.
execute tool accepts arbitrary JavaScript code with no documented constraints, timeout limits, or sandbox guarantees. Description mentions 'sandbox' but provides no details on execution limits, available APIs, or failure modes. Agents cannot reason about safety or performance.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2025-06-18+ | v2 |
search tool limit parameter lacks range constraint. Description says 'Max results' but does not specify minimum (1?) or maximum (100? 1000?). Unbounded numeric parameters let LLMs pass absurd values.