Search is the entry point of any research. Research Agent works with seven providers and can spread queries across them with automatic backup: one service being down does not stop the research.
Seven providers
- Serper — search over Google, API key;
- Keenable — API key;
- Brave — API key;
- Tavily — API key, also returns a ready-made AI answer;
- DuckDuckGo — works without a key;
- SearXNG — a self-hosted metasearch engine you run yourself, connected by its base URL;
- JSON SEO — results from Yandex, Google or Bing, API key; the search engine and the region are set in the service’s settings. The choice of engine matters: Yandex covers the Russian-language results better, Google and Bing the global ones, and the region narrows down the geography of the results.
Setup
Providers are configured in the Services section of the web interface — one service instance per provider. The API keys for Serper, Keenable, Brave, Tavily and JSON SEO are set right there; for JSON SEO you also pick the search engine (Yandex, Google or Bing) and, optionally, the region. For SearXNG you give the base address of your own instance. There are no environment variables for the keys — everything lives in the interface. Every service can be tested right from the same screen, and each gets a priority that decides the fallback order. For details, see Services & Models.
Search sessions
Search runs in sessions: queries go out in a batch, statuses update in real time. The Searches section shows the list of sessions with filtering and pagination, the statuses (Pending, Running, Completed, Failed) and each session’s results. Results can be filtered for relevance before downloading — a position in the results does not mean usefulness, and links are picked by title and snippet.
Fallback
Queries are distributed across providers: on an error or an outage, the system automatically moves on to the next service by priority. One topic can happily search on several providers at once — for wider coverage of the results.
Access from external agents
Search is also available from the outside — for example, from another project’s Xedant Agent: POST /api/agent/search with the X-API-Key header (the RESEARCH_AGENT_API_KEY variable). Without the key the API returns 503. For details, see Xedant Agent Integration.