LookoutWeb answers with source-level proof.
Search and fetch citeable excerpts. No API key. The call uses the network; the result keeps the URL, the span, and the gaps.
Search and fetch citeable excerpts. No API key. The call uses the network; the result keeps the URL, the span, and the gaps.
A title and a URL leave the agent to paraphrase a page it never opened. Lookout returns the hit, then the fetched text, with spans a person can check. If a page is blocked, truncated, or empty, the result says so.
“Release notes” · example.com · no table, no span, no warning if the body never arrived.
title Release notes · excerpt span · table Limit / Value / Redirects / 5 · warnings empty when the body was actually read.
{
"status": "ok",
"tool": "web_extract",
"route": { "engine": "lookout-ts", "path": "html_main" },
"warnings": [],
"gaps": [],
"answer": {
"url": "https://example.com/releases",
"title": "Release notes",
"description": "What changed in the 2.4 client.",
"language": "en",
"headings": [{ "level": 1, "text": "Release notes" }],
"tables": [{ "rows": [["Limit", "Value"], ["Redirects", "5"]] }],
"spans": [
{ "kind": "title", "text": "Release notes" },
{ "kind": "meta_description", "text": "What changed in the 2.4 client." },
{ "kind": "excerpt", "text": "Release notes The 2.4 client adds citeable excerpts. See the table for the default limits. Limit Value Redirects 5" }
]
}
}Excerpt of a real web_extract result for tests/fixtures/sample-release-notes.html (the heading span is omitted here). The page in that file is sample HTML, not a live site. Fetch reads the HTTP body. It does not run JavaScript.
One npx line. A stdio MCP server starts for Claude, Cursor, VS Code, Codex, or any other MCP client.
web_search ranks public hits. web_fetch or web_extract reads the page you mean to cite. Neither call runs a multi-step research pass.
Use the URL, the excerpt, and the warnings. If they are empty, do not invent the page.
The everyday tools are web_search, web_fetch, and web_extract. Cache, crawl, diff, and multi-step research are separate tools. Nothing calls them for you.
Queries DuckDuckGo HTML, Wikipedia, the npm registry, and Hacker News. Ranked hits name the adapter. No API key.
Reads one HTTP response. Private addresses are rejected. Redirects, size, and timeout are capped. A prefix span cites the body.
Title, description, headings, links, JSON-LD, tables, and spans from HTML you pass or from a URL it fetches first.
Query, stats, clear, or prune the on-disk cache. A cache hit replays an earlier response. It is not a search of the web.
Same-origin only. Default depth 1 (max 3) and 10 pages (max 25). Robots are honored unless you turn that off.
web_research searches, then fetches the top pages (default 3, max 6). web_diff reports added and removed words. Call them by name.
web_search: DuckDuckGo HTML, Wikipedia OpenSearch, the npm registry, Hacker News AlgoliaThese are the limits in the current search and fetch path, not a measured speed claim. A repeated call can be served from the on-disk cache. The first search still needs the network. Lookout does not render a page in a browser and does not write a model summary.
npx -y @sylphx/lookout{
"mcpServers": {
"lookout": { "command": "npx", "args": ["-y", "@sylphx/lookout"] }
}
}claude mcp add lookout -- npx -y @sylphx/lookoutnpx -y @sylphx/lookoutNo API key. web_search and web_fetch are the call. Multi-step research stays a tool you name.