---
title: "Web search providers"
description: "Configure Tavily, Perplexity, or Linkup as the backend for the web_search tool. Per-workflow + per-agent."
slug: guides/advanced/web-search-providers
section: guides
subsection: advanced
canonical_url: https://cerevisor.com/docs/guides/advanced/web-search-providers
last_verified: 2026-05-18
last_verified_version: "1.2.0"
updated_at: 2026-05-18T15:08:18.053416+00:00
---

Cerevisor's `web_search` tool needs a backend. Three are supported:

| Provider | Strengths |
|---|---|
| **Tavily** | Built for LLM agents. Clean JSON, source URLs, decent recency. |
| **Perplexity** | Synthesized answers + sources. Often more analytical. |
| **Linkup** | Strong recency + European source coverage. |

> **License gate:** Trial+/Paid only.

## Configuration

**Settings → Web Search** lists every provider. For each:

| Field | What it does |
|---|---|
| **API key** | Paste your key. Stored in the OS keychain. |
| **Test** | Sends a trivial `ping` query without saving the key first, so you can validate before committing. |

At the top of the tab, the **Default search provider** dropdown picks the workflow-wide default: None / Tavily / Perplexity / Linkup.

## Per-agent overrides

In an Agent Config popup, the **Search provider** field picks an override:

- **Default**: use the workflow's default.
- **None**: disable web search entirely for this agent.
- **Tavily / Perplexity / Linkup**: use this provider for this agent.

Useful when a workflow uses one provider broadly but a specific agent needs a different one (e.g. Linkup for EU-source coverage on one researcher agent).

## Getting an API key

- **Tavily:** [tavily.com](https://tavily.com): sign up, generate key from dashboard.
- **Perplexity:** [perplexity.ai/settings/api](https://perplexity.ai/settings/api): requires Pro subscription for API access.
- **Linkup:** [linkup.so](https://linkup.so): sign up, generate key.

## Test before saving

The **Test** button on each provider runs a minimal smoke test:

- Sends `query: 'ping'` with a 10-second timeout.
- Returns `{ ok: true/false, message, status? }`.
- Uses a redactor so your API key never appears in error messages.

If the test fails:

- `401` / `403`: invalid key.
- `429`: rate limited or quota exhausted.
- `Network timeout`: provider unreachable, or you don't have internet.

## How the `web_search` tool calls the provider

When an agent calls `web_search`, Cerevisor:

1. Resolves the agent's search provider (per-agent override → workflow default).
2. If `None`, the tool returns an error to the agent ("web search disabled for this agent").
3. Otherwise, calls the provider's search API.
4. Returns the structured results to the agent: title, URL, snippet, publish date (when available).

The agent processes the results in its own loop, typically following up with `web_fetch` calls on URLs it wants to read in full.

## Cost

Each provider bills per API call (sometimes per result returned). Cerevisor doesn't track web-search cost in its run cost display: the cost lives on your provider's dashboard.

For heavy research workflows, Linkup is often the cheapest at scale; Perplexity is more expensive but produces richer output.

## When you don't have a search provider

The `web_search` tool fails gracefully, returns an error to the agent. Agents that depend on `web_search` will fail their preflight check before the run starts, so you'll know.

For workflows that don't need web search, set the workflow default to **None** and skip configuration.

## Adding a new backend

Adding a new web-search provider to Cerevisor is a small change in the codebase: a new entry in the search-provider registry, a new probe function, a new dispatch branch in the `web_search` tool. If a provider you use isn't in the list, it's a one-PR addition.
