MCP server for web search with full page content extraction, search summaries, and single page content extraction
Two tools with reasonably clear naming and descriptions, but significant schema and composition issues. Both tools have descriptions that exceed recommended length (200+ chars each). Input schemas are visible and use Zod validation, but output schemas are completely undocumented, LLMs cannot know what fields to expect in responses. Parameters like 'limit' and 'includeContent' lack proper constraints in the descriptions (should state ranges and valid values explicitly). The tools perform related operations on the same resource (web search) but lack clear differentiation guidance. Error handling and recovery paths are not visible in the provided code. No tool annotations (readOnlyHint, etc.) despite both being READ_ONLY operations.
Search the web and fetch complete page content from top results. This is the most comprehensive web search tool. It searches the web and then follows the resulting links to extract their full page content, providing the most detailed and complete information available. Use get-web-search-summaries for a lightweight alternative.
Search the web and return only the search result snippets/descriptions without following links to extract full page content. This is a lightweight alternative to full-web-search for when you only need brief search results. For comprehensive information, use full-web-search instead.
Output schemas completely undocumented. LLMs cannot plan downstream operations or extract fields. Tool handlers return free-text formatted responses (responseText += `...`) without a declared schema structure.
Tool descriptions exceed 200 chars and bury key differentiation. 'full-web-search' description is ~240 chars; 'get-web-search-summaries' is ~210 chars. Baseline recommends 10 - 1024 but optimal is 50 - 200. Both descriptions spend tokens explaining WHAT instead of concisely stating WHEN to use one vs the other.
Parameter 'maxContentLength' description does not state the constraint clearly in prose. Description says 'Usually not needed - content length is automatically optimized' but this is vague guidance. For a numeric parameter with minimum:0, the description should explicitly state the valid range and what 0 means.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 54 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 48 | - | v1 |
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite both tools being READ_ONLY operations. The Risk field in the tool registration shows 'READ_ONLY' but this is not reflected in the MCP schema as tool annotations.
Parameter descriptions lack explicit constraint statements. 'limit' is documented as '(1-10)' in the description text, but constraint language should state 'Valid range: 1 to 10. Defaults to 5.' for clarity. Schema constraints (min:1, max:10) are in Zod but not emphasized in descriptions.
Error handling not visible in provided code. Validation errors exist (e.g., 'Invalid limit', 'Invalid maxContentLength') in Zod transforms, but recovery guidance is absent. No pattern like 'If search fails, try with fewer results or a different query.'