CoderClaw 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 Browser tool.
web_search calls your configured provider and returns results.
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).| Provider | Pros | Cons | API Key |
|---|---|---|---|
| Brave (default) | Fast, structured results, free tier | Traditional search results | BRAVE_API_KEY |
| Perplexity | AI-synthesized answers, citations, real-time | Requires Perplexity or OpenRouter access | OPENROUTER_API_KEY or PERPLEXITY_API_KEY |
See Brave Search setup and Perplexity Sonar for provider-specific details.
Set the provider in config:
{
tools: {
web: {
search: {
provider: "brave", // or "perplexity"
},
},
},
}
Example: switch to Perplexity Sonar (direct API):
{
tools: {
web: {
search: {
provider: "perplexity",
perplexity: {
apiKey: "pplx-...",
baseUrl: "https://api.perplexity.ai",
model: "perplexity/sonar-pro",
},
},
},
},
}
coderclaw configure --section web to store the key in config (recommended), or set BRAVE_API_KEY in your environment.Brave provides a free tier plus paid plans; check the Brave API portal for the current limits and pricing.
Recommended: run coderclaw configure --section web. It stores the key in
~/.coderclaw/coderclaw.json under tools.web.search.apiKey.
Environment alternative: set BRAVE_API_KEY in the Gateway process
environment. For a gateway install, put it in ~/.coderclaw/.env (or your
service environment). See Env vars.
Perplexity Sonar models have built-in web search capabilities and return AI-synthesized answers with citations. You can use them via OpenRouter (no credit card required - supports crypto/prepaid).
{
tools: {
web: {
search: {
enabled: true,
provider: "perplexity",
perplexity: {
// API key (optional if OPENROUTER_API_KEY or PERPLEXITY_API_KEY is set)
apiKey: "sk-or-v1-...",
// Base URL (key-aware default if omitted)
baseUrl: "https://openrouter.ai/api/v1",
// Model (defaults to perplexity/sonar-pro)
model: "perplexity/sonar-pro",
},
},
},
},
}
Environment alternative: set OPENROUTER_API_KEY or PERPLEXITY_API_KEY in the Gateway
environment. For a gateway install, put it in ~/.coderclaw/.env.
If no base URL is set, CoderClaw chooses a default based on the API key source:
PERPLEXITY_API_KEY or pplx-... → https://api.perplexity.aiOPENROUTER_API_KEY or sk-or-... → https://openrouter.ai/api/v1| Model | Description | Best for |
|---|---|---|
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 |
Search the web using your configured provider.
tools.web.search.enabled must not be false (default: enabled)BRAVE_API_KEY or tools.web.search.apiKeyOPENROUTER_API_KEY, PERPLEXITY_API_KEY, or tools.web.search.perplexity.apiKey{
tools: {
web: {
search: {
enabled: true,
apiKey: "BRAVE_API_KEY_HERE", // optional if BRAVE_API_KEY is set
maxResults: 5,
timeoutSeconds: 30,
cacheTtlMinutes: 15,
},
},
},
}
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 elementsfreshness (optional): filter by discovery time
pd, pw, pm, py, or YYYY-MM-DDtoYYYY-MM-DDpd, pw, pm, pyExamples:
// 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",
});
Fetch a URL and extract readable content.
tools.web.fetch.enabled must not be false (default: enabled)tools.web.fetch.firecrawl.apiKey or FIRECRAWL_API_KEY.{
tools: {
web: {
fetch: {
enabled: true,
maxChars: 50000,
maxCharsCap: 50000,
maxResponseBytes: 2000000,
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,
},
},
},
},
}
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.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).maxChars is clamped to tools.web.fetch.maxCharsCap.web_fetch caps the downloaded response body size to tools.web.fetch.maxResponseBytes before parsing; oversized responses are truncated and include a warning.web_fetch is best-effort extraction; some sites will need the browser tool.web_search/web_fetch or group:web.web_search returns a short setup hint with a docs link.