The server implements a single search tool with reasonable parameter constraints and output structure. The tool name 'search' is verb-based but generic; a more specific 'search_duckduckgo' would better distinguish this tool from other search implementations. The tool description is adequate (119 chars) and explains the use case ('Use when higher-quality websearch tools are unavailable'). Input schema is present with proper types (string, integer) and reasonable bounds (max_results 1-15, default 5). Output schema is documented with structured result objects. However, there are moderate gaps: parameter descriptions could be more explicit about constraints and use cases, error handling lacks recovery guidance for LLMs, and the response does not include metadata fields (like result rank or relevance score) that downstream tools or agents might need. The tool is well-formed but pedestrian, it lacks the polish and detail expected of A-grade production tools.
Search DuckDuckGo HTML results and return title, URL, and snippet. Use when higher-quality websearch tools are unavailable.
Tool name 'search' is too generic and does not differentiate this DuckDuckGo implementation from other search tools (e.g., Google, Bing). LLMs may conflate or misselect when multiple search tools are available.
Parameter 'max_results' description states constraint '(1-15)' as text rather than leveraging the schema's minimum/maximum fields for machine-parseable clarity. Description should explain the rationale (e.g., 'DuckDuckGo HTML scraping is slow; higher limits increase timeout risk').
Error handling returns generic failure messages ('Search failed: <error>') without recovery guidance. When bot detection ('Too many requests') or network errors occur, the response should suggest retry strategy, backoff, or fallback to a different search provider.
Output schema returns only title, url, and snippet. Missing rank/position, score/relevance, or fetch_time metadata that downstream tools or agents may need for result filtering, deduplication, or freshness checks.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 55 | 2025-06-18+ | v2 |
| 2026-03-09 | F | 48 | - | v1 |
Tool uses TTL cache (3 minutes) but does not document this behavior to the LLM. If an agent calls search('current stock prices') twice in a minute and expects fresh results, cached stale data may silently disappoint. Cache behavior should be visible in the tool description or warnings.