A Model Context Protocol server for web search using DuckDuckGo, Google Search, and Felo AI
mcp-getweb demonstrates solid definition quality with complete input schemas across all 8 tools and generally clear descriptions. All tools follow a consistent verb_noun naming pattern (search, fetch) and include structured JSON schemas with proper types and constraints. Tool annotations are present for several tools (readOnlyHint, destructiveHint where applicable). However, output schemas are not documented, the server returns results but does not formally specify the structure of success/error responses, which violates the pattern:response-shaper requirement. Parameter descriptions are present and mostly actionable, but several parameters lack nuance (e.g., 'stream' in felo-search is minimally documented). Error handling is present but generic, errors do not guide recovery with next steps. Some tools (url-metadata) have sparse descriptions ("Extract metadata from a URL (title, description, etc.)") that fall below the 50-character baseline for clarity.
Search the web using DuckDuckGo and return results
Search the web via Exa API and return relevant results in Markdown.
Search the web for up-to-date technical information like latest releases, security advisories, migration guides, benchmarks, and community insights
Fetch the content of a URL and return it as text, with options to control extraction
Search Google and return relevant results from the web. This tool finds web pages, articles, and information on specific topics using Google's search engine. Results include titles, snippets, and URLs that can be analyzed further.
Retrieve LLM-friendly content from a single website URL using Jina r.reader API. Useful when you know the specific source of information.
Output schemas not documented. Tools return CallToolResult with success/error responses, but the formal structure of returned fields is not specified. LLMs cannot plan downstream tool calls without knowing what fields to extract.
Error responses are generic and do not provide recovery guidance. Errors return 'Search failed: {error}' or similar without suggesting next steps (e.g., 'Query too broad, try adding specific keywords or domain filters'). This violates pattern:recovery-guide.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 62 | <=2025-11-25 | v2 |
| 2026-03-09 | C | 64 | 2024-11-05+ | v1 |
Search the web via Linkup API and return relevant results in Markdown.
Extract metadata from a URL (title, description, etc.)
url-metadata tool has a sparse description (39 characters: 'Extract metadata from a URL (title, description, etc.)') that does not explain when to use it vs. fetch-url or jina-reader. Description is below the 50-character baseline for clarity and lacks actionable guidance.
felo-search 'stream' parameter lacks detailed description. The description 'Whether to stream the response (default: false)' does not explain what streaming mode does (returns incomplete results incrementally? Real-time updates?), causing LLM confusion about when to enable it.
Result limits are not prominently documented in tool descriptions. Several search tools (google-search, exa_search) accept maxResults parameters, but the descriptions do not explain the performance impact of large result sets or recommend reasonable defaults. Per mxe:enforce-result-limits, LLM reasoning degrades with large result sets.