web-mcp@0.2.1
VERIFIED· install onlyPublisher claims: "Enables agents to perform compact, cited web research within caller-set token caps, returning direct answers, short verbatim quotes, numbered sources, and noted gaps." Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Coverage
Nothing executable in the bundle ran; the trace covers the install step only.- Tested
- every file read, file written and host contacted by what ran
- Not tested
- use of the skill by an agent
What this means for the label: Verified here covers what ran. The server's tools were not exercised with a real credential, so nothing about their behavior is asserted; the credential summary below says what to do with that.
Before you give it your token
- It will ask for
BRAVE_API_KEYBRAVE_API_KEY_FILEWEB_MCP_HTTP_TOKENConfiguration, not credentials: CLAUDE_BIN, WEB_MCP_CACHE_DIR, WEB_MCP_MODEL- Where it talks to
- no vendor host named in the codeAlso brave.com — not the publisher's domain; check what for before connecting.
- What the honeypot saw
- no credential files read · no network
- What we could not test
- use of the skill by an agent
Connect it with a scoped credential, under the guard, and read the third-party hosts first. The code names brave.com as well as its own vendor. The guard injects BRAVE_API_KEY, BRAVE_API_KEY_FILE, WEB_MCP_HTTP_TOKEN only into requests to the host you bind (and its subdomains) and refuses the rest.
Never paste a credential into a chat, a ticket or a report, including ours. How the guard holds it.
Is [email protected] safe to install?
KillerSkills ran it in the KillerSkills honeypot sandbox (1 scenario; nothing executable in the bundle ran; the trace covers the install step only) on 2026-11-11 and scored it 81/100 (Verified). In what ran, nothing we could detect went wrong: no undeclared network egress, no credential reads, no persistent instruction writes. What it does with a real credential was not observed; the static findings and the publisher carry the rest of the score. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 0 s · 1 scenarios · 0 deviationsStatic findings
await assert.rejects(fetchPage("http://169.254.169.254/latest/meta-data"), { code: "blocked_url" });Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.const e = { ...env };Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.const url = "http://93.184.215.14/widget";Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.const PUBLIC = "http://93.184.215.14";Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.new StdioClientTransport({ command: process.execPath, args: [ENTRY, ...args], env: { ...baseEnv(), ...env } });Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.const p = spawn(process.execPath, [ENTRY, ...args], { env: { ...baseEnv(), ...env }, stdio: ["ignore", "ignore", "pipe"] });Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.const URL_ = "http://93.184.215.14/handbook";Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.const url = "http://93.184.215.14/widget";Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.const URL_ = "http://93.184.215.14/handbook";Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.const PUBLIC = "http://93.184.215.14";Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.await assert.rejects(fetchPage("file:///etc/passwd"), { code: "blocked_url" });Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.stub = stubFetch(() => new Response(null, { status: 302, headers: { location: "http://10.0.0.5/admin" } }));Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.Cost to the agent
Tokens estimated at four characters each. Skills load their instruction text when triggered; the figure is what that costs.
Known vulnerabilities
Vulnerability advisories (OSV) cover npm and PyPI packages; this registry has no advisory database.