MCP server combining DuckDuckGo search with web page visit and screenshot capabilities
This MCP server has three tools with mixed quality. Tool names follow verb_noun convention (search_duckduckgo, visit_page, take_screenshot), which is good. However, descriptions are minimal (9-39 characters), falling well below the 10-1024 character baseline and the recommended 50-200 character range for LLM optimization. Parameter descriptions are sparse or missing entirely. The visit_page tool lacks any parameter descriptions. Input schemas are present but incomplete, several parameters lack descriptions or type constraints. Output schemas are undocumented, forcing LLMs to guess what fields to expect. Error handling is present in code but not documented in tool descriptions. The take_screenshot tool has no input parameters, which is correct, but its utility is limited without context about when to call it relative to visit_page.
Search the web using DuckDuckGo
Take a screenshot of the current page
Visit a webpage and extract its content
Tool descriptions are critically short (9-39 characters), well below the 10-1024 character baseline and LLM-optimized range of 50-200 characters. 'Search the web using DuckDuckGo' (32 chars) and 'Take a screenshot of the current page' (39 chars) lack context about WHEN to use them, WHAT they return, and HOW they compose with other tools.
Parameter descriptions are missing or incomplete. The 'query' parameter in search_duckduckgo has a description, but 'options' and its nested properties (region, safeSearch, numResults) lack any guidance on valid values or defaults. The 'url' parameter in visit_page has minimal context; 'takeScreenshot' boolean parameter lacks any description explaining when to set it true vs false.
Output schemas are not documented. Tools return structured content (text for search/visit, image for screenshot) but the documentation does not specify what fields or structure LLMs should expect. This forces LLMs to infer output shapes, risking hallucination or misuse in downstream tool chains.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 45 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 8 | - | v1 |
The region parameter defaults to 'zh-cn' (Chinese mainland). This is not discoverable or documented in the tool description. A default region that assumes a specific locale may confuse agents expecting English results or results from other regions.
No error recovery guidance. The code throws McpError with messages like 'Unknown tool' or 'Tool execution failed', but tool descriptions do not explain what errors can occur or what the agent should do (retry, try a different tool, ask the user). Per pattern:recovery-guide, errors must tell the LLM what to do next.
The relationship between visit_page and take_screenshot is unclear. Tool descriptions do not explain that take_screenshot captures the CURRENT page, implying it should be called after visit_page. This undocumented dependency will cause LLMs to misuse the tools or call them in wrong order.
The 'numResults' parameter defaults to 50. The tool description does not explain the range (minimum/maximum), whether 50 is a safe/recommended value, or what happens if the user requests very large numbers.