Skip to main content
Exa is available as an optional web search backend in FIM One. When you enable it, agents get access to the full Exa search surface — 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 maxAgeHours for 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:
Set both variables so 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 have web_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:
  1. highlights (joined with ) — preferred when present
  2. text — falls back to extracted article text, truncated to EXA_TEXT_MAX_CHARS
  3. summary — used when both above are empty
This guarantees downstream agents always have a non-empty snippet to reason over, even for results where Exa couldn’t extract highlights.

Preset: news monitoring

Preset: research paper retrieval

Preset: deep-reasoning agent

Attribution

Every Exa request from FIM One carries an x-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 at src/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.