Web Tools
Web search + fetch tools (Brave Search API, Perplexity direct/OpenRouter)
OpenClaw ships two lightweight web tools:
- ''web_search'' — Search the web via Brave Search API (default) or Perplexity Sonar (direct or via OpenRouter).
- ''web_fetch'' — HTTP fetch + readable extraction (HTML → markdown/text).
These are not browser automation. For JS-heavy sites or logins, use the
How it works
- ''web_search'' calls your configured provider and returns results.
- Brave (default): returns structured results (title, URL, snippet).
- Perplexity: returns AI-synthesized answers with citations from real-time web search.
- Results are cached by query for 15 minutes (configurable).
- ''web_fetch'' does a plain HTTP GET and extracts readable content
(HTML → markdown/text). It does not execute JavaScript.
- ''web_fetch'' is enabled by default (unless explicitly disabled).
Choosing a search provider
| Provider | Pros | Cons | API Key |
| - | -- | -- |
| ''perplexity/sonar'' | Fast Q&A with web search | Quick lookups |
| ''perplexity/sonar-pro'' (default) | Multi-step reasoning with web search | Complex questions |
| ''perplexity/sonar-reasoning-pro'' | Chain-of-thought analysis | Deep research |
web_search
Search the web using your configured provider.
Requirements
- ''tools.web.search.enabled'' must not be ''false'' (default: enabled)
- API key for your chosen provider:
- ''Brave'': ''BRAVE_API_KEY'' or ''tools.web.search.apiKey''
- ''Perplexity'': ''OPENROUTER_API_KEY'', ''PERPLEXITY_API_KEY'', or ''tools.web.search.perplexity.apiKey''
Config
'{'
tools: '{'
web: '{'
search: '{'
enabled: true,
apiKey: "BRAVE_API_KEY_HERE", // optional if BRAVE_API_KEY is set
maxResults: 5,
timeoutSeconds: 30,
cacheTtlMinutes: 15,
'}',
'}',
'}',
'}'Tool parameters
- ''query'' (required)
- ''count'' (1–10; default from config)
- ''country'' (optional): 2-letter country code for region-specific results (e.g., "DE", "US", "ALL"). If omitted, Brave chooses its default region.
- ''search_lang'' (optional): ISO language code for search results (e.g., "de", "en", "fr")
- ''ui_lang'' (optional): ISO language code for UI elements
- ''freshness'' (optional, Brave only): filter by discovery time (''pd'', ''pw'', ''pm'', ''py'', or ''YYYY-MM-DDtoYYYY-MM-DD'')
Examples:
// German-specific search
await web_search('{'
query: "TV online schauen",
count: 10,
country: "DE",
search_lang: "de",
'}');
// French search with French UI
await web_search('{'
query: "actualités",
country: "FR",
search_lang: "fr",
ui_lang: "fr",
'}');
// Recent results (past week)
await web_search('{'
query: "TMBG interview",
freshness: "pw",
'}');web_fetch
Fetch a URL and extract readable content.
Requirements
- ''tools.web.fetch.enabled'' must not be ''false'' (default: enabled)
- Optional Firecrawl fallback: set ''tools.web.fetch.firecrawl.apiKey'' or ''FIRECRAWL_API_KEY''.
Config
'{'
tools: '{'
web: '{'
fetch: '{'
enabled: true,
maxChars: 50000,
timeoutSeconds: 30,
cacheTtlMinutes: 15,
maxRedirects: 3,
userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 14_7_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
readability: true,
firecrawl: '{'
enabled: true,
apiKey: "FIRECRAWL_API_KEY_HERE", // optional if FIRECRAWL_API_KEY is set
baseUrl: "https://api.firecrawl.dev",
onlyMainContent: true,
maxAgeMs: 86400000, // ms (1 day)
timeoutSeconds: 60,
'}',
'}',
'}',
'}',
'}'Tool parameters
- ''url'' (required, http/https only)
- ''extractMode'' (''markdown'' | ''text'')
- ''maxChars'' (truncate long pages)
Notes:
- ''web_fetch'' uses Readability (main-content extraction) first, then Firecrawl (if configured). If both fail, the tool returns an error.
- Firecrawl requests use bot-circumvention mode and cache results by default.
- ''web_fetch'' sends a Chrome-like User-Agent and ''Accept-Language'' by default; override ''userAgent'' if needed.
- ''web_fetch'' blocks private/internal hostnames and re-checks redirects (limit with ''maxRedirects'').
- ''web_fetch'' is best-effort extraction; some sites will need the browser tool.
- See ''Firecrawl'' for key setup and service details.
- Responses are cached (default 15 minutes) to reduce repeated fetches.
- If you use tool profiles/allowlists, add ''web_search''/''web_fetch'' or ''group:web''.
- If the Brave key is missing, ''web_search'' returns a short setup hint with a docs link.