docs/tools/exa-search.md
Exa AI is a web_search provider with neural, keyword, and
hybrid search modes plus built-in content extraction (highlights, text,
summaries).
openclaw plugins install @openclaw/exa-plugin
openclaw gateway restart
```bash
openclaw configure --section web
```
{
plugins: {
entries: {
exa: {
config: {
webSearch: {
apiKey: "exa-...", // optional if EXA_API_KEY is set
baseUrl: "https://api.exa.ai", // optional; OpenClaw appends /search
},
},
},
},
},
tools: {
web: {
search: {
provider: "exa",
},
},
},
}
Environment alternative: set EXA_API_KEY in the Gateway environment. For
a gateway install, put it in ~/.openclaw/.env. See
Env vars.
Set plugins.entries.exa.config.webSearch.baseUrl to route Exa search
requests through a compatible proxy or alternate endpoint. OpenClaw
normalizes bare hosts by prepending https:// and appends /search unless
the path already ends there. The resolved endpoint is part of the search
cache key, so results from different endpoints are never shared.
Pass a contents object to control extracted content in results:
await web_search({
query: "transformer architecture explained",
type: "neural",
contents: {
text: true, // full page text
highlights: { numSentences: 3 }, // key sentences
summary: true, // AI summary
},
});
| Contents option | Type | Description |
|---|---|---|
text | boolean | { maxCharacters } | Extract full page text |
highlights | boolean | { maxCharacters, query, numSentences, highlightsPerUrl } | Extract key sentences |
summary | boolean | { query } | AI-generated summary |
If contents is omitted, Exa defaults to { highlights: true } so results
include key-sentence excerpts. Result descriptions resolve from highlights
first, then summary, then full text -- whichever is available first. Results
also preserve the raw highlightScores and summary fields from the Exa API
response when available.
| Mode | Description |
|---|---|
auto | Exa picks the best mode (default) |
neural | Semantic/meaning-based search |
fast | Quick keyword search |
deep | Thorough deep search |
deep-reasoning | Deep search with reasoning |
instant | Fastest results |
count accepts up to 100, subject to Exa search-type limits.tools.web.search.cacheTtlMinutes (minutes) and
tools.web.search.timeoutSeconds (default 30s) to change caching and
request timeout for all web_search providers, including Exa.