Fast LLM-free search-to-context engine for AI agents
Three tools with clear verb-noun naming (search, collect_sources, build_context) and solid descriptions (194 - 250 chars, within baseline 34 - 392). All parameters have types and descriptions. However, output schemas are not formally documented in the code, responses are inferred from model_dump() calls. Error handling is absent: no guidance on retryable vs fatal failures, no actionable recovery messages. Missing parameter constraints (enums, ranges) for language and numeric limits. No mention of timeout behavior or rate limits despite external HTTP calls.
Full search-to-context pipeline: search → fetch → extract → rank → pack. Returns: context_text: Ranked, token-bounded Markdown passages ready for an LLM prompt. token_estimate: Approximate token count of context_text. stats: Pipeline statistics (results, fetched, extracted, passages, timing).
Search, fetch and extract source pages. Returns per-source fetch / extraction status and aggregated stats. Useful for debugging what content is available before calling build_context.
Search the web via SearXNG and return raw results (title, url, snippet). No page fetching is performed. Useful for quick URL discovery.
Output schemas not formally documented. Tools return dict/list via model_dump() but LLMs cannot see the field structure, types, or required fields. Agents must infer output shape from descriptions alone.
No error handling or recovery guidance. Tools may fail (network timeout, SearXNG unavailable, extraction failure) but provide no actionable error messages. LLMs cannot distinguish retryable from fatal failures.
Parameter constraints missing. 'language' accepts any string (should be enum: en, de, fr, etc.). 'max_results', 'max_sources', 'max_passages', 'budget_tokens' lack min/max bounds. LLMs may pass invalid values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Timeout and rate-limit behavior undocumented. Tools call external SearXNG and fetch arbitrary URLs with _TIMEOUT=10s, but no description warns of timeout errors or retry guidance. Agents cannot plan for failures.
No pagination or result limits enforced in descriptions. 'search' returns up to 10 results by default, but description does not state this limit or explain pagination. Large result sets could bloat context.