MCP proxy that replaces tool definitions with semantic search
Three tools with clear action verbs and reasonable descriptions (avg 156 chars), but significant gaps in schema completeness and parameter documentation. search_tools and call_tool have documented input schemas with type info, but output schemas are undocumented. load_mcp_server lacks parameter descriptions entirely. No error handling guidance, no enum constraints, no parameter validation rules stated. Tool composition is sound (search → call → load pattern), but parameter descriptions are sparse or missing.
Call a tool on a downstream MCP server. Use the qualified tool name (e.g. 'github__create_issue') from search_tools results. Pass the arguments as a JSON object matching the tool's parameter schema.
Dynamically connect to a new remote MCP server by URL and index its tools for search.
Search for available tools by describing what you want to do. Returns matching tool definitions with their names, descriptions, and parameter schemas. Use the tool name from results with `call_tool` to invoke.
Output schemas undocumented. search_tools returns results with 'tool' and 'score' fields, but LLMs cannot infer the structure of tool.input_schema or how to extract qualified_name. call_tool and load_mcp_server output schemas are completely absent.
load_mcp_server parameters lack descriptions. 'server_name' and 'url' have no guidance on format, constraints, or validation rules. LLMs cannot determine if 'server_name' must be unique, alphanumeric, or if 'url' requires https://.
No error handling guidance. If call_tool fails (auth error, tool not found, invalid args), the description does not explain what the LLM should do next. No recovery paths documented.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
call_tool 'arguments' parameter is type 'object' with no schema constraints. LLMs cannot validate argument structure before calling. No guidance on how to match arguments to the tool's parameter schema.
search_tools 'top_k' parameter defaults to 5 but no min/max bounds stated. LLMs could pass 0, 1000, or negative values. No guidance on result quality vs quantity tradeoff.