Skip to content

Actions

Kelly Ferrone edited this page Sep 17, 2026 · 16 revisions

Actions

Every action is an MCP tool and an HTTP endpoint with the same parameters, and every read is an MCP resource and an HTTP endpoint. A test fails the build if one exists without the other. A client that cannot read resources reads the same URIs with read_resource.

Browser actions

Everything you can do to a page.

MCP Endpoint Does
open_session POST /browser Open this session's browser, or pick up the one it was using.
session://current GET /browser What this session is, and whether it holds a browser.
navigate POST /browser/navigate Go to a URL. Returns the URL and title the browser ended on.
interact POST /browser/interact/{action} A mouse action on an element: click, double_click, right_click, hover or scroll_to.
drag POST /browser/drag Drag an element onto another element (to), or by an offset in pixels (by_x, by_y); give one or the other. A range slider is by_x; a card into a column is to.
write POST /browser/write Type into an input, textarea or contenteditable, and read the value back so
press_key POST /browser/press-key Press a key or a combination, at an element (selector) or wherever focus already is.
extract POST /browser/extract Read an element's visible text and HTML.
assert POST /browser/assert Check the page with JavaScript that must return true; otherwise the call fails. Return a boolean, not the thing itself: return !!document.querySelector('#total').
outline POST /browser/outline Map the page: the elements worth acting on, each with a selector checked to match exactly one element, and whether it can be used now.
screenshot POST /browser/screenshot Capture a PNG of the viewport, of one element (selector), or of the whole
print POST /browser/print Print the page into the session's files, kept past the browser.
execute_script POST /browser/script Run JavaScript in the page and return what it returns.
frame POST /browser/frame Move into an iframe (switch, with a selector or an index), up one level (parent), or back to the page (default).
dialog POST /browser/dialog Answer a native alert, confirm or prompt: accept, dismiss, read (see the message without answering), or send_text (fill a prompt with text and accept it).
resize POST /browser/resize Resize the browser window.
upload_file POST /browser/upload Attach a file to a file input (selector). Give exactly one source:
end_browser DELETE /browser Quit the browser, keeping the session and its context.

Flows

A sequence of the actions above, saved under a name and run in one call. See Flows for what a flow document looks like.

MCP Endpoint Does
flow://flows GET /flows Every flow this session can run.
flow://flows/{name} GET /flows/{name} One saved flow, with its steps.
flow://schema GET /schemas/flow The shape of a flow document.
save_flow PUT /flows/{name} Create or replace a flow.
run_flow POST /flows/{name}/runs Run a saved flow.
delete_flow DELETE /flows/{name} Delete one of this session's flows.

Files

What a session has produced, and how to keep one past the browser that made it. See Files.

MCP Endpoint Does
session://files GET /files Every file this session has.
keep_file PUT /files/{name}/kept Keep one download beyond its browser.

Secrets

The secrets a caller may type into a field without ever seeing them. See Secrets.

MCP Endpoint Does
secret://secrets GET /secrets The secrets this caller may bind.

Every call names its session — an X-Session-Key header or ?session= on the URL. There is no session id anywhere; see Sessions.


Installing · Deployment · Administration

Clone this wiki locally