browser_act
Do one or more steps in the browser, in plain English or as exact actions.
Runs a list of steps on the session's browser page, in order, and stops at the first one that fails. A step is a sentence in plain English, such as "click the Sign in link", or an exact action such as {"action": "click", "selector": "text=Sign in"}. Use it to do several things in one call, or when saying what to click is easier than finding its selector. A plain-English step is carried out by a model, like a step of an agent run. A step that gives something back (evaluate, extract, elements or tabs) is followed by what it returned.
Inputs
| Name | Type | Default | Allowed values | Description |
|---|---|---|---|---|
sessionIdrequired | string | – | – | The session's id, from session_create. |
actionsrequired | array of strings or objects | – | – | The steps, 1 to 100, run in this order. Each is a plain-English sentence (up to 2,000 characters), or an action object with an action field, for example {"action": "goto", "url": "https://example.com"} or {"action": "hover", "selector": "text=Products"}. The objects are the actions of the API's Run browser actions call. |
This tool works in a session with a browser. On a shell-only session (created with browser: false) it answers browser_disabled. See the three kinds of session.
sessionId is the id that session_create returned. The server keeps no default session. If that session is stopped, this tool resumes it first, as it was (a resume starts a machine again, and billing with it).
Example call
This is what an MCP client sends. You do not write it yourself: ask the model in plain words and it calls the tool.
{ "name": "browser_act", "arguments": { "sessionId": "6c1f3c9e-1d2a-4f67-9b0e-1b2c3d4e5f60", "actions": [ { "action": "goto", "url": "https://example.com" }, "click the More information link" ] }}What it returns
One line per step, starting with the step's number and saying what happened. For a plain-English step, it is the model's own description of the action it chose. After the line of a step that returns something (evaluate, extract, elements, tabs), what it returned. A step that fails ends the list with its error, and the steps after it do not run.
1. Opened https://example.com/ (HTTP 200)2. Clicked the "More information..." linkWhen a call fails, the result is marked as an error. Its text starts with the API’s error code, such as unauthorized or session_not_running, followed by its message.
Annotations
The server tells every client what this tool does to the world, so a client can decide what to ask you about before it runs.
| Annotation | Value |
|---|---|
title | Do steps in the browser |
readOnlyHint | false |
destructiveHint | false |
openWorldHint | true |
Good to know
- A plain-English step needs a plan that includes plain-English steps. It uses a model, so it is billed like a step of an agent run and counts toward your plan's monthly spend cap. A step given as an action uses no model.
- Hovering, scrolling, dragging, double and right clicks, and key presses are actions too. The list of actions is in the API reference under Run browser actions, and in the guide to mouse and keyboard actions.
- Coordinates are CSS pixels of the viewport, from its top-left corner.
- Text in a step is sent to the model client like any other tool input. Do not put passwords in a step.
- An app connected with a Boxline sign-in cannot use saved credentials: an action that names one (
typewithcredential, orlogin) is refused withoauth_credentials_refused, and so is a plain-English step in a session whose shell holds credentials.
The same thing with the API
| Endpoint | Reference |
|---|---|
POST /v1/sessions/{id}/browser/actions | Run browser actions |
These docs describe a beta API. Endpoints, fields and SDK methods may change before general availability; breaking changes will be listed in the changelog.