Exa MCP Server
Exa MCP サーバー 🔍
モデルコンテキストプロトコル(MCP)サーバーにより、ClaudeのようなAIアシスタントはExa AI Search APIを使用してWeb検索を行うことができます。この設定により、AIモデルは安全かつ制御された方法でリアルタイムのWeb情報を取得できます。
前提条件 📋
Node.js (v18以上)
クロードデスクトップがインストール済み
Related MCP server: Exa MCP Server
インストール 🛠️
NPMのインストール
npm install -g exa-mcp-server鍛冶屋を使う
Smithery経由で Claude Desktop 用の Exa MCP サーバーを自動的にインストールするには:
npx -y @smithery/cli install exa --client claude設定 ⚙️
1. Claude DesktopをExa MCPサーバーを認識するように設定する
claude_desktop_config.json は、Claude デスクトップ アプリの設定内にあります。
Claude デスクトップ アプリを開き、左上のメニュー バーから開発者モードを有効にします。
有効にしたら、設定(左上のメニューバーから)を開き、開発者向けオプションに移動します。そこに「設定を編集」ボタンがあります。これをクリックすると、claude_desktop_config.jsonファイルが開き、必要な編集を行うことができます。
または(ターミナルからclaude_desktop_config.jsonを開く場合)
macOSの場合:
Claude デスクトップ構成を開きます。
code ~/Library/Application\ Support/Claude/claude_desktop_config.jsonWindowsの場合:
Claude デスクトップ構成を開きます。
code %APPDATA%\Claude\claude_desktop_config.json2. Exa サーバー構成を追加します。
{
"mcpServers": {
"exa": {
"command": "npx",
"args": ["/path/to/exa-mcp-server/build/index.js"],
"env": {
"EXA_API_KEY": "your-api-key-here"
}
}
}
}your-api-key-here dashboard.exa.ai/ api-keys からの実際の Exa API キーに置き換えます。
3. 利用可能なツールとツールの選択
Exa MCP サーバーには次のツールが含まれており、 --toolsを追加することで有効にできます。
web_search_exa : 最適化された結果とコンテンツ抽出を使用して、リアルタイムの Web 検索を実行します。
research_paper_search : 学術論文や研究内容に焦点を当てた専門的な検索。
company_research : 企業の Web サイトをクロールして、ビジネスに関する詳細な情報を収集する包括的な企業調査ツール。
クロール: 特定の URL からコンテンツを抽出します。正確な URL がわかっている場合に、記事、PDF、または任意の Web ページを読むのに役立ちます。
compete_finder : 同様の製品やサービスを提供している企業を検索して、企業の競合他社を特定します。
linkedin_search :Exa AIを使用してLinkedInで企業や人物を検索します。クエリに企業名、人物名、または特定のLinkedIn URLを入力するだけです。
wikipedia_search_exa : 特定のトピックに関する Wikipedia の記事から情報を検索して取得し、世界最大の百科事典から正確で構造化された知識を提供します。
github_search : Exa AI を使用して GitHub リポジトリを検索 - GitHub.com でリアルタイム検索を実行し、関連するリポジトリ、問題、GitHub アカウントを見つけます。
Claude Desktop 構成に--toolsパラメータを追加することで、有効にするツールを選択できます。
有効にするツールを指定します。
{
"mcpServers": {
"exa": {
"command": "npx",
"args": [
"/path/to/exa-mcp-server/build/index.js",
"--tools=web_search_exa,research_paper_search,company_research,crawling,competitor_finder,linkedin_search,wikipedia_search_exa,github_search"
],
"env": {
"EXA_API_KEY": "your-api-key-here"
}
}
}
}複数のツールを有効にするには、コンマ区切りのリストを使用します。
{
"mcpServers": {
"exa": {
"command": "npx",
"args": [
"/path/to/exa-mcp-server/build/index.js",
"--tools=web_search_exa,research_paper_search,company_research,crawling,competitor_finder,linkedin_search,wikipedia_search_exa,github_search"
],
"env": {
"EXA_API_KEY": "your-api-key-here"
}
}
}
}ツールを指定しない場合は、デフォルトで有効になっているすべてのツールが使用されます。
4. Claude Desktopを再起動します
変更を有効にするには:
Claude Desktopを完全に終了します(ウィンドウを閉じるだけではありません)
Claude Desktopを再度起動します
Exaサーバーが接続されていることを確認するには、🔌アイコンを探してください
NPX経由の使用
サーバーを直接実行したい場合は、npx を使用できます。
# Run with all tools enabled by default
npx exa-mcp-server
# Enable specific tools only
npx exa-mcp-server --tools=web_search_exa
# Enable multiple tools
npx exa-mcp-server --tools=web_search_exa,research_paper_search
# List all available tools
npx exa-mcp-server --list-toolsトラブルシューティング🔧
よくある問題
サーバーが見つかりません
npmリンクが正しく設定されていることを確認する
Claude Desktop の設定構文を確認する
Node.jsが正しくインストールされていることを確認する
APIキーの問題
EXA_API_KEYが有効であることを確認してください
Claude Desktop の設定で EXA_API_KEY が正しく設定されていることを確認します。
APIキーの周囲にスペースや引用符がないことを確認してください
接続の問題
Claude Desktopを完全に再起動します
Claude Desktop のログを確認します。
Node.js は最低でもバージョン 18 (またはそれ以上) が必要です
# macOS tail -n 20 -f ~/Library/Logs/Claude/mcp*.log # Windows type "%APPDATA%\Claude\logs\mcp*.log"
Exaチームが❤️を込めて製作
Available Tools
8 toolscompany_research_exaCInspect
Research companies using Exa AI - finds comprehensive information about businesses, organizations, and corporations. Provides insights into company operations, news, financial information, and industry analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| companyName | Yes | Name of the company to research | |
| numResults | No | Number of search results to return (default: 5) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. While it mentions the tool 'finds comprehensive information' and 'provides insights', it doesn't describe what format the results come in, whether there are rate limits, authentication requirements, cost implications, or how the tool handles ambiguous company names. For a research tool with no annotation coverage, this leaves significant behavioral questions unanswered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured in two sentences that clearly communicate the tool's purpose and capabilities. The first sentence establishes the core function, and the second elaborates on the types of insights provided. There's no wasted language, though it could be slightly more specific about the tool's scope relative to siblings.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a research tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what format the results will be in, how comprehensive the information actually is, whether there are limitations on company types or regions, or what happens when no information is found. The description covers basic purpose but leaves too many practical usage questions unanswered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents both parameters ('companyName' and 'numResults'). The description doesn't add any parameter-specific information beyond what's in the schema. It mentions researching companies generally but provides no additional context about parameter usage, formatting requirements, or search behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Research companies using Exa AI' with specific resources ('businesses, organizations, corporations') and outcomes ('comprehensive information', 'insights into company operations, news, financial information, and industry analysis'). It distinguishes from generic search tools but doesn't explicitly differentiate from sibling tools like 'linkedin_search_exa' or 'deep_researcher_start'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With multiple sibling tools including 'linkedin_search_exa', 'web_search_exa', and 'deep_researcher_start', there's no indication of when this company-specific research tool is preferred over other search or research tools. The description only states what it does, not when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crawling_exaBInspect
Extract and crawl content from specific URLs using Exa AI - retrieves full text content, metadata, and structured information from web pages. Ideal for extracting detailed content from known URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL to crawl and extract content from | |
| maxCharacters | No | Maximum characters to extract (default: 3000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions what the tool retrieves ('full text content, metadata, and structured information') but lacks critical behavioral details: no information about rate limits, authentication requirements, error handling, or what happens when maxCharacters is exceeded. For a web crawling tool with no annotation coverage, this leaves significant gaps in understanding operational constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately concise with two sentences that each serve a purpose: the first defines the core functionality, the second provides usage context. It's front-loaded with the main purpose. While efficient, the second sentence could be slightly more specific about the 'known URLs' distinction compared to sibling tools.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 2 parameters with 100% schema coverage but no annotations and no output schema, the description provides adequate basic context about what the tool does. However, for a web crawling tool that likely has operational constraints (rate limits, authentication, error cases) and returns complex data, the description should ideally mention more about behavioral aspects and expected output format since there's no output schema to document return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema - it doesn't explain URL format requirements, character counting methodology, or provide examples. With complete schema coverage, the baseline score of 3 is appropriate as the description doesn't enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Extract and crawl content from specific URLs using Exa AI - retrieves full text content, metadata, and structured information from web pages.' It specifies the verb ('extract and crawl'), resource ('content from specific URLs'), and technology ('Exa AI'). However, it doesn't explicitly distinguish this tool from sibling tools like 'web_search_exa' or 'deep_search_exa', which likely have different search/crawling approaches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some implied usage context: 'Ideal for extracting detailed content from known URLs' suggests this tool is for targeted extraction when URLs are already identified. However, it doesn't explicitly state when NOT to use this tool or mention alternatives among the sibling tools (e.g., when to use 'web_search_exa' for broader searches vs. this tool for specific URL extraction).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deep_researcher_checkAInspect
Check the status and retrieve results of a deep research task. This tool monitors the progress of an AI agent that performs comprehensive web searches, analyzes multiple sources, and synthesizes findings into detailed research reports. The tool includes a built-in 5-second delay before checking to allow processing time. IMPORTANT: You must call this tool repeatedly (poll) until the status becomes 'completed' to get the final research results. When status is 'running', wait a few seconds and call this tool again with the same task ID.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | The task ID returned from deep_researcher_start tool |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does so effectively. It discloses key behavioral traits: the built-in 5-second delay before checking, the polling requirement, and the status-based workflow ('running' vs 'completed'). It doesn't cover error handling or rate limits, but provides substantial operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured with zero wasted sentences. It front-loads the core purpose, then provides essential operational details (delay, polling instructions). Every sentence earns its place by conveying critical information for correct tool invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no annotations and no output schema, the description provides excellent context about the polling behavior and workflow. It could be more complete by describing the output format or error conditions, but given the tool's relative simplicity, it covers the most critical aspects well.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the single parameter (taskId). The description adds context by specifying that the taskId comes from deep_researcher_start, which is helpful but doesn't provide additional semantic meaning beyond what the schema indicates. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('check the status', 'retrieve results') and identifies the resource ('deep research task'). It distinguishes from siblings like deep_researcher_start (which initiates research) by focusing on monitoring and result retrieval rather than task creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage instructions: call this tool repeatedly (poll) until status becomes 'completed', and when status is 'running', wait a few seconds and call again with the same task ID. It also implicitly distinguishes from siblings by referencing deep_researcher_start as the source of the task ID.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deep_researcher_startAInspect
Start a comprehensive AI-powered deep research task for complex queries. This tool initiates an intelligent agent that performs extensive web searches, crawls relevant pages, analyzes information, and synthesizes findings into a detailed research report. The agent thinks critically about the research topic and provides thorough, well-sourced answers. Use this for complex research questions that require in-depth analysis rather than simple searches. After starting a research task, IMMEDIATELY use deep_researcher_check with the returned task ID to monitor progress and retrieve results.
| Name | Required | Description | Default |
|---|---|---|---|
| instructions | Yes | Complex research question or detailed instructions for the AI researcher. Be specific about what you want to research and any particular aspects you want covered. | |
| model | No | Research model: 'exa-research' (faster, 15-45s, good for most queries) or 'exa-research-pro' (more comprehensive, 45s-2min, for complex topics). Default: exa-research |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the agent's behavior (performs web searches, crawls pages, analyzes information, synthesizes findings) and mentions timing considerations via model options, but lacks details on rate limits, authentication needs, or error handling that would be valuable for an AI agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded with the core purpose, followed by usage guidance and operational instructions. While efficient, the second sentence could be slightly more concise by combining some elements of the agent's actions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (initiating an AI research agent) and lack of annotations/output schema, the description does well by explaining the agent's behavior, model options, and follow-up process. However, it could better address potential limitations or failure modes to be fully complete for agent invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents both parameters. The description doesn't add any meaningful parameter semantics beyond what's in the schema, maintaining the baseline score of 3 for adequate but not enhanced parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('start', 'initiates') and resources ('comprehensive AI-powered deep research task', 'intelligent agent'), distinguishing it from siblings like 'deep_search_exa' or 'web_search_exa' by emphasizing complex queries requiring in-depth analysis rather than simple searches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool ('for complex research questions that require in-depth analysis rather than simple searches') and provides clear alternatives by naming 'deep_researcher_check' as the follow-up tool for monitoring progress, with implicit guidance against using simpler search tools for such tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deep_search_exaBRead-onlyIdempotentInspect
Searches the web and return results in a natural language format.
| Name | Required | Description | Default |
|---|---|---|---|
| objective | Yes | Natural language description of what the web search is looking for. Try to make the search query atomic - looking for a specific piece of information. May include guidance about preferred sources or freshness. | |
| search_queries | No | Optional list of keyword search queries, may include search operators. The search queries should be related to the user's objective. Limited to 5 entries of up to 5 words each (around 200 characters). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows this is a safe, repeatable read operation. The description adds minimal behavioral context beyond this - it mentions the output format ('natural language format') but doesn't disclose rate limits, authentication needs, or other operational constraints that would be helpful for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise - a single sentence that states the core functionality. There's no wasted language or unnecessary elaboration. It's front-loaded with the essential information about what the tool does.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with good annotations (readOnly, idempotent, non-destructive) and full schema coverage, the description is minimally adequate. However, without an output schema and with multiple sibling tools that likely overlap in functionality, the description should do more to explain what makes this tool unique and what kind of results to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the input schema already fully documents both parameters ('objective' and 'search_queries'). The description doesn't add any meaningful parameter semantics beyond what's in the schema - it doesn't explain how parameters interact or provide usage examples. The baseline of 3 is appropriate when the schema does all the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Searches the web and return results in a natural language format.' It specifies the verb ('searches'), resource ('the web'), and output format ('natural language format'), but doesn't explicitly differentiate it from sibling tools like 'web_search_exa' or 'company_research_exa' which likely have overlapping functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With multiple sibling tools like 'web_search_exa', 'company_research_exa', and 'linkedin_search_exa', there's no indication of what makes 'deep_search_exa' distinct or when it should be preferred over other search tools on the server.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_code_context_exaARead-onlyIdempotentInspect
Search and get relevant context for any programming task. Exa-code has the highest quality and freshest context for libraries, SDKs, and APIs. Use this tool for ANY question or task for related to programming. RULE: when the user's query contains exa-code or anything related to code, you MUST use this tool.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query to find relevant context for APIs, Libraries, and SDKs. For example, 'React useState hook examples', 'Python pandas dataframe filtering', 'Express.js middleware', 'Next js partial prerendering configuration' | |
| tokensNum | No | Number of tokens to return (1000-50000). Default is 5000 tokens. Adjust this value based on how much context you need - use lower values for focused queries and higher values for comprehensive documentation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds value by emphasizing 'highest quality and freshest context' and the programming domain focus, but doesn't disclose additional behavioral traits like rate limits, authentication needs, or response format details. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and usage rule, but includes some redundancy (e.g., repeating 'exa-code' emphasis). Sentences are generally purposeful, though the 'RULE' phrasing could be more integrated. Overall efficient but with minor verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (2 parameters, no output schema), annotations cover safety aspects, and the description provides clear purpose and usage rules. However, it lacks details on response structure or error handling, which would enhance completeness for a search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, providing full documentation for both parameters. The description doesn't add meaningful parameter semantics beyond what's in the schema, such as explaining query formulation strategies or token usage trade-offs. Baseline score of 3 is appropriate given the comprehensive schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Search and get relevant context for any programming task' with specific focus on 'libraries, SDKs, and APIs.' It distinguishes from the sibling tool 'web_search_exa' by specifying programming-related content, though it doesn't explicitly contrast their differences beyond domain focus.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: 'Use this tool for ANY question or task related to programming' and includes a mandatory rule: 'when the user's query contains exa-code or anything related to code, you MUST use this tool.' This clearly defines when to use it versus alternatives, though it doesn't specify when NOT to use it for non-programming queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_search_exaBInspect
Search LinkedIn profiles and companies using Exa AI - finds professional profiles, company pages, and business-related content on LinkedIn. Useful for networking, recruitment, and business research.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | LinkedIn search query (e.g., person name, company, job title) | |
| searchType | No | Type of LinkedIn content to search (default: all) | |
| numResults | No | Number of LinkedIn results to return (default: 5) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions what the tool finds but doesn't describe important behavioral traits like rate limits, authentication requirements, response format, pagination behavior, or whether this is a read-only operation. The description is functional but lacks operational transparency needed for an agent to use it effectively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized at two sentences, with the first sentence stating the core functionality and the second providing usage context. It's front-loaded with the essential information and avoids unnecessary elaboration. Every sentence earns its place, though the second sentence could be slightly more specific.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is incomplete for a search tool with 3 parameters. It doesn't describe what the return format looks like (structured data, raw HTML, JSON), how results are ranked, error conditions, or any limitations of the LinkedIn search through Exa AI. For a tool with no structured behavioral metadata, the description should provide more operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema - it doesn't explain query construction best practices, searchType implications, or numResults limitations. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches LinkedIn profiles and companies using Exa AI, specifying the resource (LinkedIn) and purpose (finding professional profiles, company pages, business content). It distinguishes from some siblings like web_search_exa by mentioning LinkedIn specifically, but doesn't explicitly differentiate from company_research_exa or deep_search_exa which might have overlapping domains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides implied usage context ('useful for networking, recruitment, and business research'), suggesting when this tool might be appropriate. However, it doesn't explicitly state when to use this tool versus alternatives like company_research_exa or deep_search_exa, nor does it provide any exclusion criteria or specific prerequisites for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web_search_exaARead-onlyIdempotentInspect
Search the web using Exa AI - performs real-time web searches and can scrape content from specific URLs. Supports configurable result counts and returns the content from the most relevant websites.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Websearch query | |
| numResults | No | Number of search results to return (default: 8) | |
| livecrawl | No | Live crawl mode - 'fallback': use live crawling as backup if cached content unavailable, 'preferred': prioritize live crawling (default: 'fallback') | |
| type | No | Search type - 'auto': balanced search (default), 'fast': quick results, 'deep': comprehensive search | |
| contextMaxCharacters | No | Maximum characters for context string optimized for LLMs (default: 10000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety and idempotency. The description adds valuable behavioral context beyond annotations: it mentions real-time web searches, scraping from specific URLs, configurable result counts, and returning content from relevant websites. This provides useful operational details without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized at two sentences, front-loading the core purpose. Every sentence adds value: the first defines the tool's function, and the second elaborates on features and output. There's no wasted text, though it could be slightly more structured for optimal clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, rich annotations (covering safety and idempotency), and 100% schema coverage, the description is reasonably complete. It explains the tool's function and key features. The lack of an output schema is a minor gap, but the description mentions return content, partially compensating. For a read-only search tool, this provides adequate context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 5 parameters. The description adds minimal parameter semantics beyond the schema, mentioning only 'configurable result counts' (referencing numResults) and 'content from the most relevant websites' (hinting at query relevance). Since the schema does the heavy lifting, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Search the web using Exa AI - performs real-time web searches and can scrape content from specific URLs.' It specifies the verb (search/scrape) and resource (web/URLs), making the function unambiguous. However, it doesn't explicitly differentiate from its sibling 'get_code_context_exa' beyond mentioning general web search capabilities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for web searches and content scraping, but provides no explicit guidance on when to use this tool versus its sibling 'get_code_context_exa' or other alternatives. It mentions configurable result counts and relevance, which suggests some context, but lacks clear when/when-not directives or named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
- Added
company_research_exa - Added
crawling_exa - Added
deep_researcher_check - Added
deep_researcher_start - Added
deep_search_exa - Added
linkedin_search_exa
2 tool updates
- First observed
get_code_context_exa - First observed
web_search_exa
TDQS
Scored across 8 tools
The tools have overlapping purposes that could cause confusion. For example, web_search_exa and deep_search_exa both perform web searches, with the latter adding natural language formatting, while crawling_exa and web_search_exa both handle URL content extraction. However, descriptions help differentiate some specialized tools like get_code_context_exa and linkedin_search_exa.
Most tools follow a consistent snake_case pattern with a '_exa' suffix, such as company_research_exa and web_search_exa. The main deviation is deep_researcher_start and deep_researcher_check, which use a different naming style without the suffix, slightly breaking the pattern.
With 8 tools, the count is well-scoped for a server focused on web research and data extraction. Each tool serves a distinct function within this domain, such as company research, LinkedIn searches, and code context retrieval, making the set appropriately sized.
The toolset covers core research workflows, including starting and checking deep research tasks, general and specialized searches, and content extraction. A minor gap exists in lacking explicit update or delete operations for research tasks, but agents can work around this by managing task IDs and polling.
Maintenance
Related MCP Connectors
The Remote MCP server acts as a standardized bridge between LLM applications (like Claude, ChatGPT, and Cursor) and external services, enabling AI agents to access external tools and resources. Its primary capability is providing a centralized search tool to discover other MCP servers and their respective tools. Unlike local implementations, it runs remotely with OAuth authentication and permission controls for security.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Exa MCP — neural/semantic web search + content retrieval (exa.ai)
Your agent needs the open web — searched by more than one engine, and read as clean markdown rather than raw HTML. **What you can ask for** • "Search this question with two providers and tell me where they disagree." • "Scrape these 40 URLs into markdown, in one batch." • "Crawl this documentation site and give me every page." • "Do deep research on this topic and cite the sources." • "Find the academic papers behind this claim." **How to use it** Point any MCP client at https://mcp.aisa.one/search/mcp and sign in with OAuth — there is no key to create or paste. 30 tools across several independent providers: Tavily and Exa search, answers, contents and agent runs; Firecrawl scrape, batch scrape, crawl, map and search; Perplexity Sonar, Sonar Pro, reasoning and deep research; Oxylabs AI search and LLM jobs; OpenAI and Anthropic web search; and scholarly search. **Why this rather than the source** Several independent indexes behind one account, because one engine's blind spot is not visible from inside it. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Find the page here, then ask the same agent who links to it or how much traffic it gets — without adding a second server. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** https://mcp.aisa.one/seo-serp/mcp for the Google results page itself, https://mcp.aisa.one/seo-serp-other-engines/mcp for Bing, Baidu and Naver.
Related MCP Servers
- AlicenseBqualityDmaintenanceA Model Context Protocol server that enables Claude to perform web research by integrating Google search, extracting webpage content, and capturing screenshots.31,743 npm20MIT
- FlicenseAqualityDmaintenanceA Model Context Protocol server that enables AI assistants like Claude to perform real-time web searches using the Exa AI Search API in a safe and controlled manner.215,058 npm-
- AlicenseAqualityDmaintenanceA server that enables AI assistants like Claude to perform web searches using the Exa AI Search API, providing real-time web information in a safe and controlled way.215,058 npmMIT
- AlicenseBqualityCmaintenanceA Model Context Protocol server that enables AI assistants to perform real-time web searches, retrieving up-to-date information from the internet via a Crawler API.144 npm42ISC