Fault-tolerant MCP Server for Stealth Web Search and Fetching
SearchFetch defines 2 tools with reasonable parameter schemas and descriptions. Both tools have clear action verbs (webfetch, websearch) and non-empty descriptions (60-80 chars). Input schemas are present with typed parameters and descriptions for most fields. However, output schemas are not documented in the visible code, the tool definitions show inputs but no explicit return type documentation. Error handling is basic (errorReporting=true but no recovery guidance visible). Parameter descriptions lack format constraints and validation rules (e.g., max_length bounds, template format details). No tool annotations (readOnlyHint, idempotentHint) despite both being read-only operations.
Fetch and extract structured data from a web page using a template
Search the web using a search engine template and extract results
Output schemas not documented. Tool definitions show input parameters but no explicit return type, field structure, or example response. LLMs cannot plan downstream operations or extract required fields.
Parameter descriptions lack format constraints and validation rules. 'max_length' and 'start_index' have no bounds documented (e.g., min/max values). 'template' parameter accepts 'raw', inline JSON, or template name but format is not specified.
No tool annotations despite both tools being read-only. readOnlyHint should be set to true for both webfetch and websearch to signal to agents that these operations are safe to retry and have no side effects.
Error handling lacks recovery guidance. errorReporting=true but no visible error messages that tell LLMs what to do next (e.g., 'Invalid URL format. Must be HTTP or HTTPS with a hostname.').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
Parameter 'region' in websearch lacks enum constraint. Description says 'e.g., us, en-US' but does not specify valid values or format. LLMs may hallucinate invalid region codes.