MCP server providing web search and internet access capabilities via DuckDuckGo and HTTP fetching
Two tools with basic descriptions and partial schemas. search_duckduckgo has a complete input schema with types and descriptions; fetch_from_internet lacks num_results equivalent and has minimal parameter documentation. Both descriptions are under 100 chars and lack context on when to use each tool or what happens on error. No output schemas documented. No error recovery guidance. No tool annotations (readOnlyHint). Naming is verb-forward but descriptions do not explain dependencies or failure modes.
Fetch data from a specified URL on the internet
Search the web using DuckDuckGo
No output schemas documented. LLMs cannot plan downstream calls or extract fields from search_duckduckgo results (title, snippet, url) or fetch_from_internet response (status, headers, content). Agents must infer structure from code.
fetch_from_internet description is 56 chars and lacks actionable context. Does not explain when to use vs search_duckduckgo, what happens on network errors, or whether it follows redirects. Descriptions under 100 chars risk LLM confusion on tool selection.
Error handling returns unstructured error dicts (e.g. {"error": str(e)}) without recovery guidance. LLM cannot determine if error is retryable, user-fixable, or fatal. No actionable next steps provided.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 43 | <=2025-11-25 | v2 |
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Both tools are read-only but this is not declared in the schema, forcing LLMs to infer safety from descriptions alone.
fetch_from_internet accepts only 'url' parameter with minimal description. No guidance on URL format, timeout behavior, max response size, or content-type handling. Parameter description is 32 chars, below 72-char baseline.