> ## Documentation Index
> Fetch the complete documentation index at: https://subtext.fullstory.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Live Browser MCP Tools Reference for Subtext Verify

> Complete reference for Subtext Verify's live browser MCP tools — connection, navigation, interaction, network inspection, scripting, and emulation.

<Warning>
  These are **Verify beta features**, available to the closed beta cohort only. They may change or move out of the core MCP without notice.
</Warning>

The live browser tools give your agent full control over a cloud-hosted Chromium browser — navigating pages, interacting with elements, inspecting the network, running scripts, and emulating devices. Every tool operates on a named connection and, within that connection, a specific view (tab). Start with `live-connect` to open a connection, use the snapshot and interaction tools to do your work, and call `live-disconnect` when you're done.

<Note>
  UIDs used in all `live-act-*` interaction tools come from the component tree returned by `live-view-snapshot`. Always call `live-view-snapshot` first to get fresh UIDs before interacting with elements.
</Note>

***

### Connection & Views

These tools establish the browser session and manage open views (tabs) within it.

| Tool                 | Description                                             |
| -------------------- | ------------------------------------------------------- |
| `live-connect`       | Open a hosted browser connection and navigate to a URL. |
| `live-disconnect`    | Close the connection and free all browser resources.    |
| `live-view-list`     | List open views in the connection.                      |
| `live-view-select`   | Switch the current view.                                |
| `live-view-new`      | Open a new view and navigate to a URL.                  |
| `live-view-close`    | Close a view by ID.                                     |
| `live-view-navigate` | Navigate the current view to a URL.                     |
| `live-view-resize`   | Resize the viewport.                                    |

**`live-connect`** — Opens a new hosted browser connection and loads the given URL in the initial view. Returns the connection ID and an initial sightmap upload URL. Call this before any other `live-*` tool.

**`live-disconnect`** — Closes the connection, terminates the hosted browser process, and releases all associated cloud resources. Call this when your task is complete to avoid resource leaks.

**`live-view-list`** — Returns all currently open views (tabs) in the active connection, including their IDs and current URLs.

**`live-view-select`** — Switches the active view to the one matching the given view ID. Subsequent interaction tools operate on the newly selected view.

**`live-view-new`** — Opens a new tab in the current connection and navigates it to a URL. Returns the new view's ID.

**`live-view-close`** — Closes the view identified by the given ID. Use `live-view-list` to enumerate IDs beforehand.

**`live-view-navigate`** — Navigates the current view to a new URL without opening a new tab.

**`live-view-resize`** — Resizes the current view's viewport to the specified width and height in pixels.

***

### Snapshots & Inspection

These tools let you observe the state of a page — its element tree, visual appearance, CSS properties, and load readiness — before or after interactions.

| Tool                   | Description                                                          |
| ---------------------- | -------------------------------------------------------------------- |
| `live-view-snapshot`   | Component tree snapshot — element UIDs, no screenshot.               |
| `live-view-screenshot` | Visual screenshot of a view, optionally clipped to an element.       |
| `live-view-inspect`    | Inspect the view — CSS selectors, attributes, classes per component. |
| `live-act-wait-for`    | Wait for URL, selector visibility, or load state.                    |

**`live-view-snapshot`** — Returns the full component tree for the current view. Each node carries a unique UID, semantic component name (if a Sightmap is present), and element metadata. Use the UIDs as arguments to `live-act-*` tools.

**`live-view-screenshot`** — Captures a PNG screenshot of the current view. Pass an element UID to clip the screenshot to that element's bounding box.

**`live-view-inspect`** — Returns detailed CSS selectors, HTML attributes, and class names for every component in the view. Useful for building selectors or verifying styles.

**`live-act-wait-for`** — Blocks until a condition is met: a URL pattern match, a selector becoming visible, or the page reaching a given load state (e.g. `networkidle`). Use this after navigation or interactions that trigger async work.

***

### Interaction

These tools drive the browser — clicking, typing, dragging, uploading files, and handling dialogs. All element-targeted tools accept a UID from `live-view-snapshot`.

| Tool                | Description                                              |
| ------------------- | -------------------------------------------------------- |
| `live-act-click`    | Click a component by its UID from the tree.              |
| `live-act-hover`    | Hover over a component.                                  |
| `live-act-fill`     | Fill an input (or a batch of inputs).                    |
| `live-act-drag`     | Drag a component by a pixel offset.                      |
| `live-act-upload`   | Upload a file via a file input.                          |
| `live-act-keypress` | Press a keyboard key, optionally focused on a component. |
| `live-act-dialog`   | Accept or dismiss a pending dialog.                      |

**`live-act-click`** — Clicks the element identified by a UID. Supports left, right, and double-click variants.

**`live-act-hover`** — Moves the pointer over the element identified by a UID, triggering hover states and tooltips without clicking.

**`live-act-fill`** — Types a value into a text input identified by UID. Pass an array of `{uid, value}` objects to fill multiple inputs in a single call.

**`live-act-drag`** — Drags the element identified by a UID by a pixel offset in the x and y directions. Useful for sliders, drag-and-drop interfaces, and canvas interactions.

**`live-act-upload`** — Provides a file to a `<input type="file">` element identified by UID. The file content is supplied as base64.

**`live-act-keypress`** — Sends a keyboard event for a named key (e.g. `Enter`, `Tab`, `Escape`). Optionally scoped to an element by UID; otherwise dispatched to the focused element.

**`live-act-dialog`** — Accepts or dismisses the currently pending browser dialog (`alert`, `confirm`, `prompt`). Call this immediately after triggering the action that opens the dialog.

***

### Network & Console

These tools surface the HTTP traffic and JavaScript console output your browser session generates, giving you observability into what the page is doing behind the scenes.

| Tool            | Description                                 |
| --------------- | ------------------------------------------- |
| `live-net-list` | List captured network requests for a view.  |
| `live-net-get`  | Full details of a network request by index. |
| `live-log-list` | List console messages for a view.           |
| `live-log-get`  | Get a single console message by index.      |

**`live-net-list`** — Returns a summary list of all network requests captured for the current view since the connection opened, including URL, method, and status code.

**`live-net-get`** — Returns the complete details of a single network request by its index in the list — headers, request body, response body, timing, and status.

**`live-log-list`** — Returns all console messages (log, warn, error, info) recorded for the current view, in order.

**`live-log-get`** — Returns the full content of a single console message by its index, including any serialized arguments or stack traces.

***

### Scripting & Emulation

These tools let you run arbitrary JavaScript in the page and reconfigure the browser's device profile.

| Tool               | Description                               |
| ------------------ | ----------------------------------------- |
| `live-eval-script` | Evaluate JavaScript in the page context.  |
| `live-emulate`     | Emulate a device — viewport + user agent. |

**`live-eval-script`** — Executes a JavaScript expression or block in the current page's context and returns the serialized result. Use this to read DOM state, trigger functions, or set up test fixtures.

**`live-emulate`** — Sets the viewport dimensions and user-agent string to match a named device profile (e.g. `iPhone 14`, `Pixel 7`). Call this before navigating to ensure the page loads with the correct responsive breakpoint.

***

### Signals

Signals let your agent stay in sync with operator instructions and real-time comments during a live session.

| Tool          | Description                                                |
| ------------- | ---------------------------------------------------------- |
| `live-signal` | Poll the trace for operator state and new comment signals. |

**`live-signal`** — Polls the active trace for new operator messages, pause/resume signals, and comment notifications. Call this periodically in long-running automation loops to check whether a human operator has left instructions or requested a stop.

***

### Tunnel

The tunnel tools allocate a relay so the cloud-hosted browser can reach a server running on your local machine. `live-tunnel` runs on the hosted browser side; `tunnel-connect`, `tunnel-disconnect`, and `tunnel-status` come from the separate `subtext-tunnel` local MCP server.

| Tool                | Description                                                         |
| ------------------- | ------------------------------------------------------------------- |
| `live-tunnel`       | Allocate a connection and get the tunnel relay URL.                 |
| `tunnel-connect`    | Connect a reverse tunnel so the hosted browser can reach localhost. |
| `tunnel-disconnect` | Disconnect a specific tunnel, or all active tunnels.                |
| `tunnel-status`     | Report the status of all active tunnels.                            |

**`live-tunnel`** — Allocates a hosted browser connection and returns the tunnel relay URL. Use this URL as the target when navigating to a localhost dev server from the hosted browser.

**`tunnel-connect`** — Opens a reverse tunnel from your local machine to Subtext's relay so the cloud-hosted browser can reach your dev server. Pass your local server URL (e.g. `http://localhost:3000`). Provided by the `subtext-tunnel` local MCP server.

**`tunnel-disconnect`** — Closes a specific active tunnel by ID, or all active tunnels if no ID is given. Provided by the `subtext-tunnel` local MCP server.

**`tunnel-status`** — Returns the current status of all active tunnels — relay URLs, connection state, and local target URLs. Provided by the `subtext-tunnel` local MCP server.

<Tip>
  The hosted browser cannot reach your machine directly. Use the `subtext-tunnel` local MCP server to bridge the gap. Add it to your MCP config alongside your session-review server:

  ```json theme={null}
  {
    "mcpServers": {
      "subtext-tunnel": {
        "command": "npx",
        "args": ["-y", "@subtextdev/subtext-cli@latest"]
      }
    }
  }
  ```

  See [Tunnel](/docs/verify/tunnel) for the full setup guide and the [Skills page](/docs/verify/skills) for the `/subtext:tunnel` skill that automates tunnel setup.
</Tip>
