Overview
web_search lets the agent query a search engine and get back a ranked list of results with titles, URLs, and snippets. This is useful for current events, recent documentation, or researching topics the model may not know about.
The tool is config-gated - it checks for a configured search provider at startup and marks itself unavailable if none is found. This prevents the model from attempting searches that will always fail.
Supported Providers
Brave Search
Serper
SearXNG
Tavily
Privacy-focused search engine with a dedicated API. # settings.yml
integrations :
webSearch :
provider : brave
apiKey : "BSA-xxxxxxxxxxxx"
Get your key at brave.com/search/api . Google search results via the Serper API. integrations :
webSearch :
provider : serper
apiKey : "your-serper-key"
Get your key at serper.dev . Self-hosted meta-search engine. No API key required. integrations :
webSearch :
provider : searxng
baseUrl : "https://your-searxng-instance.com"
AI-optimized search API with clean result extraction. integrations :
webSearch :
provider : tavily
apiKey : "tvly-xxxxxxxxxxxx"
Get your key at tavily.com .
Security level : safe | Tier : Standard
The search query. Be specific - use terms like “site:docs.example.com” to scope searches.
Number of results to return. Range: 1-20.
Examples
General search
Search documentation
Research a topic
{
"query" : "Hono middleware error handling TypeScript 2026" ,
"count" : 5
}
{
"success" : true ,
"data" : {
"query" : "Hono middleware error handling" ,
"provider" : "brave" ,
"results" : [
{
"title" : "Error Handling - Hono" ,
"url" : "https://hono.dev/guides/error-handling" ,
"snippet" : "Hono has built-in error handling middleware..."
}
],
"totalResults" : 5
}
}
Checking Availability
You can check the current search configuration from the CLI:
profclaw config show --section integrations.webSearch
Or from within a conversation, the model can check availability programmatically before attempting a search.