Web Search
Theresearch_task tool runs structured two-pass research on top of
web_search and web_fetch: it tries likely primary sources first, expands
discovery when needed, and returns a source ledger with used / blocked / error
status. The lower-level web_search tool searches the web using your
configured provider and returns results. Results are cached by query for 15
minutes (configurable).
Velaclaw 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.
research_task, web_search, and web_fetch are lightweight HTTP tools, 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
BRAVE_API_KEY) and skip this step for API-backed
providers.3
Use it
The agent can now call It can also call For X posts, use:
research_task for structured current research:web_search directly: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
Native Codex web search
Codex-capable models can optionally use the provider-native Responsesweb_search tool instead of Velaclaw’s managed web_search function.
- Configure it under
tools.web.search.openaiCodex - It only activates for Codex-capable models (
openai-codex/*or providers usingapi: "openai-codex-responses") - Managed
web_searchstill applies to non-Codex models mode: "cached"is the default and recommended settingtools.web.search.enabled: falsedisables both managed and native search
web_search behavior.
Setting up web search
Provider lists in docs and setup flows are alphabetical. Auto-detection keeps a separate precedence order. If noprovider is set, Velaclaw checks providers in this order and uses the
first one that is ready:
API-backed providers first:
- Brave —
BRAVE_API_KEYorplugins.entries.brave.config.webSearch.apiKey(order 10) - MiniMax Search —
MINIMAX_CODE_PLAN_KEY/MINIMAX_CODING_API_KEYorplugins.entries.minimax.config.webSearch.apiKey(order 15) - Gemini —
GEMINI_API_KEYorplugins.entries.google.config.webSearch.apiKey(order 20) - Grok —
XAI_API_KEYorplugins.entries.xai.config.webSearch.apiKey(order 30) - Kimi —
KIMI_API_KEY/MOONSHOT_API_KEYorplugins.entries.moonshot.config.webSearch.apiKey(order 40) - Perplexity —
PERPLEXITY_API_KEY/OPENROUTER_API_KEYorplugins.entries.perplexity.config.webSearch.apiKey(order 50) - Firecrawl —
FIRECRAWL_API_KEYorplugins.entries.firecrawl.config.webSearch.apiKey(order 60) - Exa —
EXA_API_KEYorplugins.entries.exa.config.webSearch.apiKey(order 65) - Tavily —
TAVILY_API_KEYorplugins.entries.tavily.config.webSearch.apiKey(order 70)
- DuckDuckGo — key-free HTML fallback with no account or API key (order 100)
- Ollama Web Search — key-free fallback via your configured Ollama host; requires Ollama to be reachable and signed in with
ollama signinand can reuse Ollama provider bearer auth if the host needs it (order 110) - SearXNG —
SEARXNG_BASE_URLorplugins.entries.searxng.config.webSearch.baseUrl(order 200)
All provider key fields support SecretRef objects. In auto-detect mode,
Velaclaw resolves only the selected provider key — non-selected SecretRefs
stay inactive.
Config
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 Velaclaw 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.*
velaclaw onboard or
velaclaw configure --section web, Velaclaw can also ask for:
- the Moonshot API region (
https://api.moonshot.ai/v1orhttps://api.moonshot.cn/v1) - the default Kimi web-search model (defaults to
kimi-k2.5)
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 velaclaw doctor --fix.
When you choose Grok during velaclaw onboard or velaclaw configure --section web,
Velaclaw 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, Velaclaw does not
show the x_search prompt.
Storing API keys
- Config file
- Environment variable
Run
velaclaw configure --section web or set the key directly:Tool parameters
x_search
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. Velaclaw 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, addresearch_task, web_search, x_search, or group:web:
Related
- Web Fetch — fetch a URL and extract readable content
- Web Browser — full browser automation for JS-heavy sites
- Grok Search — Grok as the
web_searchprovider - Ollama Web Search — key-free web search through your Ollama host