Context-aware web fetching MCP server that respects token limits
Smart WebFetch demonstrates solid tool design with clear naming (verb_noun pattern), comprehensive parameter schemas, and well-structured descriptions. All 7 tools follow consistent patterns with proper input validation (timeout bounds, enums for strategy). Descriptions are action-oriented and include usage guidance ('Always call this first'). However, output schemas are not documented, LLMs cannot predict response structure for downstream planning. Error handling lacks recovery guidance. No tool annotations (readOnlyHint present in metadata but not in schema). Parameter descriptions could be more prescriptive about constraints.
Fetch large documents in chunks. Use for paginated reading of large docs. Returns chunk content plus metadata about total chunks available.
Extract only code blocks from a page. Ideal for documentation pages with code examples. Returns code blocks with language annotations.
Extract all links from a page. Returns a markdown list of links with text and URL. Optionally filter by pattern or external links only.
Fetch only content under a specific heading. Case-insensitive heading match. Use when you only need a specific part of a large document.
Extract tables from a page and return as markdown tables. Handles thead/tbody, th/td cells, colspan, and captions.
Check page size and metadata before fetching. Returns estimated tokens, content type, and whether fetch is safe for context window. Always call this first to avoid context flooding.
Output schemas not documented. LLMs cannot predict response structure (fields, types, pagination) for downstream tool chaining or data extraction planning.
Error handling lacks recovery guidance. No indication of retryable vs fatal errors, or what the LLM should do next (e.g., 'URL unreachable, try a different URL or check the domain').
Tool annotations missing from schema. Risk metadata (READ_ONLY) is in the metadata but not exposed as readOnlyHint in inputSchema, limiting client-side UI optimization.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Fetch URL with automatic truncation if content exceeds token limit. Use web_preflight first to check size. Returns markdown content.
Parameter descriptions lack prescriptive constraints. E.g., 'timeout' says 'default 30, max 120' but doesn't state minimum (1 second assumed). 'chunk_size' has no guidance on practical bounds or token estimation.
No pagination or result-limiting guidance in descriptions. web_fetch_links and web_fetch_tables could return hundreds of items; no mention of caps, pagination, or truncation strategy.