MCP server for searching the web using DuckDuckGo and fetching webpage content
Two tools with basic schemas and descriptions, but significant gaps in parameter documentation and output schema clarity. The 'search' tool has a reasonable description (67 chars) and typed parameters with defaults, but 'fetch_content' lacks parameter descriptions entirely. Neither tool documents return types or error recovery guidance. No tool annotations (readOnlyHint, idempotentHint) despite both being read-only. Parameter descriptions are minimal (e.g., 'The webpage URL to fetch content from' is generic). No guidance on rate limiting, timeout behavior, or failure modes visible in tool definitions. Output formatting happens in code (format_results_for_llm) but is not reflected in schema documentation.
Fetch and parse content from a webpage URL.
Search DuckDuckGo and return formatted results.
fetch_content parameter 'url' lacks description. Parameter descriptions are mandatory for LLM tool selection.
No output schemas documented for either tool. LLMs cannot plan downstream calls or extract structured data without knowing return types.
No tool annotations (readOnlyHint, idempotentHint) despite both tools being read-only and safe to retry. Agents cannot distinguish safe tools from destructive ones.
Error handling lacks recovery guidance. Code returns generic 'No results' or 'Failed to parse' without actionable next steps for the LLM.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 45 | <=2025-11-25 | v2 |
Rate limiting (30 req/min) is implemented in code but not documented in tool descriptions. Agents cannot predict throttling or plan retry delays.