browser_new_sessionLABSCO SUMMARY
Anti-detection is compiled into the browser, not patched on top.
That is the difference from the usual stealth plugin approach, and it is why the CDP surface stays available. Two caveats the project states outright and you should plan around: exporting a HAR closes the session, because Playwright only flushes the buffer on context close — save the storage state first and reopen from it — and a reputation-scored captcha keys off IP as much as fingerprint, so a clean browser on a flagged address still fails. The library and the tool surface are the same codebase, so anything you script by hand is reachable from the model too.
What it is
A browser engine built to be driven by a model. Pages are read as an accessibility tree with [ref=…] handles, so the model acts on a ref rather than on a brittle selector or a pixel coordinate. It runs on CloakBrowser, a stealth Chromium that is a Playwright drop-in, which is what makes the full DevTools surface — trusted clicks, network bodies, MHTML, PDF, native video — reachable as tools.
What you get
- Sessions with their own identity, storage and optional proxy, plus HAR recording and native video capture —
browser_new_session,browser_list_sessions,browser_close_session,browser_video_path - Navigation and tabs, including switching to a popup after an OAuth flow —
browser_navigate,browser_navigate_back,browser_reload,browser_tabs,browser_switch_to_popup - Reading a page as an accessibility tree with refs, including a child frame directly when the parent collapses it, plus screenshots, console messages and downloads —
browser_snapshot,browser_snapshot_frame,browser_screenshot,browser_console_messages,browser_wait_for_download - Acting by ref: click, type, fill a whole form, hover, select, press a key, drag, upload files, handle a JS dialog, wait on a condition, evaluate JS in any frame, and scroll to trigger lazy loading —
browser_click,browser_type,browser_fill_form,browser_press_key,browser_wait_for,browser_evaluate,browser_scroll_to_bottom - Network inspection and control: requests listed and one opened in full with headers and body, WebSocket frames read, URLs blocked or mocked, and the context taken offline —
browser_network_requests,browser_network_request,browser_ws_messages,browser_block_urls,browser_mock_url,browser_set_offline - State you can carry between sessions — cookies, localStorage and sessionStorage read and written, and the whole storage state saved to a file and reloaded —
browser_cookie_set,browser_localstorage_get,browser_storage_state,browser_har_export - A fresh fingerprint with isolated storage and an optional paired proxy —
browser_new_identity,browser_set_proxy - CDP extras on Chromium: a trusted cursorless click by ref that passes checks which flag DOM clicks, raw CDP commands, a single-file MHTML archive and a PDF —
browser_cdp_click,browser_cdp_send,browser_capture_mhtml,browser_pdf_save - Captcha solving through a configured provider and TOTP codes for two-factor logins —
browser_solve_captcha,browser_totp_generate - The page extracted as clean markdown with no model in the loop —
browser_extract
Requirements
Python 3.12 and pip install eyebrowse; the stealth Chromium binary downloads itself on first launch, so there is nothing else to run. The package is eyebrowse (0.3.10) and provides the eyebrowse-mcp command — add it to a client with claude mcp add eyebrowse -- eyebrowse-mcp. It runs proxyless by default; a proxy is opt-in per session or set as a default through the EYEBROWSE_PROXY_* variables. Captcha solving needs an API key for whichever provider you configure. Markdown extraction is an optional heavier install, pip install "eyebrowse[extract]".
Setup effort
One command — pip install eyebrowse
USE CASES
Automating a site that keeps flagging your automation
Drive a stealth browser whose fingerprint is randomised per launch, and use the trusted CDP click when an overlay or a bot check rejects a normal one.
Filling a multi-step form the model has to read first
Snapshot the accessibility tree, fill the fields by ref in one call, and snapshot again to confirm what changed.
Debugging what a page is actually requesting
List the network requests, open one in full with its headers and response body, and read the WebSocket frames alongside.
Keeping a login so you do not repeat it
Save cookies and localStorage to a file at the end of a session and start the next one from that state.
Pulling a page into context cheaply
Extract clean markdown instead of a screenshot or raw HTML, then let the model do any structuring itself.
Archiving exactly what a page looked like
Capture a single-file MHTML archive that keeps iframes, shadow DOM and external resources, or render it to PDF.
81 tools
Listed in project docs. Your client may show a different list.
browser_video_pathbrowser_close_sessionbrowser_list_sessionsbrowser_navigatebrowser_navigate_backbrowser_navigate_forwardbrowser_reloadbrowser_tabsbrowser_switch_to_popupbrowser_snapshotbrowser_snapshot_framebrowser_screenshotbrowser_resizebrowser_console_messagesbrowser_wait_for_downloadbrowser_clickbrowser_typebrowser_keyboard_typebrowser_fill_formbrowser_hoverbrowser_select_optionbrowser_press_keybrowser_dragbrowser_file_uploadbrowser_handle_dialogbrowser_wait_forbrowser_evaluatebrowser_scrollbrowser_scroll_to_bottombrowser_mouse_movebrowser_mouse_clickbrowser_mouse_downbrowser_mouse_upbrowser_mouse_wheelbrowser_mouse_dragbrowser_network_requestsbrowser_network_requestbrowser_ws_messagesbrowser_block_urlsbrowser_unblock_urlsbrowser_set_offlinebrowser_mock_urlbrowser_cookie_listbrowser_cookie_getbrowser_cookie_setbrowser_cookie_deletebrowser_cookie_clearbrowser_localstorage_listbrowser_localstorage_getbrowser_localstorage_setbrowser_localstorage_removebrowser_localstorage_clearbrowser_sessionstorage_listbrowser_sessionstorage_getbrowser_sessionstorage_setbrowser_sessionstorage_removebrowser_sessionstorage_clearbrowser_storage_statebrowser_har_exportbrowser_new_identitybrowser_set_proxybrowser_verify_element_visiblebrowser_verify_element_hiddenbrowser_verify_text_visiblebrowser_verify_valuebrowser_highlightbrowser_clear_highlightsbrowser_generate_locatorbrowser_start_tracingbrowser_stop_tracingbrowser_set_geolocationbrowser_set_extra_headersbrowser_grant_permissionsbrowser_cdp_clickbrowser_cdp_sendbrowser_capture_mhtmlbrowser_pdf_savebrowser_solve_captchabrowser_totp_generatebrowser_extractBEFORE YOU INSTALL
What to know first
Tools you get
81 tools named in the project's documentation.
Requires
- eyebrowse-mcp on PATH
- Python 3.12
Where it runs
Both documented clients run the server on your machine.
INSTALLATION
Connect your client
Server setup
pip install eyebrowseMCP Clients
Claude Code
claude mcp add eyebrowse -- eyebrowse-mcpAny MCP client
{
"mcpServers": {
"eyebrowse": {
"command": "eyebrowse-mcp"
}
}
}