Multi-source aggregated search engine backend with NestJS + failover support, providing REST API and MCP protocol interface for web search across multiple providers (Tavily, Doubao, Brave, Exa, Browserbase) with access key authentication
Single tool 'search' has a reasonable description (104 chars, within 10-1024 range) and input schema with three parameters. However, critical gaps undermine quality: parameter descriptions are present but lack actionable constraints (no enums for provider types, no format specs for query); output schema is completely undocumented (no return type visible); no error handling guidance; no indication of pagination or result limits despite aggregating multiple sources. The tool name 'search' is generic and lacks the verb_noun clarity pattern (e.g., 'web_search' or 'aggregate_search' would be clearer). Tool definition appears in frontend/src/router.js rather than backend MCP service code, suggesting the schema may be inferred rather than explicitly registered in the MCP service implementation.
Execute a multi-source aggregated web search with failover support across configured search providers
Output schema completely undocumented. No return type, field structure, or pagination info visible. LLMs cannot plan downstream operations or extract relevant data.
Parameter 'onlyTypes' and 'excludeTypes' lack enum constraints. Descriptions say 'e.g., [tavily, brave]' but do not formally define valid provider types. LLMs may hallucinate invalid provider names.
No result limit or pagination documented. Multi-source aggregation could return hundreds of results, exhausting context window. No guidance on max results, offset, or cursor.
No error handling guidance. Tool description does not explain what happens if all providers fail, network timeout occurs, or query is invalid. LLM has no recovery path.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | 2026-07-28+ | v2 |
Tool definition sourced from frontend router code, not backend MCP service. Suggests schema may be inferred rather than explicitly registered in McpService. Cannot verify actual MCP tool registration.