A Model Context Protocol server with Exa AI for web search, code search, academic papers, and Twitter/X.com search. Supports deep search types (instant/fast/auto/deep), structured outputs, freshness control, summaries, code-optimized search, and configurable tool selection.
Server has 11 tools with mostly complete schemas and descriptions. Naming follows verb_noun convention (web_search, research_papers, etc.). Descriptions are present and contextual (avg ~150 chars), exceeding the 10-char minimum but below the 50-200 char LLM-optimized range for several tools. All tools show input schemas with types and descriptions. However, output schemas are not documented in the visible code, tool-builder.ts shows formatResponse() but no explicit return type documentation. Error handling is present (handleExaError) but recovery guidance is minimal. No tool annotations (readOnlyHint, destructiveHint) despite all tools being READ_ONLY. Parameter descriptions are adequate but some lack format/range constraints (e.g., numResults accepts 1-50 but not all tools state this clearly). The 'research' tool (tool #10) appears inferred from package.json only, no explicit handler visible in src/tools/.
Get a direct answer to a factual question with citations. Use instead of exa_search when you want a synthesized answer, not raw search results. Does NOT return a list of links — returns a single answer with sources. Not suitable for open-ended research.
Extract content from multiple URLs in a single request. Use instead of multiple crawling calls when you have a list of URLs. Does NOT search — requires known URLs. Supports text, highlights, summaries, subpage crawling, and embedded link/image extraction.
Search for code examples, API usage, and programming patterns across GitHub, docs, and Stack Overflow. Use instead of exa_search for code-specific queries — optimized for code context, not general web. Returns token-efficient snippets with source URLs. Does NOT search general web content.
Research a specific company by crawling its website (about, pricing, FAQ, blog). Use instead of exa_search when you need structured company information, not general search results. Use instead of competitor_finder when researching a known company, not finding unknowns. Does NOT return competitor info — use competitor_finder for that.
Tool #10 'research' lacks visible implementation. Only mentioned in package.json description; no explicit handler in src/tools/. Cannot verify schema, error handling, or composition.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite all 11 tools being READ_ONLY. Agents cannot infer safety properties without explicit hints.
Output schemas not documented. Tool descriptions state what is returned (e.g., 'returns results array') but no formal schema definition visible. LLMs cannot plan downstream tool chains without knowing response structure.
Error handling present but lacks recovery guidance. handleExaError() exists but visible error messages do not suggest next steps (e.g., 'Try search_users() first' pattern absent).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | <=2025-11-25 | v2 |
Identify competitors by describing what a company does (not its name). Use instead of exa_search for competitive intelligence. Use instead of company_research when you want to find unknown competitors, not research a known company. Provide excludeDomain to filter out the target company from results.
Extract full content from a specific URL (article, PDF, or any web page). Use when you already have the URL and need its text. Use instead of exa_search when discovery is not needed. Does NOT search — requires an exact URL. Does NOT accept multiple URLs — use batch_extract for that.
Find similar content to a given URL. Use to discover related articles, pages, and content similar to a known source.
Comprehensive research tool combining search and content extraction. Use for in-depth research requiring both discovery and detailed content analysis.
Search for academic research papers and citations. Use for finding peer-reviewed papers, academic articles, and scholarly content. Optimized for academic research with citation support.
Search Twitter/X.com for posts and discussions. Use for finding tweets, discussions, and social media content. Optimized for Twitter/X search.
Search the web for current information. Use for general web searches, news, and recent information. Supports deep search types (instant/fast/auto/deep), freshness control, and structured outputs.
Parameter constraints incomplete. numResults documented as '1-50' in descriptions but not all tools enforce or explain this consistently. textMaxCharacters lacks guidance on typical values.