Web Module
Module id web. Search the public web and fetch pages. Default
search backend is DuckDuckGo (no API key). Optional fallbacks:
Brave, Tavily, SearXNG, Google.
There is no separate web.extract or web.download tool.
Main-content extraction is web.fetch with extract: true. For
a persistent interactive browser session, prefer the
browser module.
Module declaration
tools:
modules:
web:
config:
backend: duckduckgo
# fallback: brave
# allowed_domains: []
# blocked_domains: []
capabilities:
default_policy: auto
grant:
- module: web
actions: [search, fetch]
Tools
| Action | Chat UI label | Purpose |
|---|---|---|
web.search | Search | Search via the configured backend. |
web.fetch | Fetch | Open / fetch a URL (optional extract, actions, screenshot, crawl, profile, live). |
The LLM always calls the real FQN (web__search, web__fetch) -
the chat UI label is a display-only transform, not a callable
alias.
web.search
| Param | Notes |
|---|---|
query | Required. |
limit | Max results (default 10). |
fetch_content | Inline main page text per hit (default true). |
time_range | day / week / month / year. |
web.fetch
| Param | Notes |
|---|---|
url | URL to open; omit to re-read the current page in-session. |
format | text / markdown / html. |
extract | Main article body only. |
prompt | Focus extraction on a topic. |
actions | Page interactions before reading. |
screenshot / live / profile / crawl | See tool schema on a running daemon. |
Search backends
| Backend | API key | Notes |
|---|---|---|
duckduckgo (default) | no | Free default. |
brave | yes | Production-quality. |
tavily | yes | Agent-oriented snippets. |
searxng | instance URL | Self-hosted meta-search. |
google | API key + CX | Highest quality, paid. |
Outbound fetches are SSRF-guarded: private/internal IPs are
blocked by default (allow_private_hosts: true opts a trusted app
out of this), on top of the domain allow/block lists above.
Cross-references
- Module reference: web
- Interactive browser: browser
- Built-in short names: Built-in tools