Skip to main content
Glama

web-mcp

A local MCP server that answers web research questions for agents and returns the smallest useful reply: a direct answer, short verbatim quotes, numbered sources and what it could not find, never longer than the token cap the caller sets.

It exists so that small local models (and agents in a network sandbox) can use the web without spending their context on search result pages. A Claude Haiku session does the searching, reading and filtering on your own Claude subscription, through the Claude Code command line you are already signed in to. No API keys are needed. A Brave Search API key is optional and gives each research run a head start.

Requirements

  • Node.js 22 or newer.

  • Claude Code installed and signed in with a Claude subscription. The server runs the unmodified claude command; it never reads or stores your credentials.

  • Optional: a Brave Search API key, in BRAVE_API_KEY or in a file named by BRAVE_API_KEY_FILE.

Related MCP server: ag-mcp-search

Install

Not yet published to npm. Until then, build from a clone:

npm install
npm run build

Claude Code:

claude mcp add --transport stdio web -- node <clone>/dist/src/index.js

pi coding agent:

pi mcp add web -- node <clone>/dist/src/index.js

LM Studio and other clients that use an mcp.json file:

{
  "mcpServers": {
    "web": { "command": "node", "args": ["<clone>/dist/src/index.js"], "env": { "BRAVE_API_KEY": "<your key>" } }
  }
}

Sandboxed agents (HTTP)

An agent in a sandbox has no Claude sign-in, so run the server on the host and let the sandbox reach it over HTTP:

node dist/src/index.js --http 127.0.0.1:7343
claude mcp add --transport http web http://127.0.0.1:7343/mcp

On loopback without a token, the server accepts only localhost Host and Origin headers. To listen on any other address you must set WEB_MCP_HTTP_TOKEN; clients then send Authorization: Bearer <token>. One HTTP process also shares one concurrency limit across all its callers.

Tools

Tools come in three tiers, so each agent role can be given only the tools it can use well. Allow-list them by name in your client, or start the server with --tiers basic (or basic,standard) to hide the rest.

Tier

Tool

Inputs

Use

basic

web_lookup

question, max_tokens (optional, default 300)

Answer a question from the web.

basic

web_read

url, question (optional), max_tokens (optional, default 300)

Say briefly what one page says.

standard

web_research

question, goal, max_tokens (default 400), format

Research for a stated goal; full reply with findings and quotes.

standard

web_page

url, goal, max_tokens, format

Read one known page for a goal; quotes checked against the page.

advanced

web_investigate

web_research inputs plus depth, recency, domains, cache

Research with control over effort, freshness and sources.

advanced

web_search

query, count, recency, domains

Raw Brave results: titles, URLs, snippets, dates. Listed only when a Brave key is set.

goal is what the caller will do with the answer. The server keeps only what serves it, so a good goal makes a short reply. It is sent to Claude and to the web, so never put secrets in it.

max_tokens (50 to 4000) is a ceiling, not a target. Haiku is asked for the shortest reply that serves the goal. If it still runs over, the server drops the least important findings first, then quotes, then gaps, then trailing sentences, and marks the reply trimmed yes. Tokens are estimated with an o200k count times 1.3, which tracks Claude's tokenizer on prose and runs low on code.

depth sets the effort: quick allows 2 searches and 3 page reads, standard 4 and 6, deep 8 and 12. Each call has a time budget (90, 180 or 300 seconds; 90 for page tools) counted from when it arrives, so time spent waiting for a free slot uses it up too.

Replies

Replies are compact markdown, because for this kind of content it costs fewer tokens than JSON and every model reads it well:

Answer: Send the key in the `X-Subscription-Token` header [1].
Confidence: high

Findings
- Every request must include the API key in this header. [1] "All requests to the Brave Search API must include an API key in the X-Subscription-Token HTTP header."

Sources
[1] Authentication. https://api-dashboard.search.brave.com/documentation/guides/authentication

Gaps
- Rate limits for the free credit were not checked.

meta: claude-haiku-5-5, searches 0, pages 0, brave, verified 1/1, cached no, trimmed no, 7.5 s

The basic tools return only the answer, the sources and a Not found: line. Standard and advanced tools accept format: "json" for code that wants to parse the reply; the object matches src/contract.ts, with findings[].source as a 0-based index into sources and findings[].verified: true on quotes the server checked. The server does not send MCP structured content, because some clients show that to the model instead of the text.

verified n/m means n of the m quotes in the reply were checked word for word against page text the server holds: the page itself for web_read and web_page, and the Brave snippets for research runs. A quote that fails the check is removed and its claim kept, so the other m minus n quotes were not checked: they come from pages Haiku read through WebFetch, whose text the server never sees.

Errors come back as tool errors with a code first: claude_not_signed_in, no_backend, rate_limited, busy, timeout, cancelled, fetch_failed, blocked_url, bad_output.

How it works

Each research call is one headless claude -p run on Haiku with only the WebSearch and WebFetch tools. Haiku splits the question into the parts the goal needs, searches, reads the most promising pages, checks after each read whether every part is backed by a quote, and stops when it is, or when the depth caps are reached. It then fills a JSON structure whose schema carries length limits sized to max_tokens (answer length, number of findings, quote and gap length). Claude Code rejects output that breaks them and Haiku rewrites it, which keeps most replies inside the cap without trimming. The server then renders, verifies, trims if still needed, and caches.

With a Brave key, the server first runs one Brave web search and gives Haiku the results and snippets as a head start, so simple questions often need no further searching. Each uncached research call spends one Brave request, and each web_search call spends one. Page tools spend none. Brave accepts at most 75 words per query, so long questions are cut to fit. If Brave rejects a query, only that call loses its head start; only a key or plan error switches Brave off until restart.

Page tools fetch the page directly (public addresses only, 2 MB, 20 seconds), extract the main text with Mozilla Readability, convert it to compact markdown, keep the passages that match the goal, and give those to Haiku with no tools.

The Claude run is isolated from your own Claude Code setup: no user or project settings, hooks, plugins, MCP servers or slash commands, an empty working directory, and no saved session. ANTHROPIC_API_KEY is removed from its environment so it always uses the subscription and never bills the API.

Cancellation

When a caller cancels a call, or drops its connection, the server removes it from the wait queue or stops its Claude run at once, so no subscription usage is spent on an answer nobody will read. Over stdio this works for any client. Over HTTP it works when the client closes the request's connection, as clients on the 2026-07-28 protocol do. Clients on the older 2025 protocol cancel with a separate message that a stateless HTTP server cannot match to the call, so their abandoned runs stop at the time budget instead.

Cache

Answers and fetched pages are cached as small JSON files in WEB_MCP_CACHE_DIR, or the platform cache directory under web-mcp (~/Library/Caches on macOS, XDG_CACHE_HOME or ~/.cache on Linux, LOCALAPPDATA on Windows).

Entry

Lifetime

Research answer, recency day

1 hour

week

6 hours

month

1 day

year

3 days

any

7 days

Page text and page answers

1 day

Brave results

10 minutes, in memory only

Brave's API terms allow only transient storage of search results, so they are never written to disk. cache: "refresh" on web_investigate ignores cached answers and pages.

Configuration

Variable

Default

Meaning

BRAVE_API_KEY, BRAVE_API_KEY_FILE

unset

Brave key, or a file holding it. Enables the head start and web_search.

CLAUDE_BIN

claude

Path to the Claude Code command.

WEB_MCP_MODEL

haiku

Model alias or id passed to claude --model.

WEB_MCP_CONCURRENCY

2

Claude runs at once; the rest wait in order.

WEB_MCP_QUEUE

8

Calls allowed to wait for a slot; beyond that a call fails at once with busy.

WEB_MCP_CACHE_DIR

platform cache dir

Where cached answers and pages live.

WEB_MCP_HTTP_TOKEN

unset

Bearer token for --http; required off loopback.

Logs go to stderr only.

Use of your Claude subscription

Every uncached call runs Claude Code under your own sign-in and counts toward your plan's usage limits. Run this server for your own agents. Do not offer it to other people as a shared Claude backend: Anthropic's terms allow ordinary individual use of Claude Code with your own subscription, not reselling access to it.

Limits

  • Pages that render their content with JavaScript come back thin; there is no headless browser.

  • Page tools do not consult robots.txt.

  • recency is exact for the Brave head start and best effort for Claude's own searches.

  • The token estimate is approximate; set max_tokens with some margin if a hard limit matters.

Development

npm test

Tests run against a fake claude command and need no network or sign-in.

License

MIT

Available Tools

5 tools
web_investigateInvestigate on the webA
Read-onlyIdempotent

Research with full control: depth (how many searches and page reads to spend), recency, domain filters and cache refresh. Same reply as web_research.

NameRequiredDescriptionDefault
goalYesWhat you will do with the answer; only what serves it is kept. Never put secrets here: it leaves the machine
cacheNorefresh: ignore cached answers and pagesuse
depthNoHow many searches and page reads it may spendquick
formatNomarkdown (default, fewest tokens) or json (the result object, for code)markdown
domainsNoHosts to search only, or to leave out
recencyNoPrefer sources from this window. Exact for the Brave head start, best effort for other searchesany
questionYesThe question to answer from the web
max_tokensNoCeiling on the reply size in tokens. The reply is as short as the goal allows, never longer than this

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive), so the description's job is to add operational context — and it does: depth governs how many searches and page reads are spent, cache=refresh bypasses cached answers and pages, and the reply is identical in shape to web_research. It stops short of disclosing latency, cost, or what happens when include and exclude domains conflict.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with zero filler; the control axes are front-loaded and the reply-parity note is the right closing clause. Nothing redundant or padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter tool with a nested domains object, the rich schema (100% coverage) and full annotations carry most of the burden, and 'Same reply as web_research' covers the absent output schema. The description is adequate, though it never touches the two required parameters (question, goal) or the cost/latency implications of depth, which matter for an open-world research call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description largely restates schema content (depth = searches and page reads, recency, domain filters, cache refresh) rather than adding new semantics such as how 'quick' vs 'deep' differ numerically or precedence rules for include/exclude.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Research') and enumerates the control axes (depth, recency, domain filters, cache refresh), which differentiates it from web_research via 'full control' and reply parity. It does not distinguish itself from web_lookup, web_read, or web_page, so an agent must infer that this is the multi-step agentic variant.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Same reply as web_research' combined with 'full control' implies the routing rule (use this when you need to tune cost/recency/domains, use web_research otherwise), but the alternative is never named as a choice or paired with an explicit condition. No when-not-to-use or cost tradeoff guidance is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

web_lookupLook up on the webA
Read-onlyIdempotent

Answer a question from the web. Returns a short answer with numbered sources. Use it for facts you do not know or that may have changed.

NameRequiredDescriptionDefault
questionYesThe question to answer from the web
max_tokensNoCeiling on the reply size in tokens. The reply is as short as the goal allows, never longer than this

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnly, openWorld, idempotent, and non-destructive, so safety is covered. The description adds value beyond that by disclosing the response contract (short answer plus numbered sources) and that answers are truncated to the goal rather than truncated arbitrarily, which tells the agent how to interpret output length.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences: purpose, return shape, usage trigger. Zero filler, and the answer-format detail is placed before the routing guidance so the agent reads the most load-bearing facts first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description correctly fills that gap by stating the return shape (short answer with numbered sources). With rich annotations and a fully documented two-parameter schema, the only real omission is sibling differentiation, which keeps it from a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters carry their own descriptions, so the schema does the work. The description adds no field-level guidance (e.g., how to phrase the question, or when to raise max_tokens), so it neither compensates nor detracts — the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource (answer a question from the web) plus the return shape (short answer with numbered sources), so the agent knows this is a Q&A-over-web tool rather than a fetch tool. However, it never distinguishes itself from close siblings such as web_research or web_investigate, which plausibly overlap in purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use it for facts you do not know or that may have changed" gives a clear selection condition tied to knowledge gaps and recency. It stops short of naming when NOT to use it or which sibling (web_research, web_investigate) to prefer for deeper investigations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

web_pageRead a web page for a goalA
Read-onlyIdempotent

Read one known web page for a stated goal. Returns a compact answer and findings with verbatim quotes checked against the page, never longer than max_tokens.

NameRequiredDescriptionDefault
urlYesThe page to read
goalYesWhat you will do with the answer; only what serves it is kept. Never put secrets here: it leaves the machine
formatNomarkdown (default, fewest tokens) or json (the result object, for code)markdown
max_tokensNoCeiling on the reply size in tokens. The reply is as short as the goal allows, never longer than this

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds real value beyond that: it discloses the return shape (compact answer plus findings), the grounding guarantee (verbatim quotes checked against the page), and the size cap. It doesn't cover failure modes such as unreachable pages or paywalls.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler, with the core action and scope front-loaded before the return-value detail. Every clause carries information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly takes on the job of explaining what comes back (answer, findings, verified quotes, token cap). Parameters and safety are handled by schema and annotations. Only the absence of error/edge-case behavior keeps it from a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including a security warning on 'goal' and the enum meanings for 'format', so the schema does the heavy lifting. The description only restates the max_tokens ceiling already documented in the schema, adding no new syntax or constraint detail. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read one known web page') plus the scoping constraint 'for a stated goal', which implicitly separates it from discovery-style siblings like web_lookup and web_research. It stops short of naming those siblings explicitly, so differentiation requires a small inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The qualifier 'one known web page' hints that this is for a single, already-identified URL rather than open-ended search or multi-page investigation. However, no alternative tool is named and there are no stated exclusions, so the when-not guidance is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

web_readRead a web pageA
Read-onlyIdempotent

Read one web page and say briefly what it says, with the source. Give a question to get only that part.

NameRequiredDescriptionDefault
urlYesThe page to read
questionNoWhat you want from the page; omit for a summary
max_tokensNoCeiling on the reply size in tokens. The reply is as short as the goal allows, never longer than this

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive and openWorld, so the safety profile is covered structurally. The description adds that results are brief and attributed to a source, which is useful output context, but it says nothing about fetch failures, paywalled/JS-rendered pages, or truncation behavior beyond max_tokens.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler, and the core action plus output shape come first. The phrasing is slightly informal ('say briefly what it says') but nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must carry return-value information — and it does, promising a short summary with the source. Combined with full schema coverage of all three parameters and rich annotations, this is close to sufficient; only guidance on failure modes and sibling choice is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter is already documented, establishing a baseline of 3. The description reinforces the optional-question semantic ('get only that part') but adds no syntax, format, or edge-case detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read one web page') and even describes the shape of the output ('say briefly what it says, with the source'). The word 'one' implicitly contrasts with the multi-page siblings (web_research, web_investigate), but no sibling is named, so an agent must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Give a question to get only that part; omit for a summary' implies the two usage modes (targeted extraction vs. full summary), which is genuine guidance. However, there is no explicit statement of when to prefer this over web_lookup, web_page, web_research, or web_investigate, leaving the agent to guess.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

web_researchResearch on the webA
Read-onlyIdempotent

Research a question on the web for a stated goal. Returns a compact answer, confidence, findings with short verbatim quotes, sources and gaps, never longer than max_tokens.

NameRequiredDescriptionDefault
goalYesWhat you will do with the answer; only what serves it is kept. Never put secrets here: it leaves the machine
formatNomarkdown (default, fewest tokens) or json (the result object, for code)markdown
questionYesThe question to answer from the web
max_tokensNoCeiling on the reply size in tokens. The reply is as short as the goal allows, never longer than this

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint and destructiveHint=false, so the safety profile is fully covered. The description adds genuine context beyond that: the exact shape of the reply and the fact that output length is bounded by max_tokens. It does not disclose latency, cost, or what happens when the web yields nothing useful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler, and the core action is front-loaded ahead of the return description. The enumerated return fields earn their space because there is no output schema to carry them.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly shoulders the burden of describing the return value (answer, confidence, findings, sources, gaps) and the size cap. Safety is covered by annotations and every parameter is documented in the schema. What remains missing is the sibling differentiation and any note on freshness or failure behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so question, goal, format and max_tokens are already documented, including the notable 'never put secrets here' warning on goal. The description only restates the max_tokens ceiling, adding no syntax or format nuance beyond the schema; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (research) and resource (a question on the web) plus the required framing (a stated goal), and goes further by naming what comes back: answer, confidence, verbatim-quote findings, sources, gaps. It never distinguishes itself from the sibling tools (web_lookup, web_read, web_page, web_investigate), so the agent must infer which of the family to call.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by 'for a stated goal' — a goal-bearing research call rather than a raw fetch — but there is no explicit when-to-use, when-not-to-use, or named alternative among the four sibling web tools. The agent gets a flavor of the tool's role without a routing rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv0.1.0
    • First observedweb_investigate
    • First observedweb_lookup
    • First observedweb_page
    • First observedweb_read
    • First observedweb_research

TDQS

A3.7/5.0

Scored across 5 tools

Disambiguation3/5

web_read and web_page both read a single page and differ mainly in output shape (brief summary vs. verbatim-quote findings), while web_research and web_investigate are explicitly the same reply with different control knobs, so an agent can plausibly pick either in each pair. web_lookup is reasonably distinct. Descriptions help but the boundaries between the tiers are gradient rather than crisp.

Naming Consistency4/5

All tools share a clean web_ prefix in snake_case, which makes the family obvious. However the suffix mixes verbs (lookup, read, research, investigate) with a bare noun (web_page), breaking the verb_noun predictability.

Tool Count4/5

Five tools is a well-scoped surface for a web answer/read server and each maps to a plausible user intent. The only waste is that web_investigate is functionally web_research plus parameters, so one slot is arguably redundant.

Completeness4/5

Covers the core lifecycle: quick answer, single-page read, goal-driven research, and a high-control research mode with depth/recency/domain filters and cache refresh. Minor gap: no plain search-results tool that returns a list of candidate URLs, and no multi-page/batch read, which agents may need to discover pages before reading.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables MCP hosts to perform cited web searches and receive source-bearing results with titles, URLs, snippets, and sources for evidence-grounded answers.
    1
    12 npm
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables finding information online, reading web pages, finding images, capturing screenshots, and performing multi-source research with per-answer confidence.
    5
    AGPL 3.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables cited research synthesis from verified public sources, returning extractive quotations with source URLs and refusing topics that cannot be grounded.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables free-first English and Chinese web search through zero-key engines plus optional paid providers, returning compact multi-source evidence with bounded token and request budgets. Each result exposes provenance, independent source counts, routing decisions, and visible provider failures so agents can verify claims rather than receive unexplained empty results.
    193 npm
    Apache 2.0