MCP server + CLI giving AI agents a real, stealth browser — per-country identity, self-healing actions, snapshots, multi-step plans, structured extraction. Reads JS/SPA pages, drives your own browser via CDP. Built on Patchright/Playwright.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · http counts 0 tools · 0 res
· 0 prompts
permission surface via code analysis
No tools enumerated yet for this server.
evidence-backed
findings quoted directly from the published source artifact — not inferred
filesystem 10
- fs fusengine-fuse-browser-09c00a9/src/bin/run-cli.ts :7
import { readFileSync } from "node:fs"; - fs fusengine-fuse-browser-09c00a9/src/engine/configured-context.ts :7
import { existsSync } from "node:fs"; - fs fusengine-fuse-browser-09c00a9/src/lib/fs.ts :6
import { mkdirSync, readFileSync, writeFileSync } from "node:fs"; - fs fusengine-fuse-browser-09c00a9/src/lib/output-dir.ts :8
import { existsSync } from "node:fs"; - fs fusengine-fuse-browser-09c00a9/src/lib/version.ts :7
import { readFileSync } from "node:fs"; - fs fusengine-fuse-browser-09c00a9/src/proxy/country-map.ts :5
import { existsSync } from "node:fs"; - fs fusengine-fuse-browser-09c00a9/src/server/resources.ts :5
import { readdirSync } from "node:fs"; - fs fusengine-fuse-browser-09c00a9/src/server/tools/visual-diff.ts :7
import { existsSync, readFileSync } from "node:fs"; - fs fusengine-fuse-browser-09c00a9/src/session/download-read.ts :6
import { existsSync, readFileSync, statSync } from "node:fs"; - fs fusengine-fuse-browser-09c00a9/src/session/downloads.ts :8
import { existsSync } from "node:fs";
shell / exec 7
- shell fusengine-fuse-browser-09c00a9/scripts/postinstall.mjs :6
import { execSync } from "node:child_process"; - shell fusengine-fuse-browser-09c00a9/src/consent/booking-currency.ts :70
const rx = new RegExp(`^(${SUPPORTED_CURRENCIES.join("|")})$`, "i"); - shell fusengine-fuse-browser-09c00a9/src/engine/cdp-launch.ts :12
import { spawn } from "node:child_process"; - shell fusengine-fuse-browser-09c00a9/src/extraction/prices-normalize.ts :46
const lone = new RegExp(`^\\s*(?:${currencyTokens})\\s*$`, "i"); - shell fusengine-fuse-browser-09c00a9/src/live/open-url.ts :5
import { spawn } from "node:child_process"; - shell fusengine-fuse-browser-09c00a9/src/net/robots.ts :21
/** Translate a robots pattern (`*` wildcard, `$` end-anchor) into a RegExp. */ - shell fusengine-fuse-browser-09c00a9/src/state/action-memory.ts :16
* Run `exec(action)` with site-memory assist: prefill `preferredStrategy` from
network 7
- net fusengine-fuse-browser-09c00a9/src/agent/fetch-batch.ts :16
/** Options for a batch fetch (per-URL semantics mirror `browser_fetch`). */ - net fusengine-fuse-browser-09c00a9/src/bin/cli-usage.ts :12
fetch <url> Fast HTTP fetch (add --browser-fallback to retry in a browser) - net fusengine-fuse-browser-09c00a9/src/engine/cdp-launch.ts :44
const res = await fetch(url, { signal: controller.signal }); - net fusengine-fuse-browser-09c00a9/src/live/sse-server.ts :7
import { createServer, type ServerResponse } from "node:http"; - net fusengine-fuse-browser-09c00a9/src/net/captcha-client.ts :22
const res = await fetch(url, { - net fusengine-fuse-browser-09c00a9/src/net/fetch-fast.ts :76
const res = await client(proxyUrl).fetch(url, { headers: { Accept: ACCEPT } }); - net fusengine-fuse-browser-09c00a9/src/server/tools/fetch-batch.ts :18
title: "HTTP fast fetch (batch)",
install hooks 2
- postinstall fusengine-fuse-browser-09c00a9/package.json :52
node scripts/postinstall.mjs - prepublishOnly fusengine-fuse-browser-09c00a9/package.json :53
npm run build
declared dependencies 14
- @modelcontextprotocol/sdk@^1.29.0
- defuddle@^0.18.1
- fast-png@^8.0.0
- impit@^0.14.1
- libphonenumber-js@^1.13.5
- linkedom@^0.18.12
- patchright@^1.60.1
- pixelmatch@^7.2.0
- playwright@^1.60.0
- zod@^4.4.3
- @biomejs/biome@^2.4.16
- @types/node@^25.9.1
- tsx@^4.22.4
- typescript@^6.0.3