Reference

MCP server

Octoweb serves the Model Context Protocol on localhost:3434/mcp. Any MCP-compatible client — Claude Desktop, octomind, your own script — can navigate, read, and interact with real pages in a window you can watch.

Connecting a client

The server starts with the browser — there is nothing to install, enable, or run. Point any MCP client at the URL above.

Claude Code

claude mcp add --transport http octoweb http://localhost:3434/mcp

Claude Desktop, Cursor, and other JSON clients

{
  "mcpServers": {
    "octoweb": {
      "type": "http",
      "url": "http://localhost:3434/mcp"
    }
  }
}

octomind

Add the server to your octomind config. The session /mcp command is read-only — use /mcp list to confirm the tools arrived.

[[mcp.servers]]
name = "octoweb"
type = "http"
url = "http://localhost:3434/mcp"
timeout_seconds = 30

Focus and workspace rules

  • browser_navigate always opens in the background, in a new tab or in place via tab_id. It never steals focus.
  • browser_switch_tab is the only tool that changes what you are looking at.
  • One server covers every workspace. The X-Octoweb-Workspace header decides which workspace a request acts on; callers without a token fall through to the first one.
  • Set OCTOWEB_MCP_PORT and OCTOWEB_CONFIG_DIR to run a second, isolated instance — useful for test suites.

Navigation

  • browser_navigate Open a URL in the background — never steals focus
  • browser_go_back Go back in history
  • browser_go_forward Go forward in history
  • browser_reload Reload the current page
  • browser_wait Wait for load, SPA readiness, or a CSS selector

Tabs

  • browser_get_tabs List every open tab with id, title, and URL
  • browser_get_current_tab Get the tab the user is actually looking at
  • browser_switch_tab Show a tab to the user — the only tool that moves focus
  • browser_close_tab Close a tab by id
  • browser_get_playing_tabs List tabs currently playing audio or video

Interaction

  • browser_click Click an element, retrying until stable and unobstructed
  • browser_type Set an input, textarea, or contenteditable value — React-safe
  • browser_fill_form Fill several fields and optionally submit, in one call
  • browser_hover Hover with a full pointer and mouse event sequence
  • browser_scroll Scroll the window or any scrollable container
  • browser_press_key Press a key — Enter submits like a real keypress
  • browser_select_option Pick a <select> option by value or label
  • browser_dismiss_overlay Dismiss consent overlays — prefers Reject, never auto-accepts
  • browser_handle_dialog Arm answers for upcoming alert, confirm, and prompt dialogs
  • browser_upload_file Arm the next file chooser with local paths
  • browser_execute_js Run JavaScript in the page — promises are awaited

Inspection

  • browser_snapshot Map interactive elements with @N refs — pierces iframes and shadow DOM
  • browser_get_page_info Title, URL, and meta description
  • browser_get_page_content Page text content (innerText)
  • browser_screenshot Screenshot the viewport or the full page
  • browser_console_messages Recent console output and JS errors
  • browser_network_requests Recent fetch and XHR activity with statuses and timings
  • browser_get_history Read browsing history entries

Agent UI

  • render_ui Draw an interactive A2UI surface in the sidebar and wait for the click