Single tool with partial schema definition. Tool name follows verb_noun pattern correctly ('search_mcp_servers'). Description is present (67 chars) but generic and lacks actionable context for when/why to use it. Input schema is visible with Zod definitions, but output schema is entirely undocumented. Parameters lack comprehensive descriptions, 'search' parameter has description but constraints are missing (min/max length, pattern); 'limit' and 'cursor' descriptions are present but minimal. No error handling guidance, no pagination details despite cursor parameter suggesting pagination support. No documentation of response format, field names, or data structure. Tool definition is directly visible in index.ts (not inferred), so no inference penalty applies.
Searches for MCP servers on the public registry.
No output schema documentation. Response format is undocumented, LLMs cannot plan downstream calls or extract fields reliably. Source: mcp-server/src/index.ts returns JSON.stringify(data) without documenting structure.
Tool description is generic (67 chars) and lacks actionable context. Does not explain when to use this tool vs similar discovery tools, what data it returns, or required prerequisites. Description: 'Searches for MCP servers on the public registry.', minimal signal for LLM selection.
Parameter 'limit' lacks numeric range constraints. No minimum/maximum specified; unbounded numbers let LLMs pass absurd values (e.g., limit=999999) that waste API quota or cause timeouts.
Parameter 'search' lacks format/length constraints. No guidance on valid query syntax, minimum length, or character restrictions. LLMs may pass empty strings or overly long queries.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 42 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 47 | - | v1 |
Pagination support is implicit (cursor parameter exists) but undocumented. No explanation of how pagination works, what cursor values mean, or how to detect end-of-results. This forces LLMs to guess.
Error handling returns raw error messages without recovery guidance. Example in code: 'Error fetching MCP servers: ${error.message}', LLM cannot determine if error is retryable, user-fixable, or fatal.