SearXNG-backed search for research agents, with structured citations and a per-result detection layer (DOI / source class / OA / content-type). Designed for AI coding and research agents (OpenCode, Claude Code, etc.) so the LLM can reference sources with (label) markers and produce a "Sources:" section at the end of its response.
Server has 6 tools with complete input schemas and descriptions. Naming is clear and verb-based (search, news_search, science_search). Descriptions are detailed (150-250 chars) and explain what each tool does. However, 3 tools are deprecated aliases that should be removed, creating confusion. Output schemas are not explicitly documented in the visible code. Error handling exists but recovery guidance is minimal. Parameter descriptions are present but some lack format constraints (e.g., timeRange accepts 'day', 'week', 'month', 'year' but no enum). The server handles content fetching and DOI detection well, but the tool interface could be more composable.
Deprecated alias for news_search tool. Search for news using SearXNG with structured citations.
Deprecated alias for science_search tool. Search for scientific papers and academic content using SearXNG with structured citations.
Deprecated alias for search tool. Search the web using SearXNG with structured citations.
Search for news using SearXNG with optional content fetching and DOI detection. Returns news results with structured citations and source classification.
Search for scientific papers and academic content using SearXNG with optional content fetching and DOI detection. Returns academic results with structured citations, source classification, and detected DOIs.
Search the web using SearXNG with optional content fetching and DOI detection. Returns results with structured citations, source classification (primary_publisher, academic_repository, preprint_server, aggregator, suspect, grey_lit_or_unknown), and detected DOIs.
Three deprecated tool aliases (cited_search, cited_news_search, cited_science_search) clutter the interface and confuse LLM tool selection. Deprecation notices in descriptions are insufficient, these should be removed entirely or hidden behind a feature flag.
Parameter 'timeRange' accepts free-form strings ('day', 'week', 'month', 'year') without enum constraint. LLMs may hallucinate invalid values like 'fortnight' or 'last-30-days'. Should be declared as enum: ['day', 'week', 'month', 'year'].
Output schema not documented in visible code. LLMs cannot plan downstream operations without knowing what fields (title, url, source_class, doi, content, etc.) are returned. Add explicit response schema documentation.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
Parameter 'categories' and 'engines' accept comma-separated strings without validation. LLMs may pass invalid category names or engine IDs. Should validate against SearXNG's actual category/engine list or provide enum constraints.
Error handling returns generic messages without recovery guidance. When a search fails or times out, the response should suggest alternatives (e.g., 'Try reducing maxResults or disabling fetchContent').