An MCP server that provides web search capabilities through SearXNG and URL content extraction
The server defines 2 tools with reasonable naming conventions (web_search, url_read both start with action verbs) and basic input schemas. However, critical gaps undermine quality: (1) parameter descriptions are present but often generic and lack actionable constraints (e.g., 'safesearch' lists enum values '0: None, 1: Moderate, 2: Strict' in the description rather than as formal enum constraints); (2) output schemas are NOT documented anywhere in the source code, LLMs cannot plan downstream usage without knowing what fields to expect; (3) error handling is minimal, no guidance on recovery, retryability, or user-fixable errors; (4) parameter relationships and constraints are documented informally in text rather than via JSON Schema validation rules (min/max for pageno, format requirements for time_range); (5) no security annotation (both tools accept arbitrary URLs/queries without sanitization guidance). The url_read tool's optional parameters (startChar, maxLength, section, paragraphRange, readHeadings) show reasonable composition but lack clear mutual-exclusivity guidance. Naming is adequate but not optimized for LLM parsing.
Read the content from a URL. Use this for further information retrieving.
Performs a web search using the SearXNG API, ideal for general queries, news, articles, and online content.
Output schemas not documented for either tool. LLMs cannot plan downstream tool calls or structure data extraction without knowing result format.
Parameter constraints (enums, bounds, formats) are documented in description text rather than as formal JSON Schema constraints. LLMs cannot parse informal descriptions reliably.
No error handling or recovery guidance. Tools offer no indication of what can fail, how to recover, or whether errors are retryable.
Tool descriptions are below 100 characters (below ideal for LLM selection clarity) and lack WHEN/WHY guidance. 'url_read' description is only 63 chars and uses vague phrasing.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 56 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 41 | - | v1 |
Parameter relationships in 'url_read' (section vs paragraphRange, startChar + maxLength vs readHeadings) are not documented. Mutually exclusive or dependent parameters need explicit guidance.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Both tools are read-only, which should be marked for proper agent behavior.