MCP server: Serper web search + robust content retrieval.
The server defines 2 tools with reasonable naming and structure. Both tools have descriptions and basic input schemas. However, there are gaps in parameter descriptions, missing output schema documentation, and no explicit error handling guidance. The tool names (web_search, get_content) follow verb_noun convention and are unambiguous. Descriptions are present but moderate in length (194 chars baseline suggests room for expansion). Input schemas exist with types and descriptions, but output schemas are not documented in the visible code. The web_search tool accepts sensible parameters (query, num_results, return_full_pages) with types, but the get_content tool's URL parameter lacks explicit format constraints (http/https). No enum constraints are used despite opportunities (e.g., search provider selection). Error handling is not visible in the provided code excerpts.
Retrieve and convert page content to Markdown
Web search via Serper (default), Tavily, or a self-hosted SearXNG instance with best-effort scraping/extraction of result pages into Markdown for LLM consumption.
Output schemas not documented. LLMs cannot plan downstream calls or extract data confidently without knowing what fields to expect.
No bounds on numeric parameters. 'num_results' accepts any integer, LLMs could pass absurd values (1000000) that break pagination or timeout.
Error handling and recovery guidance absent. If web_search returns no results or get_content times out, the LLM has no next-step guidance. No pattern for 'try a simpler query' or 'check URL validity'.
Parameter descriptions lack constraint information. 'query' does not specify min/max length or character restrictions. 'url' does not state required format (http/https).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 67 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 43 | - | v1 |
No tool annotations present. Tools are read-only but toolAnnotations feature is absent, LLMs cannot infer safety without explicit readOnlyHint.
Pagination not documented. 'num_results' suggests result limiting, but no mention of total_results, next_cursor, or how large result sets are handled.
No enum for search provider selection. Description mentions 'Serper (default), Tavily, or SearXNG' but these are free-form in the API, inviting hallucinated values.