Skip to content

Tool reference

Every result includes status, tool, route, warnings, and gaps. Domain fields sit on answer. A warning means the call finished with something you should read. An error means it did not do the thing you asked.

Start with web_search, web_fetch, or web_extract. The other tools are explicit.

Ranked hits from four public adapters, queried together. No API key.

ArgumentRequiredBehavior
queryyesString or array of strings
useCachenoDefault on. A hit replays a previous result for that query from disk.
hostsIncludenoKeep hits whose host matches any entry
hostsExcludenoDrop hits whose host matches any entry

Each hit has title, url, snippet, engine, score, and scoreExplain. engine is one of duckduckgo_html, duckduckgo_lite, wikipedia_opensearch, npm_registry, or hn_algolia. Adapters that fail are listed in warnings. An empty hit list is not filled in.

This tool does not fetch the result pages.

web_fetch

One HTTP GET.

ArgumentRequiredBehavior
urlyeshttp or https
useCachenoDefault on
maxBytesnoDefault 1,500,000
timeoutMsnoDefault 20,000
respectRobotsnoDefault off. Set true to honor robots.txt Disallow.

Private, loopback, and link-local addresses are rejected before the request. At most 5 redirects. The answer includes the body (truncated when over the cap), redirect list, and a body_prefix span of the first 240 characters. A non-200 status is an error with the status in warnings.

Fetch reads the response body. It does not run JavaScript.

web_extract

ArgumentRequiredBehavior
urlone of url or htmlFetched first, with the same cache and SSRF rules as web_fetch
htmlone of url or htmlParsed directly. No network when you pass HTML.
useCachenoUsed only when Lookout has to fetch url

From HTML it returns title, description, language, canonical URL, headings, links, JSON-LD, tables, text excerpt, and spans (title, meta_description, heading_h1, excerpt, and others when present). Missing title, missing description, or an empty excerpt is a warning. JSON and plain-text bodies take a shorter path and say so on route.

web_cache

ArgumentRequiredBehavior
op or operationnoquery (default), stats, clear, or prune
querynoFilter for query
limitnoCap for query
maxAgeMsnoAge cutoff for prune

The cache directory is ~/.cache/lookout unless LOOKOUT_CACHE_DIR is set. LOOKOUT_CACHE_MAX_AGE_MS limits how old a hit may be. Unset means entries are not expired by age.

web_crawl

Same-origin crawl. Not a full-site crawler.

ArgumentRequiredBehavior
urlyesSeed URL
maxDepthnoDefault 1, maximum 3
maxPagesnoDefault 10, maximum 25
respectRobotsnoDefault on
useSitemapnoWhen true, seed more same-origin URLs from /sitemap.xml

Links that leave the origin are not followed.

web_research

Advanced. Not called by web_search.

ArgumentRequiredBehavior
queryyesQuestion or keywords
maxPagesnoDefault 3, maximum 6
hostsIncludenoKeep hits from these hosts before fetching
hostsExcludenoDrop hits from these hosts before fetching

It searches with the same adapters, then fetches and extracts up to maxPages hits. Each page reports fetchOk, an excerpt, and its own warnings. A page that fails to fetch stays in the result with fetchOk: false.

web_diff

ArgumentRequiredBehavior
before / aftertext pair, or the URL pairThe two snapshots
beforeUrl / afterUrlURL pair, or the text pairFetched with the same rules as web_fetch
useCachenoUsed when fetching URLs

The answer lists added and removed words after whitespace is collapsed. The lists are capped at 200 words. addedCount and removedCount are the full counts.

MIT licensed · search and fetch, no API key · these docs load no remote assets