A Model Context Protocol (MCP) server for searching the web and fetching web content using DuckDuckGo
Server implements 2 tools with basic definitions but significant gaps in production readiness. Tool names follow verb_noun pattern (search, fetch_web_content) which is correct. However, descriptions are minimal (16-34 chars), parameter descriptions are sparse or missing entirely, output schemas are not documented, and error handling guidance is absent. The 'search' tool description 'Search the web using DuckDuckGo' is only 31 chars, below the 10-1024 char guideline and lacks context on when to use it vs alternatives. The 'fetch_web_content' tool (34 chars) similarly lacks detail on what it returns, when to call it, or how it relates to search. Input schemas show parameter types but lack descriptions for the parameters themselves, violating pattern:tool-description. No output schema is visible in the provided code. Per-tool scores average to 42, placing this in the D range (50-59 boundary) for definition quality.
Fetch and extract web content from a URL
Search the web using DuckDuckGo
Tool descriptions are critically short (<35 chars) and lack context. 'Search the web using DuckDuckGo' does not explain when to use this tool vs other search options, what parameters are required, or what structure is returned.
Input parameters lack descriptions. The 'query' parameter in 'search' and 'url' parameter in 'fetch_web_content' have no description explaining format, constraints, or usage context. LLMs cannot infer parameter semantics from names alone.
Output schemas are not documented in the provided code. LLMs cannot determine what fields to expect from tool responses, making downstream tool chaining and result extraction error-prone.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 44 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 44 | - | v1 |
No error handling or recovery guidance present. If 'search' returns no results or 'fetch_web_content' encounters a network error, the tool provides no actionable error message or recovery suggestions.
No pagination support visible in 'search' tool. Large result sets could exhaust context windows without limit/offset/page_size parameters and total count in responses.
Parameter 'url' in fetch_web_content accepts any string without format validation. Description should specify expected format (must be valid HTTP/HTTPS URL, max length, etc.) to prevent invalid inputs.