Skip to main content
The web_search tool searches the web using your configured provider and returns results. Results are cached by query for 15 minutes (configurable). FluffBuzz also includes x_search for X (formerly Twitter) posts and web_fetch for lightweight URL fetching. In this phase, web_fetch stays local while web_search and x_search can use xAI Responses under the hood.
web_search is a lightweight HTTP tool, not browser automation. For JS-heavy sites or logins, use the Web Browser. For fetching a specific URL, use Web Fetch.

Quick start

1

Choose a provider

Pick a provider and complete any required setup. Some providers are key-free, while others use API keys. See the provider pages below for details.
2

Configure

This stores the provider and any needed credential. You can also set an env var (for example BRAVE_API_KEY) and skip this step for API-backed providers.
3

Use it

The agent can now call web_search:
For X posts, use:

Choosing a provider

Brave Search

Structured results with snippets. Supports llm-context mode, country/language filters. Free tier available.

DuckDuckGo

Key-free fallback. No API key needed. Unofficial HTML-based integration.

Exa

Neural + keyword search with content extraction (highlights, text, summaries).

Firecrawl

Structured results. Best paired with firecrawl_search and firecrawl_scrape for deep extraction.

Gemini

AI-synthesized answers with citations via Google Search grounding.

Grok

AI-synthesized answers with citations via xAI web grounding.

Kimi

AI-synthesized answers with citations via Moonshot web search.

MiniMax Search

Structured results via the MiniMax Coding Plan search API.

Ollama Web Search

Key-free search via your configured Ollama host. Requires ollama signin.

Perplexity

Structured results with content extraction controls and domain filtering.

SearXNG

Self-hosted meta-search. No API key needed. Aggregates Google, Bing, DuckDuckGo, and more.

Tavily

Structured results with search depth, topic filtering, and tavily_extract for URL extraction.

Provider comparison

Auto-detection

Direct OpenAI Responses models use OpenAI’s hosted web_search tool automatically when FluffBuzz web search is enabled and no managed provider is pinned. This is provider-owned behavior in the bundled OpenAI plugin and only applies to native OpenAI API traffic, not OpenAI-compatible proxy base URLs or Azure routes. Set tools.web.search.provider to another provider such as brave to keep the managed web_search tool for OpenAI models, or set tools.web.search.enabled: false to disable both managed search and native OpenAI search. Codex-capable models can optionally use the provider-native Responses web_search tool instead of FluffBuzz’s managed web_search function.
  • Configure it under tools.web.search.openaiCodex
  • It only activates for Codex-capable models (openai-codex/* or providers using api: "openai-codex-responses")
  • Managed web_search still applies to non-Codex models
  • mode: "cached" is the default and recommended setting
  • tools.web.search.enabled: false disables both managed and native search
If native Codex search is enabled but the current model is not Codex-capable, FluffBuzz keeps the normal managed web_search behavior. Provider lists in docs and setup flows are alphabetical. Auto-detection keeps a separate precedence order. If no provider is set, FluffBuzz checks providers in this order and uses the first one that is ready: API-backed providers first:
  1. BraveBRAVE_API_KEY or plugins.entries.brave.config.webSearch.apiKey (order 10)
  2. MiniMax SearchMINIMAX_CODE_PLAN_KEY / MINIMAX_CODING_API_KEY or plugins.entries.minimax.config.webSearch.apiKey (order 15)
  3. GeminiGEMINI_API_KEY or plugins.entries.google.config.webSearch.apiKey (order 20)
  4. GrokXAI_API_KEY or plugins.entries.xai.config.webSearch.apiKey (order 30)
  5. KimiKIMI_API_KEY / MOONSHOT_API_KEY or plugins.entries.moonshot.config.webSearch.apiKey (order 40)
  6. PerplexityPERPLEXITY_API_KEY / OPENROUTER_API_KEY or plugins.entries.perplexity.config.webSearch.apiKey (order 50)
  7. FirecrawlFIRECRAWL_API_KEY or plugins.entries.firecrawl.config.webSearch.apiKey (order 60)
  8. ExaEXA_API_KEY or plugins.entries.exa.config.webSearch.apiKey (order 65)
  9. TavilyTAVILY_API_KEY or plugins.entries.tavily.config.webSearch.apiKey (order 70)
Key-free fallbacks after that:
  1. DuckDuckGo — key-free HTML fallback with no account or API key (order 100)
  2. Ollama Web Search — key-free fallback via your configured Ollama host; requires Ollama to be reachable and signed in with ollama signin and can reuse Ollama provider bearer auth if the host needs it (order 110)
  3. SearXNGSEARXNG_BASE_URL or plugins.entries.searxng.config.webSearch.baseUrl (order 200)
If no provider is detected, it falls back to Brave (you will get a missing-key error prompting you to configure one).
All provider key fields support SecretRef objects. Plugin-scoped SecretRefs under plugins.entries.<plugin>.config.webSearch.apiKey are resolved for the bundled Exa, Firecrawl, Gemini, Grok, Kimi, Perplexity, and Tavily providers whether the provider is picked explicitly via tools.web.search.provider or selected through auto-detect. In auto-detect mode, FluffBuzz resolves only the selected provider key — non-selected SecretRefs stay inactive, so you can keep multiple providers configured without paying resolution cost for the ones you are not using.

Config

Provider-specific config (API keys, base URLs, modes) lives under plugins.entries.<plugin>.config.webSearch.*. See the provider pages for examples. web_fetch fallback provider selection is separate:
  • choose it with tools.web.fetch.provider
  • or omit that field and let FluffBuzz auto-detect the first ready web-fetch provider from available credentials
  • today the bundled web-fetch provider is Firecrawl, configured under plugins.entries.firecrawl.config.webFetch.*
When you choose Kimi during fluffbuzz onboard or fluffbuzz configure --section web, FluffBuzz can also ask for:
  • the Moonshot API region (https://api.moonshot.ai/v1 or https://api.moonshot.cn/v1)
  • the default Kimi web-search model (defaults to kimi-k2.6)
For x_search, configure plugins.entries.xai.config.xSearch.*. It uses the same XAI_API_KEY fallback as Grok web search. Legacy tools.web.x_search.* config is auto-migrated by fluffbuzz doctor --fix. When you choose Grok during fluffbuzz onboard or fluffbuzz configure --section web, FluffBuzz can also offer optional x_search setup with the same key. This is a separate follow-up step inside the Grok path, not a separate top-level web-search provider choice. If you pick another provider, FluffBuzz does not show the x_search prompt.

Storing API keys

Run fluffbuzz configure --section web or set the key directly:

Tool parameters

Not all parameters work with all providers. Brave llm-context mode rejects ui_lang, freshness, date_after, and date_before. Gemini, Grok, and Kimi return one synthesized answer with citations. They accept count for shared-tool compatibility, but it does not change the grounded answer shape. Perplexity behaves the same way when you use the Sonar/OpenRouter compatibility path (plugins.entries.perplexity.config.webSearch.baseUrl / model or OPENROUTER_API_KEY). SearXNG accepts http:// only for trusted private-network or loopback hosts; public SearXNG endpoints must use https://. Firecrawl and Tavily only support query and count through web_search — use their dedicated tools for advanced options.
x_search queries X (formerly Twitter) posts using xAI and returns AI-synthesized answers with citations. It accepts natural-language queries and optional structured filters. FluffBuzz only enables the built-in xAI x_search tool on the request that serves this tool call.
xAI documents x_search as supporting keyword search, semantic search, user search, and thread fetch. For per-post engagement stats such as reposts, replies, bookmarks, or views, prefer a targeted lookup for the exact post URL or status ID. Broad keyword searches may find the right post but return less complete per-post metadata. A good pattern is: locate the post first, then run a second x_search query focused on that exact post.

x_search config

x_search parameters

x_search example

Examples

Tool profiles

If you use tool profiles or allowlists, add web_search, x_search, or group:web: