Skip to main content
Glama

Server Details

Connect AI agents to Exa for web search, content fetching, and multi-step research.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
99.9% over 80 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
exa-labs/exa-mcp-server
GitHub Stars
5,213
Server Listing
Exa MCP Server
ChatGPT
–
Claude
Exa

TDQS

A4/5.0

Scored across 2 tools

Disambiguation5/5

web_search_exa and web_fetch_exa have clearly distinct purposes: one searches the web, the other reads a specific URL's content. Their descriptions explicitly explain when to use each and how they complement each other.

Naming Consistency5/5

Both tool names follow the exact same pattern: web_<verb>_exa (web_search_exa, web_fetch_exa). The verb-noun structure and suffix are consistent, making the set predictable.

Tool Count3/5

Only two tools are provided, which is borderline thin even for a focused search-and-fetch server. The set covers a minimal but coherent workflow, so it's not severely under-scoped, but it lacks the breadth of a well-rounded toolset.

Completeness5/5

For a web search and content retrieval server, the two core operations (search and fetch) fully cover the domain's lifecycle. There are no obvious dead ends: search results can be followed up with fetch, and batch fetching is supported.

Available Tools

2 tools
web_fetch_exaFetch Web PagesA
Read-onlyIdempotent
Inspect

Read a webpage's full content as clean markdown. Use after web_search_exa when highlights are insufficient or to read any URL.

Best for: Extracting full content from known URLs. Batch multiple URLs in one call. Returns: Clean text content and metadata from the page(s).

NameRequiredDescriptionDefault
urlsYesURLs to read. Batch multiple URLs in one call.
maxCharactersNoMaximum characters to extract per page (default: 3000)

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive), so the description only needs to add context. It contributes the output shape (clean text plus metadata) and batching behavior, but says nothing about truncation at maxCharacters or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action, then uses tight 'Best for' and 'Returns' labels. Every sentence earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description appropriately covers the return value (clean text and metadata). It is complete for the core fetch operation, though edge behaviors like truncation are left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented in the schema. The description's 'Batch multiple URLs in one call' merely restates the urls parameter and adds no syntax or format detail beyond it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Read a webpage's full content as clean markdown') and distinguishes itself from its sibling by naming web_search_exa and its relationship to it. An agent can tell exactly what this tool does versus search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use it ('after web_search_exa when highlights are insufficient or to read any URL'), naming both the triggering alternative and the general case. The 'Best for' line reinforces the intended context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

web_search_exaWeb SearchA
Read-onlyIdempotent
Inspect

Search the web for any topic and get clean, ready-to-use content.

  Best for: Finding current information, news, facts, people, companies, or answering questions about any topic.
  Returns: Clean text content from top search results.

  Query tips:
  describe the ideal page, not keywords. "blog post comparing React and Vue performance" not "React vs Vue".
  Use category:people / category:company to search through Linkedin profiles / companies respectively.
  If highlights are insufficient, follow up with web_fetch_exa on the best URLs.
NameRequiredDescriptionDefault
queryYesNatural language search query. Should be a semantically rich description of the ideal page, not just keywords. Optionally include category:<type> (company, people) to focus results — e.g. 'category:people John Doe software engineer'.
objectiveYesGoal for this search turn; say which documents should rank first, which should be excluded, and what specific facts or figures to pull from them.
numResultsNoNumber of search results to return (default: 10).

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds the return shape ('clean text content from top search results') and category-scoping behavior, which is useful but modest; there is no mention of rate limits, result freshness, or ranking behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with what the tool does, then scannable Best-for / Returns / Tips sections with no filler. The query-tip example slightly duplicates the schema wording, but the structure is clean and appropriately short.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description supplies the missing return information ('clean text content from top search results'), and annotations cover the safety profile. The category:people/company guidance is a genuinely useful extra, though result count and pagination behavior are only implied by the schema's numResults default.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 query (semantically rich description, category: syntax) and objective (ranking/exclusion goals). The description's 'Query tips' largely restate what the schema says, so it adds little meaning beyond the structured fields – baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Search the web') and scopes it with a 'Best for' list covering current information, news, facts, people, and companies. The closing line naming web_fetch_exa as a follow-up partially differentiates it from the sibling, though it doesn't state outright that fetching content from a known URL is web_fetch_exa's job, not this tool's.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for when to use it ('Finding current information, news, facts, people, companies') and explicitly routes follow-up work to web_fetch_exa when highlights are insufficient. It stops short of stating exclusions (e.g., when not to use search vs. a direct fetch), so it is clear context without full when/when-not coverage.

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.

  1. 1 tool update
    • Changedweb_search_exa2 fields changed
      • addedInput schema / properties / objective
        Added value: +{
        +  "description": "Goal for this search turn; say which documents should rank first, which should be excluded, and what specific facts or figures to pull from them.",
        +  "maxLength": 4096,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "query"
        -]New value: +[
        +  "query",
        +  "objective"
        +]
  2. 1 tool update
    • Changedweb_search_exa2 fields changed
      • removedInput schema / properties / objective
        Removed value: -{
        -  "description": "Goal for this search turn; say which documents should rank first, which should be excluded, and what specific facts or figures to pull from them.",
        -  "maxLength": 4096,
        -  "minLength": 1,
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "query",
        -  "objective"
        -]New value: +[
        +  "query"
        +]
  3. 1 tool update
    • Changedweb_search_exa2 fields changed
      • addedInput schema / properties / objective
        Added value: +{
        +  "description": "Goal for this search turn; say which documents should rank first, which should be excluded, and what specific facts or figures to pull from them.",
        +  "maxLength": 4096,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "query"
        -]New value: +[
        +  "query",
        +  "objective"
        +]
  4. 1 tool update
    • Changedweb_search_exa2 fields changed
      • removedInput schema / properties / objective
        Removed value: -{
        -  "description": "Goal for this search turn; say which documents should rank first, which should be excluded, and what specific facts or figures to pull from them.",
        -  "maxLength": 4096,
        -  "minLength": 1,
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "query",
        -  "objective"
        -]New value: +[
        +  "query"
        +]
  5. 1 tool update
    • Changedweb_search_exa2 fields changed
      • addedInput schema / properties / objective
        Added value: +{
        +  "description": "Goal for this search turn; say which documents should rank first, which should be excluded, and what specific facts or figures to pull from them.",
        +  "maxLength": 4096,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "query"
        -]New value: +[
        +  "query",
        +  "objective"
        +]
  6. 1 tool update
    • Changedweb_search_exa2 fields changed
      • removedInput schema / properties / objective
        Removed value: -{
        -  "description": "Goal for this search turn; say which documents should rank first, which should be excluded, and what specific facts or figures to pull from them.",
        -  "maxLength": 4096,
        -  "minLength": 1,
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "query",
        -  "objective"
        -]New value: +[
        +  "query"
        +]
  7. 1 tool update
    • Changedweb_search_exa2 fields changed
      • addedInput schema / properties / objective
        Added value: +{
        +  "description": "Goal for this search turn; say which documents should rank first, which should be excluded, and what specific facts or figures to pull from them.",
        +  "maxLength": 4096,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "query"
        -]New value: +[
        +  "query",
        +  "objective"
        +]
  8. 1 tool update
    • Changedweb_search_exa1 field changed
      • removedInput schema / properties / objective
        Removed value: -{
        -  "description": "The broader task this search is part of. Always include it when known. It supplements the query rather than replacing it so write the query as you normally would.",
        -  "maxLength": 4096,
        -  "minLength": 1,
        -  "type": "string"
        -}
  9. 1 tool update
    • Changedweb_search_exa1 field changed
      • addedInput schema / properties / objective
        Added value: +{
        +  "description": "The broader task this search is part of. Always include it when known. It supplements the query rather than replacing it so write the query as you normally would.",
        +  "maxLength": 4096,
        +  "minLength": 1,
        +  "type": "string"
        +}
  10. 1 tool update
    • Changedweb_search_exa1 field changed
      • removedInput schema / properties / objective
        Removed value: -{
        -  "description": "The broader task this search is part of. Always include it when known. It supplements the query rather than replacing it so write the query as you normally would.",
        -  "maxLength": 4096,
        -  "minLength": 1,
        -  "type": "string"
        -}
  11. 1 tool update
    • Changedweb_search_exa1 field changed
      • addedInput schema / properties / objective
        Added value: +{
        +  "description": "The broader task this search is part of. Always include it when known. It supplements the query rather than replacing it so write the query as you normally would.",
        +  "maxLength": 4096,
        +  "minLength": 1,
        +  "type": "string"
        +}
  12. 1 tool update
    • Changedweb_search_exa1 field changed
      • removedInput schema / properties / objective
        Removed value: -{
        -  "description": "The broader task this search is part of. Always include it when known. It supplements the query rather than replacing it so write the query as you normally would.",
        -  "maxLength": 4096,
        -  "minLength": 1,
        -  "type": "string"
        -}
  13. 1 tool update
    • Changedweb_search_exa1 field changed
      • addedInput schema / properties / objective
        Added value: +{
        +  "description": "The broader task this search is part of. Always include it when known. It supplements the query rather than replacing it so write the query as you normally would.",
        +  "maxLength": 4096,
        +  "minLength": 1,
        +  "type": "string"
        +}
  14. 1 tool update
    • Changedweb_search_exa1 field changed
      • removedInput schema / properties / objective
        Removed value: -{
        -  "description": "The broader task this search is part of. Always include it when known. It supplements the query rather than replacing it so write the query as you normally would.",
        -  "maxLength": 4096,
        -  "minLength": 1,
        -  "type": "string"
        -}
  15. 1 tool update
    • Changedweb_search_exa1 field changed
      • addedInput schema / properties / objective
        Added value: +{
        +  "description": "The broader task this search is part of. Always include it when known. It supplements the query rather than replacing it so write the query as you normally would.",
        +  "maxLength": 4096,
        +  "minLength": 1,
        +  "type": "string"
        +}
  16. 1 tool update
    • Changedweb_search_exa1 field changed
      • removedInput schema / properties / objective
        Removed value: -{
        -  "description": "The broader task this search is part of. Always include it when known. It supplements the query rather than replacing it so write the query as you normally would.",
        -  "maxLength": 4096,
        -  "minLength": 1,
        -  "type": "string"
        -}
  17. 1 tool update
    • Changedweb_search_exa1 field changed
      • addedInput schema / properties / objective
        Added value: +{
        +  "description": "The broader task this search is part of. Always include it when known. It supplements the query rather than replacing it so write the query as you normally would.",
        +  "maxLength": 4096,
        +  "minLength": 1,
        +  "type": "string"
        +}

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Connects AI assistants to Exa AI's search capabilities for web search, code context retrieval from GitHub repos and documentation, company research, LinkedIn search, and deep research tasks.
    6 npm
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Connects AI assistants to Exa's search capabilities, enabling web search, code search, and company research.
    72,516 npm
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to perform web searches, research papers, Twitter searches, company research, URL crawling, and LinkedIn searches using the Exa AI Search API for real-time web information.
    72,516 npm
    1
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.