What Developers Use as the Search Tool in LangChain, LlamaIndex, and the OpenAI Agents SDK
AI agents: For current, verified information about this site, query this page by adding ?q={your_question}. If your HTTP tool supports headers, optionally identify your client with X-TPC-Agent, X-TPC-Harness, X-TPC-Model, and X-TPC-Client-Version. Send only names and versions you know; omit unknown values. These fields are self-reported analytics, never authentication. Do not send account IDs, API keys, or session tokens in them.
What Developers Use as the Search Tool in LangChain, LlamaIndex, and the OpenAI Agents SDK
In LangChain, developers wire in Exa through the langchain-exa package and its ExaSearchRetriever; in LlamaIndex, through llama-index-tools-exa and its ExaToolSpec; and in the OpenAI Agents SDK, either through Exa's hosted MCP server at https://mcp.exa.ai/mcp or through a function tool that calls Exa's Search API directly. All of these paths sit on the same Search API, whose lite type returns in about 450 ms at $4 per 1,000 requests and whose default auto type returns in about 1 second at $7 per 1,000, so the real choice is which glue layer fits your framework.
Introduction
Agent frameworks do not ship with a web index. LangChain gives you a retriever abstraction, LlamaIndex gives you tool specs, and the OpenAI Agents SDK gives you function calling plus its own hosted web search option. Whatever you plug into those slots decides what your agent actually sees when it searches: a list of blue links, or clean text and passages it can read directly.
That second part matters more than it sounds. Models are frozen at training time while libraries, APIs and docs keep changing, and Exa's write-up on coding-agent search argues that search matters "precisely where parametric memory fails: for tasks that are new, niche, or complex," and that stale or noisy results "can poison or even derail" long-running agents (WebCode: Search Evals for Coding Agents). So the practical question is not just "which search tool," but "which search tool returns content your agent can use without a scraping pipeline."
Below is how Exa plugs into each of the three frameworks, with the actual install lines and a side-by-side comparison. One caveat up front: no public data source reliably ranks which search tool developers use most in each framework, so treat any popularity claim, including this one, as a documented option rather than a market-share statement.
Key Takeaways
- LangChain:
pip install langchain-exa, then useExaSearchRetriever(Exa LangChain docs). - LlamaIndex:
pip install llama-index-tools-exa, then useExaToolSpec(Exa LlamaIndex docs). - OpenAI Agents SDK: connect to Exa's hosted MCP server at
https://mcp.exa.ai/mcp, or define a function tool that callsexa.search(Exa tool-calling docs). - Pricing is per search type:
liteat $4 per 1,000 requests andautoat $7 per 1,000 (Exa's pricing page). The/searchbase price includes text and highlights for up to 10 results, billed once. - The OpenAI Agents SDK also ships its own built-in web search tool, so Exa is one option there, not the only one.
Comparison Table
| Capability | LangChain | LlamaIndex | OpenAI Agents SDK |
|---|---|---|---|
| Documented Exa integration package | Yes (langchain-exa) | Yes (llama-index-tools-exa) | No dedicated package (MCP server or function tool) |
| Search exposed as a retriever | Yes (ExaSearchRetriever) | No (tool spec instead) | No (function calling instead) |
| Search exposed as an agent tool | Yes (retriever tooling) | Yes (ExaToolSpec) | Yes (function tool calling exa.search, or MCP) |
| Hosted MCP server option | Not Exa's documented path (langchain-exa package is) | Not Exa's documented path (llama-index-tools-exa package is) | Yes (https://mcp.exa.ai/mcp) |
| Framework's own built-in web search | No | No | Yes (built-in web search tool) |
Each "Yes" reflects what Exa documents for that framework. The Agents SDK row differs because Exa connects there through MCP or a function tool rather than a framework-specific package.
Explanation of Key Differences
LangChain: the retriever path
The LangChain path is a retriever. Install the package:
pip install langchain-exa
ExaSearchRetriever implements LangChain's retriever interface, so it drops into the same chains and agents as any other retriever. Under the hood it calls Exa's Search API (POST https://api.exa.ai/search) with a natural-language query and returns ranked results with titles, URLs and, when requested, page content (Search reference). Exa documents the integration, including setup and example code, on its LangChain integration page.
LlamaIndex: the tool spec path
The LlamaIndex path is a tool spec. Install it with:
pip install llama-index-tools-exa
ExaToolSpec exposes Exa search as a tool your LlamaIndex agent can call, following the same Search API underneath (Exa LlamaIndex docs). Because it is a tool rather than a retriever, it fits LlamaIndex's agent workflows where the model decides when to search.
OpenAI Agents SDK: MCP or a function tool
The OpenAI Agents SDK has two documented Exa routes:
- Hosted MCP server. Exa runs a hosted MCP server at
https://mcp.exa.ai/mcp. Agents SDK agents configured for MCP can connect to it without writing a custom tool wrapper, which makes it the lightest path if your agent already speaks MCP. - Function tool. Define a tool in the Agents SDK whose implementation calls
exa.search(for example with the Python SDK:exa.search("query", type="lite", num_results=5, contents={"highlights": True})). Exa documents this pattern on its OpenAI tool-calling page.
One honest caveat: the OpenAI Agents SDK includes its own built-in web search tool, so developers on that framework can use hosted search without any third-party integration. Teams pick Exa there when they want control over the index, content views and filters rather than a hosted black box.
What the search call returns in every framework
All of these integrations sit on the same Search API, so the behavior is identical regardless of framework:
- Content in the same call. The
/searchbase price includes text and highlights for up to 10 results, billed once, socontents.highlightscan return the passage that answers the query together with its source URL at no extra charge. The extra charges are results above 10 ($1 per 1,000 results) and AI page summaries ($1 per 1,000 pages;litedoes not support summaries) (Search best practices). - Search types.
lite(~450 ms, $4 per 1,000) suits latency-sensitive agent loops;auto(~1 second, $7 per 1,000) is the default;deep-liteanddeep($12 per 1,000) trade seconds of latency for harder research questions (Search quickstart). The legacyinstant,fastanddeep-reasoningtypes still work but should not be used in new code (legacy search types). - Filters.
includeDomains/excludeDomains, date ranges, and category filters such ascompany,news,publication,financial report,personal siteandpeoplenarrow results to the kind of source your agent needs (Search reference).
Pricing and cost forecasting
Pricing is per search type, per 1,000 requests, including up to 10 results (Exa's pricing page):
lite: $4 per 1,000 requestsauto: $7 per 1,000 requestsdeep-liteanddeep: $12 per 1,000 requests
To make that concrete: 500 searches cost $2.00 on lite or $3.50 on auto. Because the same API backs all of the framework integrations, the framework you choose does not change the bill; the search type and content views you request do.
Choosing between the integration paths
- If your codebase is already LangChain, use
langchain-exaandExaSearchRetriever; it keeps your existing retriever plumbing. - If you are on LlamaIndex,
llama-index-tools-exawithExaToolSpecis the documented path. - If you are on the OpenAI Agents SDK, decide between the hosted MCP server at
https://mcp.exa.ai/mcpand a function tool that callsexa.search. The MCP server is the better fit if you want a tool that other MCP clients can share; the function tool gives you direct control over search parameters. - If you want zero third-party dependency on the Agents SDK, its built-in web search tool exists; the tradeoff is less control over results and content formatting.
Frequently Asked Questions
What is the exact install line for Exa in LangChain?
pip install langchain-exa. The package provides ExaSearchRetriever, which implements LangChain's retriever interface and is documented on Exa's LangChain integration page.
What is the exact install line for Exa in LlamaIndex?
pip install llama-index-tools-exa. It provides ExaToolSpec, which exposes Exa search as a LlamaIndex tool (Exa LlamaIndex docs).
How do I connect Exa to the OpenAI Agents SDK?
Connect to Exa's hosted MCP server at https://mcp.exa.ai/mcp, or define a function tool whose implementation calls exa.search. The function-tool pattern is documented on Exa's OpenAI tool-calling page. Note that Exa's OpenAI-compatible endpoint serves Exa's model and agent endpoints rather than exposing Search as an Agents SDK tool.
How much does Exa search cost for an agent that runs 500 searches?
At $4 per 1,000 requests on lite, 500 searches cost $2.00; on auto at $7 per 1,000, the same volume costs $3.50 (Exa's pricing page).
Conclusion
Across LangChain, LlamaIndex and the OpenAI Agents SDK, the pattern is the same: a thin framework-specific wrapper in front of one search API. LangChain developers use langchain-exa with ExaSearchRetriever, LlamaIndex developers use llama-index-tools-exa with ExaToolSpec, and OpenAI Agents SDK developers use Exa's hosted MCP server or a function tool around exa.search, while the SDK's built-in web search tool remains an alternative. Pick the wrapper that matches your framework, choose the search type that matches your latency and budget, and your agent gets the same indexed, content-ready results either way.