Provides tools to clients over the Model Context Protocol, supporting both stdio and SSE
This server implements two READ_ONLY web-oriented tools (search, web) with partial schema coverage. Both tools have reasonable descriptions (92-93 chars, within production baseline of 194 avg) and input schemas present. However, there are critical gaps: no output schema documentation, parameters lack descriptions for several fields, and no error handling guidance. The tools are appropriately named with action verbs (search_, web access pattern), but parameter documentation is incomplete, 'mode' in the web tool has a description but lacks an enum constraint, and 'max_length' has no description at all. No tool annotations (readOnlyHint, etc.) despite both being explicitly READ_ONLY. The schema quality is moderate (all params have types, but some lack descriptions), placing this in the 'Fair' to 'Poor' range for definition quality.
Query a SearXNG instance using its Search API
Access and process web content from a given URL
Output schemas not documented. Both tools return TextContent but expected structure and fields are not specified. LLMs cannot plan downstream operations or extract data without knowing what fields to expect.
Parameter descriptions incomplete. The 'web' tool's 'max_length' parameter lacks any description. The 'search' tool's 'categories', 'engines', 'language', 'time_range', 'format', and 'safesearch' parameters have descriptions but are not formally constrained (no enums, no ranges). LLMs will hallucinate invalid values for unconstrained parameters.
No tool annotations despite explicit READ_ONLY classification. Both tools should declare readOnlyHint=true in their schema to inform clients and agents of their safety. This aids discovery and risk categorization.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 51 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 48 | - | v1 |
No error recovery guidance. The call_tool method catches McpError but provides no actionable error messages. If a search fails or URL is malformed, the LLM receives a generic 'Invalid params' message with no hint about what to do next (retry? try a different query? check URL format?).
No pagination or result limits documented. The 'search' tool has a 'pageno' parameter but no 'limit' parameter and no description of how many results are returned. Large result sets risk context window exhaustion. The tool description should state the max result count and explain pagination.
The 'mode' parameter in the 'web' tool accepts 'markdown', 'raw', or 'links' but these are only mentioned in the description text, not as a formal enum constraint. LLMs may pass invalid mode values like 'html' or 'text' and fail.