Search the web and return top relevant content chunks. Searches DuckDuckGo, fetches top URLs in parallel, extracts text, chunks and scores by relevance.
Three tools with clear verb-noun naming (search_and_scrape, get_more, stealth_fetch) and reasonable descriptions (100-150 chars each). Input schemas present with types and defaults. However, output schemas are undocumented, LLMs cannot predict response structure. Error handling returns generic error dicts without recovery guidance. Parameters lack detailed constraints (e.g., no min/max for num_results, top_k, offset, limit). Missing per-parameter descriptions in schema definitions. No tool annotations (readOnlyHint, idempotentHint). Composition is sound: three single-purpose tools with clear chaining (search_and_scrape → get_more for pagination, stealth_fetch for fallback).
Paginate through cached scored chunks from a previous search. Zero network cost — returns chunks from the in-memory cache.
Search the web and return top relevant content chunks. Searches DuckDuckGo, fetches top URLs in parallel, extracts text, chunks and scores by relevance. Results are cached for pagination via get_more.
Fetch a single URL using stealth browser (Camoufox). Use this for URLs that failed in search_and_scrape due to bot detection. Slower (3-10s) but bypasses most anti-bot protections.
Output schemas undocumented. Tools return dicts with fields like 'chunks', 'error', 'failed_urls', 'total_cached' but LLMs cannot predict structure or plan downstream calls. Responses lack typed field definitions.
Error responses lack recovery guidance. Returning {'error': 'No search results found'} tells LLM nothing about what to do next. Should include suggestions: 'Try a broader query' or 'Check internet connection'.
Parameter constraints missing. num_results (default 10), top_k (default 5), offset, and limit lack min/max bounds. LLMs could pass absurd values (num_results=10000, top_k=-1) that break logic or cause timeouts.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
Tool annotations absent. No readOnlyHint, idempotentHint, or destructiveHint. All three tools are read-only and idempotent but LLMs cannot infer this from definitions.
Parameter descriptions in JSON schema are minimal or absent. 'query' in get_more says 'The same query string used in search_and_scrape' but schema field lacks description attribute. Schema descriptions should be self-contained.