Give your AI agent a real, persistent Chrome browser. No headless browsers, no cloud, no bot detection issues.
hermes mcp add surfagent --command npx --args -y surfagent-mcphttp://localhost:7201ToolWhat it doesbrowser_navigateOpen a URLbrowser_backGo back in historybrowser_forwardGo forward in historybrowser_clickClick an element (selector, text, or coordinates)browser_typeType text into an elementbrowser_fill_formFill multiple form fields at oncebrowser_selectSelect dropdown optionbrowser_scrollScroll page or to elementbrowser_screenshotCapture page screenshot (PNG)browser_get_textGet visible text contentbrowser_get_htmlGet page HTMLbrowser_get_urlGet current URLbrowser_get_titleGet page titlebrowser_find_elementsFind elements by CSS selectorbrowser_evaluateRun JavaScript in pagebrowser_waitWait for element to appearbrowser_cookiesGet or set cookiesbrowser_list_tabsList open tabsbrowser_new_tabOpen new tabbrowser_switch_tabSwitch to tab by id/titlebrowser_close_tabClose a tabbrowser_extractExtract structured data (markdown, JSON, links)browser_crawlBFS crawl a domainbrowser_mapDiscover all URLs on a site
browser_navigate to open a URLbrowser_screenshot to see the pagebrowser_click or browser_type to interactbrowser_get_text to read contentbrowser_extract with a URL to get markdown + linksprompt and schema fields for LLM-powered structured extractionbrowser_crawl for multi-page extractionbrowser_map for quick URL discoverybrowser_navigate to go to the form pagebrowser_fill_form with field label/name → value mappingsbrowser_click + browser_type for individual fieldsbrowser_select for dropdownsbrowser_list_tabs to see what's openbrowser_new_tab to open a new tabbrowser_switch_tab to change focusbrowser_close_tab when done — always clean up tabsIf MCP isn't available, call the daemon directly:
bash
# Navigate
curl -X POST http://localhost:7201/browser/navigate \
-H 'Content-Type: application/json' \
-d '{"url": "https://example.com"}'
# Screenshot
curl -s http://localhost:7201/browser/screenshot --output screenshot.png
# List tabs
curl -s http://localhost:7201/browser/tabs
# Extract page data
curl -X POST http://localhost:7201/browser/extract \
-H 'Content-Type: application/json' \
-d '{"url": "https://example.com", "formats": ["markdown", "links"]}'
browser_wait or a short delay after navigation/browser/resolve-blockerbrowser_get_url returns the expected URL after navigationbrowser_screenshot shows the expected page contentbrowser_get_text contains the expected textcurl http://localhost:7201/health returns {"ok": true}