Zero-config Exa web search provider for DeepSeek Harness (dsh): keyless anonymous MCP fallback (mcp.exa.ai/mcp) plus keyed REST search — a drop-in WebSearchProvider for the ctx.web seam, no API key required.
Single tool 'web_search_exa' has a basic description (58 chars) and minimal parameter documentation. Input schema is present with two parameters (query, numResults) but lacks depth: 'numResults' has no min/max bounds, no guidance on defaults or valid ranges. Description is generic and does not explain WHEN to use this tool vs alternatives, what it returns, or error recovery paths. No output schema documented. The tool name lacks a clear action verb prefix (should be 'search_web' or 'web_search' with verb-first convention). Parameter descriptions are terse (query: 'Search query string', numResults: 'Number of results to return (optional, defaults to configured value)'), they do not explain format constraints, expected length, or what 'configured value' means. No error handling guidance visible. This is a minimal, community-grade implementation.
MCP tool name for plain web search on Exa's hosted server
No output schema documented. LLMs cannot plan downstream operations or extract fields from results without knowing the response structure (e.g., are results an array? Do they include URLs, snippets, publish dates?).
Parameter 'numResults' lacks bounds, defaults, and validation guidance. Description says 'defaults to configured value' but does not specify the actual default, min, or max. LLMs will guess or pass absurd values (e.g., 999999).
Tool description (58 chars) is below the 10 - 1024 char baseline and lacks context. Does not explain WHEN to use this tool, what it returns, or how to handle errors. Generic descriptions force LLMs to guess intent.
No error handling guidance. If the search fails (network error, rate limit, invalid query), the tool provides no recovery path. LLMs need actionable error messages like 'Rate limited. Retry in 60s' or 'Query too long. Max 500 chars.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 42 | 2026-07-28+ | v2 |
Tool name 'web_search_exa' does not follow verb-first convention (e.g., 'search_web' or 'search_exa'). LLMs parse intent from the verb, 'web_search_exa' buries the action. Baseline: 90% of A+ tools start with an action verb.