Skip to main content
Glama

Server Details

Fast, intelligent web search and web crawling.

New mcp tool: Exa-code is a context tool for coding

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
exa-labs/exa-mcp-server
GitHub Stars
4,963
Server Listing
Exa MCP Server

Available Tools

2 tools
web_fetch_exaA
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).

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

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds useful context about returning clean markdown and metadata, and supporting batching. However, it claims 'full content' while the schema includes a maxCharacters default of 3000, and the description does not disclose that pages are truncated unless the limit is increased, which is a significant gap in behavioral transparency.

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?

The description is three short sentences, each adding value: the core function, usage guidance, and return expectation. It is front-loaded with the most important information and avoids any fluff or repetition.

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?

For a simple read tool with two parameters and strong annotations, the description is mostly complete: it states the input (URLs), output (text and metadata), and when to use it. The only notable omission is the character limit caveat, which prevents a perfect completeness score.

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?

The schema already provides descriptions for both parameters (urls and maxCharacters), covering 100% of the parameters. The description contributes little beyond repeating the batching capability already in the schema, so it does not add meaningful extra meaning beyond the structured data.

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?

The description clearly states the tool reads a webpage's full content as clean markdown, with an explicit verb and resource. It also distinguishes from the sibling tool web_search_exa by specifying its use case: after search when highlights are insufficient or for reading any URL.

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?

The description explicitly says to use this tool after web_search_exa when highlights are insufficient, and it highlights best uses (extracting full content from known URLs, batching multiple URLs). This provides clear when-to-use guidance and names the alternative, leaving no ambiguity about when to choose this tool over the sibling.

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

web_search_exaA
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.
ParametersJSON Schema
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'.
numResultsNoNumber of search results to return (default: 10).

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already convey read-only, idempotent, non-destructive behavior. The description adds useful behavioral context: it returns clean text content, top results, and can filter via category:people or category:company. It does not mention rate limits or pagination, but for this simple search tool with strong annotations, the added transparency is solid.

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?

The description is well-structured and front-loaded: it states the core function, then returns, then best-for usage, then query tips. Every line adds value—no filler—and the formatting makes it easy for an agent to scan.

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

Completeness5/5

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

For a read-only search tool with only two parameters and no output schema, the description is complete: it explains what the tool returns, how to craft queries, how to use categories, and how to proceed with a sibling tool when needed. The numResults parameter is fully documented in the schema, so its omission here is fine.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds extra semantic guidance beyond the schema, such as 'category:company' for searching companies and a concrete example of describing the ideal page rather than using keywords. These details make the query parameter more actionable.

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?

The description uses a specific verb and resource: 'Search the web for any topic and get clean, ready-to-use content.' It clearly distinguishes the tool from its sibling by positioning it as a search step and even references web_fetch_exa as the follow-up step, making the tool's role unambiguous.

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?

It provides explicit usage context: 'Best for: Finding current information, news, facts, people, companies, or answering questions' and gives concrete query construction tips. It also states when to use the sibling tool: 'If highlights are insufficient, follow up with web_fetch_exa on the best URLs.'

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. Dates show when Glama detected each change.

  1. 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"
        -}
  2. 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"
        +}
  3. 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"
        -}
  4. 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"
        +}
  5. 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"
        -}
  6. 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"
        +}
  7. 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"
        -}
  8. 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"
        +}
  9. 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"
        -}
  10. 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"
        +}
  11. 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"
        -}
  12. 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"
        +}
  13. 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"
        -}
  14. 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"
        +}
  15. 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"
        -}
  16. 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"
        +}
  17. 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"
        -}
  18. 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"
        +}
  19. 2 tool updates
    • Changedweb_fetch_exa1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "errors": {
        -      "items": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "error": {
        -            "type": "string"
        -          },
        -          "url": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "url",
        -          "error"
        -        ],
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    "results": {
        -      "items": {
        -        "additionalProperties": true,
        -        "properties": {
        -          "author": {
        -            "type": "string"
        -          },
        -          "publishedDate": {
        -            "type": "string"
        -          },
        -          "text": {
        -            "type": "string"
        -          },
        -          "title": {
        -            "type": [
        -              "string",
        -              "null"
        -            ]
        -          },
        -          "url": {
        -            "type": "string"
        -          }
        -        },
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    "searchTime": {
        -      "type": "number"
        -    }
        -  },
        -  "required": [
        -    "results",
        -    "errors"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changedweb_search_exa1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "results": {
        -      "items": {
        -        "additionalProperties": true,
        -        "properties": {
        -          "author": {
        -            "type": "string"
        -          },
        -          "highlights": {
        -            "items": {
        -              "type": "string"
        -            },
        -            "type": "array"
        -          },
        -          "publishedDate": {
        -            "type": "string"
        -          },
        -          "text": {
        -            "type": "string"
        -          },
        -          "title": {
        -            "type": [
        -              "string",
        -              "null"
        -            ]
        -          },
        -          "url": {
        -            "type": "string"
        -          }
        -        },
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    "searchTime": {
        -      "type": "number"
        -    }
        -  },
        -  "required": [
        -    "results"
        -  ],
        -  "type": "object"
        -}New value: +null

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    C
    maintenance
    An MCP server that brings Parallel web search and URL extraction to Codex and other Model Context Protocol clients.
    2
    21
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Unified gateway to Exa, Websets, and Deep Search for code search, deep research, and structured citations via any MCP client.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Bridge the gap between your web crawl and AI language models. With mcp-server-webcrawl, your AI client filters and analyzes web content under your direction or autonomously, extracting insights from your web content. Supports WARC, wget, InterroBot, Katana, and SiteOne crawlers.
    45
    Python
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.5/5.0
Disambiguation5/5

The two tools have clearly distinct purposes: web_search_exa finds relevant pages, and web_fetch_exa retrieves full content from known URLs. There is no overlap or ambiguity about when to use each.

Naming Consistency5/5

Both tool names follow the same web_<verb>_exa pattern using lowercase snake_case. The consistent structure makes the tool set predictable and easy to navigate.

Tool Count4/5

With only two tools, the server is slightly lean, but both tools earn their place and cover the two core operations of search-and-retrieve. The scope is narrow enough that additional tools would likely be unnecessary.

Completeness5/5

For a web search/fetch server, the workflow is complete: search to discover relevant pages, then fetch to read full content if needed. There are no obvious dead ends or missing operations within the stated purpose.