auto (Exa’s recommended search type), neural, fast, deep-lite, deep, deep-reasoning, and instant — plus structured content retrieval (highlights, text, summaries) and rich filtering (categories, include/exclude domains, date ranges, and max-age windows). Sensible Exa-side defaults ship out of the box, so you get Exa best practices without manual tuning.
Why Exa in FIM One
- Neural search for agent reasoning — Exa’s embedding-native search returns semantically relevant results, not just keyword matches. This matters for research agents that reason over web content.
- Deep-reasoning mode for hard queries — single-call multi-hop reasoning over the open web, without the agent orchestrating sub-queries itself.
- Built-in content extraction — highlights + text + optional summaries arrive with the search call, eliminating a second round-trip to fetch and clean page content.
- Tight domain / recency controls — includes/excludes domain lists (up to 1200 entries), ISO-8601 date windows, and
maxAgeHoursfor time-sensitive workflows.
Quick start
1. Get an Exa API key
Sign up at exa.ai and grab your API key from the dashboard.2. Enable Exa in FIM One
Add to your.env:
web_search routes through Exa. Prefer an explicit WEB_SEARCH_PROVIDER=exa over relying on key auto-detect alone.
3. Use it from any agent
Web search is exposed to agents as a built-in tool — no extra wiring needed. With Exa configured as above, agents that haveweb_search enabled route search calls through Exa.
Configuration
All Exa-specific knobs have sensible defaults. Override any of them via environment variables:How snippets are assembled
FIM One cascades through Exa’s content fields to produce a useful snippet on every result, regardless of which content types the API populated:highlights(joined with…) — preferred when presenttext— falls back to extracted article text, truncated toEXA_TEXT_MAX_CHARSsummary— used when both above are empty
Preset: news monitoring
Preset: research paper retrieval
Preset: deep-reasoning agent
Attribution
Every Exa request from FIM One carries anx-exa-integration: fim-one header so Exa can attribute API usage back to this integration in maintainer dashboards. This is used only for integration-level attribution — no end-user identification or tracking.
Source
The Exa connector lives atsrc/fim_one/core/web/search/exa.py and follows the same BaseWebSearch protocol as Jina, Tavily, and Brave — switching providers is a single env-var change.