Exa Ultra MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| EXA_MODE | No | Server mode: fast, auto or max. Can also be set with --mode=. | max |
| EXA_API_KEY | No | Exa API key in the environment. Alias for EXA_API_KEYS. | |
| EXA_API_KEYS | No | Exa API keys in the environment, comma-separated. | |
| EXA_BASE_URL | No | Base URL for proxies or tests. | https://api.exa.ai |
| EXA_CACHE_MAX | No | In-memory cache maximum entries for identical calls. | 200 |
| EXA_MAX_CHARS | No | Default cap on the text returned to the model. | 8000 |
| EXA_STATE_DIR | No | Shared state directory: fingerprints, spend, mode. Never keys. | ~/.local/state/exa-ultra-mcp |
| EXA_TIMEOUT_MS | No | Timeout of one HTTP attempt. | 60000 |
| EXA_QPS_PER_KEY | No | Requests per second per key (free plan: 10); 0 = no limit. | 10 |
| EXA_ENABLE_AGENT | No | Turn agent tool group on or off. | 1 |
| EXA_KEY_STRATEGY | No | Key selection strategy: round-robin, priority or least-used. | round-robin |
| EXA_MAX_ATTEMPTS | No | Keys tried per call. | 5 |
| EXA_API_KEYS_FILE | No | File with Exa API keys: commas, spaces or newlines; # comments allowed. Can also be set with --keys-file=. | |
| EXA_BUDGET_MARGIN | No | Stop using a key this many USD before its budget. | 0.05 |
| EXA_AGENT_MAX_COST | No | Cap per auto/ultra agent run, in USD (1–100). | 1 |
| EXA_ENABLE_MONITORS | No | Turn monitors tool group on or off. | 0 |
| EXA_CACHE_TTL_SECONDS | No | In-memory cache TTL for identical calls. | 600 |
| EXA_AGENT_WAIT_SECONDS | No | How long exa_agent_run waits before it returns the run id. | 120 |
| EXA_MONTHLY_BUDGET_PER_KEY | No | USD per key per month. | 10 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| exa_searchA | Search the live web with Exa; returns ranked pages with query-relevant highlights (10 results). Search type comes from the mode unless you set |
| exa_find_similarA | Find pages similar to a seed URL (competitors, alternatives, related papers). Reads the seed page, then runs a semantic search built from it. Replaces Exa's deprecated /findSimilar. Search type follows the mode like exa_search. |
| exa_contentsA | Get clean content of known URLs (no search). Default returns page text. Supports live crawl (maxAgeHours 0), subpage crawling, link/image extraction, and Exa Snapshot (paid plans). Failed URLs are listed; the call fails only when every URL failed. |
| exa_answerA | Ask a question; Exa searches and writes a short cited answer itself ($0.005). Good for quick facts. For research where you read the sources yourself, use exa_search. |
| exa_agent_runA | Async multi-step Exa Agent run (deep research): list-building, enrichment of rows, multi-hop research, structured JSON with citations. Not for simple lookups (use exa_search or exa_answer). Effort comes from the mode unless you set it: fast = minimal ($0.012) · auto = low ($0.025) · max = ultra (usage-based, capped at $1/run). Waits up to waitSeconds (default 120); if still running, returns the run id for exa_agent_get. |
| exa_agent_getA | Get an Exa Agent run by id; with wait=true, keep polling until it finishes or waitSeconds pass. |
| exa_agent_manageC | list = recent runs on every key · events = lifecycle events of a run · cancel = stop a running run · delete = remove a run. |
| exa_modeA | Show or set the server-wide quality mode used when a call sets no type/effort: fast = Lowest latency and cost: lite search (<1 s, $0.004), agent effort minimal ($0.012). auto = Exa's standard defaults: auto search (~2 s, $0.007), agent effort low ($0.025). max = Highest quality the free plan allows: deep-reasoning search (7-20 s, $0.015), agent effort ultra (capped by EXA_AGENT_MAX_COST, default $1/run). Setting it applies to every agent and session on this machine. Only set it when the user asks. |
| exa_keys_statusA | Show health, cooldowns, requests and tracked spend of each Exa key (keys shown as last 4 chars only). action=reset clears cooldowns and disables. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| exa_research | Search, read the best sources, and write a cited brief. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| keys-status | |
| modes |
TDQS
Scored across 9 tools
Each tool targets a clearly distinct capability: web search, cited answers, similarity search, URL content retrieval, agent-run lifecycle, mode configuration, and key status. Overlaps such as exa_search vs. exa_answer vs. exa_agent_run are explicitly differentiated by their descriptions.
All tools use a consistent exa_ prefix and snake_case, making the set predictable. Most are action-oriented, though config/admin tools like exa_mode and exa_keys_status are noun-based rather than verb_noun.
Nine tools is well-scoped for a search and research API with agent and admin functions. Each tool covers a meaningful operation without redundant surface area.
The set covers search, answer generation, similarity, content retrieval, asynchronous agent runs with get/manage lifecycle operations, mode configuration, and key health. No obvious dead ends remain for the stated Exa search/research domain.