Exa AI is a web_search provider. It offers the auto,
neural, fast, deep, deep-reasoning, and instant search modes described
in Search modes. It also has built-in content extraction
(highlights, text, summaries).
Install plugin
apus plugins install @openclaw/exa-plugin
Installation applies to a running Gateway automatically; otherwise it takes effect on the next startup. See Apply changes and inspect.
Get an API key
Create an account
Sign up at [exa.ai](https://exa.ai/) and generate an API key from your
dashboard.
Store the key
Set `EXA_API_KEY` in the Gateway environment, or configure via:
```bash
apus configure --section web
```
Config
{
plugins: {
entries: {
exa: {
config: {
webSearch: {
apiKey: "exa-...", // optional if EXA_API_KEY is set
baseUrl: "https://api.exa.ai", // optional; Apus appends /search
},
},
},
},
},
tools: {
web: {
search: {
provider: "exa",
},
},
},
}
Environment alternative: set EXA_API_KEY in the Gateway environment. For
a gateway install, put it in ~/.apus/.env. See
Env vars.
Base URL override
Set plugins.entries.exa.config.webSearch.baseUrl to route Exa search
requests through a compatible proxy or alternate endpoint. Apus
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.
Tool parameters
query string
Search query.
count number
Results to return (1-100, subject to Exa search-type limits).
type 'auto' | 'neural' | 'fast' | 'deep' | 'deep-reasoning' | 'instant'
Search mode.
freshness 'day' | 'week' | 'month' | 'year'
Time filter. Cannot be combined with date_after/date_before.
date_after string
Results after this date (YYYY-MM-DD).
date_before string
Results before this date (YYYY-MM-DD).
contents object
Content extraction options (see below).
Content extraction
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.
Search modes
| 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 |
Notes
countaccepts up to 100, subject to Exa search-type limits.- Results are cached for 15 minutes by default. Configure the shared
tools.web.search.cacheTtlMinutes(minutes) andtools.web.search.timeoutSeconds(default 30s) to change caching and request timeout for allweb_searchproviders, including Exa.
Related
- Web Search overview -- all providers and auto-detection
- Brave Search -- structured results with country/language filters
- Perplexity Search -- structured results with domain filtering