The browser that doesn't look like a bot. Full anti-detection browser bridge for AI agents. DOM-first interactions, human-like mouse movements (Bezier curves), typing jitter, stealth anti-fingerprinting, and MCP-native (15 tool + 1 raw tool) integration.
Available via CLI command or MCP tool.
CLI commandMCP toolActionnavigate <url>``navigateGo to any URL with polite waitingannotate``annotate_pageScreenshot + numbered DOM element tree with refsclick <ref>``click_refClick element by numbered ref (found in annotate)type <ref> <text>``type_refType text into element (clears field first)press <key>_via raw_Press keyboard key (Enter/Tab/Escape/...)scroll [dir] [amount]_via raw_Scroll viewport (down/up, default 300px)discover [steps] [px]_via raw_Scroll step by step and capture each page statescreenshot [--full-page]_via raw_Capture page screenshot (viewport or full-page)back / forward_via raw_Browser history with human-like pausessummary_via raw_Page metadata: URL, title, interactive element count
CLI commandExtract types availableDetailsextract article``articleFull article: title + paragraphs + headingsextract table``tableHTML <table> + ARIA role="grid"``extract form``formAll form fields with labels, types, placeholdersextract listings``listingsDirectory/listings: names, ratings, reviews, addresses, phonesextract marketplace``marketplaceE-commerce: titles, prices, images, delivery, sponsored flagsAdditional types via JSON-RPCsearch-results, google-maps, custom (CSS/XPath), schemaAccessible via MCP or WebSocket
Common options: --limit=N | --format=json|csv | --out=file.csv
CLI commandActionscrape-emails <query>🔥 Full pipeline: search engine → visit each result page → extract all emails → save to CSVOptions--limit=N (default 20)extract-emails <url>Navigate to URL and extract all email addresses found in HTML + visible textextract-phones <url>Navigate to URL and extract phone numbers (uses libphonenumber-js, supports French format +33)scrapeExtract marketplace/listing results from current page (alias for extract marketplace)
CLI commandOptionsvisibleText``--limit=N
Cherry-pick visible DOM text by filter, or extract only emails/phones from visible content.
CLI commandMCP toolActionwebSearch <query>``web_searchSearch Google/Bing, auto-paginate until limit reached, deduplicate resultsOptions--limit=N (default 10)`--engine=googlesiteSearch <query>``site_searchDetect and use the current page's search form automatically
Every interaction goes through the human behavior layer. These commands add extra human-like activity:
CLI commandWhat it doesscanRead visible text → scroll → pause → repeat (like a human researcher)findText <text>Search for visible text on page, auto-scrolling until found or max scrolls reachedclickText <text>Find visible text AND click it — coordinates first, falls back to agent.click(ref)idle [ms]Pause with random cursor movements — looks human even while "doing nothing"jitter [radius] [moves]Small cursor hesitation movements (default radius 18px, 4 moves)skim [steps] [px]Scroll through content with natural reading pausesbacktrackSmall upward scroll + pause (emulates re-reading something)focusCycle [n]Press Tab through focusable controls with natural pauseswait [ms]Wait N milliseconds (default: 2000)
CLI commandWhat it doestiming getShow current human timing profile: consultSpeed, WPM ranges, pause rangestiming set key=value ...Adjust any timing parameter live ( consultSpeed, focusedWpmMin/Max, etc.)timing resetRestore default timing profileantispamCheck current page for anti-bot / anti-spam blocking text — non-throwing
The timing system has 10 adjustable parameters controlling reading speed, pause duration, scroll behavior, and feedback intervals.
CLI commandWhat it doesrun <cmd1> <args1> ...Chain multiple commands in sequence, preserving browser state between thembatch <recipe.json>Execute multiple commands from a JSON recipe file (lightweight, no variable interpolation)replInteractive REPL — type commands live, see results instantlystartLaunch the bridge server
text
Web GUI → http://localhost:8080/viewer
Watch the browser in real time. Debug interactions, inspect the page, take over manually when needed.
AgentBridge exposes an MCP server with the following tools:
ToolInputDescriptionbrowser_status—Check browser connection health, return current URL and page titlenavigate``{ url, autoAnnotate? }Navigate to any http(s) URLannotate_page``{ noImage? }Return interactive page elements with stable numeric refs + screenshot URLclick_ref`{ ref: numberstring }`type_ref``{ ref, text, clearFirst? }Type text into an element by refinspect_forms—Map all visible forms: fields, labels, types, options, selectorsfill_form`{ values: {}fields: [] }`submit_form``{ query? }Submit the active form via submit button or Enter keysite_search``{ query, field? }Find and use the current page's search form automaticallyweb_search``{ query, engine?, limit?, pages? }Search Google/Bing/DuckDuckGo with auto-pagination and dedupextract_schema``{ schema: { fields } }Extract structured data via CSS selectors or XPathextract_marketplace``{ limit?, format? }Extract e-commerce listing cards with title, price, image, delivery flagshuman_timing_get—Current consultation timing profile (10 parameters)human_timing_set``{ consultSpeed?, wpmMin/Max? }Adjust timing to speed up or slow down browsinghuman_antispam_check—Check page for anti-bot blocking without throwingbrowser_command (raw){ type, payload }🔐 Run ANY bridge command (requires BRIDGE_MCP_ALLOW_RAW=1)
Also exposes a resource ( agentbridge://api) listing all registered command names, and a prompt template ( browser_task) for asking agents to complete browser-based goals.
FeatureHow it works (source-verified)Bezier cursor curvesEvery mouse movement uses cubic Bezier curves with 24-90 adaptive steps — no straight linesCursor position trackingServer-side cursor state ( _curX, _curY) — every move starts from last known position, never from (0,0)Click delayRandom 15-60ms delay between mouse down and mouse upTyping jitterEach character typed with variable per-keystroke delay (15-180ms)Typing jitter standard dev0.45 of mean delay per characterTiming profile (10 params)consultSpeed (0.25-8), focusedWpmMin (80-500), focusedWpmMax (80-650), skimWpmMin (100-700), skimWpmMax (100-850), minFocusedMs (0-120000), maxFocusedMs (500-180000), minSkimMs, maxSkimMs, feedbackIntervalMsStealth scriptPatches navigator.webdriver → undefined, injects full window.chrome runtime mock, sets navigator.plugins with PDF viewer entries, spoofs languages, platform, userAgent, WebGL vendor/renderer, navigator.hardwareConcurrencyCookie auto-acceptAuto-detects and clicks "Accept all" / "Tout accepter" / "Accepter" on Google, cookie banners, and common consent dialogsFlash clickVisual click indicator (green circle animation) — visible when not headlessAnti-spam checkInspects page for known anti-bot patterns without throwing — returns clean block/unblock statusHuman behavior layerEvery interaction runs through humanPreClick → humanMove (Bezier) → click → flashClick → assertNoAntiBot
src/browser/stealth.ts):#navigator.webdriver → undefinedwindow.chrome mock with runtime, app, loadTimes, csinavigator.plugins → 5 plugins including "Chrome PDF Plugin", "PDF Viewer", "Chrome PDF Viewer"navigator.languages → ["en-US", "en"]navigator.platform → "Win32"navigator.hardwareConcurrency → 4 or 8__name polyfill for esbuild compatibilityToolYouTubeGoogle SearchJS-heavy sitescurl / wget❌ 429 / captcha❌ Blocked❌ JS requiredPuppeteer-Extra + StealthPlugin❌ "Sign in" overlay❌ Detected⚠️ PartialPlaywright + stealth❌ Blocked❌ Detected⚠️ PartialSelenium + undetected-chromedriver❌ Blocked❌ Detected❌ BlockedCamoufox❌ Sign-in prompt⚠️ Partial⚠️ Partialyt-dlp (no cookies)❌ LOGIN_REQUIREDN/AN/ATor Browser❌ Blocked by most❌ CAPTCHA loop❌ BlockedAgentBridge + Chrome CDP✅ Full access✅ Works✅ Works
Tested on Ubuntu 26.04 with Chromium 149 headless via Chrome DevTools Protocol (CDP fallback mode — works without Playwright)
scrape-emails "AI consultants France" --limit=100 --out=leads.csv --fastrun / batchbash
# 1. Install from npm
npm install -g browser-agentbridge-ai
npm run build
# 2. Start the bridge server
agentbridge start
# → WebSocket: ws://localhost:8080/ws/browser-bridge
# → Live GUI: http://localhost:8080/viewer
# 3. Navigate to any page
agentbridge navigate https://example.com
# 4. Analyze the page (returns numbered elements)
agentbridge annotate
# 5. Interact with numbered elements
agentbridge click 3
agentbridge type 5 "hello world"
agentbridge press Enter
# 6. Extract content
agentbridge extract article --format=json
agentbridge extract-emails https://example.com/contact
# 7. Full lead generation pipeline
agentbridge scrape-emails "AI consultants France" --limit=50 --out=leads.csv --fast
# 8. Web search with results
agentbridge webSearch "latest AI security tools 2026" --limit=20 --out=results.json
# 9. Interactive REPL
agentbridge repl
Works on any system with Chrome — no Playwright dependency:
bash
# Launch Chrome headless with remote debugging
google-chrome --headless=new --no-sandbox --remote-debugging-port=9222 &
sleep 2
# Get the WebSocket URL
WS_URL=$(curl -s http://127.0.0.1:9222/json/version | \
python3 -c "import sys,json; print(json.load(sys.stdin)['webSocketDebuggerUrl'])")
# Point AgentBridge at the running Chrome instance
export CHROME_CDP_URL="$WS_URL"
export BRIDGE_HEADLESS=true
npx agentbridge start
bash
# Start the MCP server (stdin/stdout transport for Claude/Cursor/Windsurf)
npm run mcp
Connects 16 tools to any MCP-compatible host.
npm install -g browser-agentbridge-aiMIT-0 — Free to use, modify, and redistribute. No attribution required.