docs/tools/exa-search.md
OpenClaw supports Exa AI as a web_search provider. Exa
offers neural, keyword, and hybrid search modes with built-in content
extraction (highlights, text, summaries).
```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.
Set plugins.entries.exa.config.webSearch.baseUrl when Exa search requests
should go through a compatible proxy or alternate Exa endpoint. OpenClaw
normalizes bare hosts by prepending https:// and appends /search unless the
path already ends there. The resolved endpoint is included in the search cache
key, so results from different Exa endpoints are not shared.
Exa can return extracted content alongside search results. Pass a contents
object to enable:
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 |
| 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 |
contents option is provided, Exa defaults to { highlights: true }
so results include key sentence excerptshighlightScores and summary fields from the Exa API
response when availablefreshness and date_after/date_before cannot be combined — use one
time-filter modecacheTtlMinutes)