-
Notifications
You must be signed in to change notification settings - Fork 0
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.
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. |
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. |
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. |
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.
The action pages are generated from openapi.yaml, which is itself generated from the live MCP tool schemas — so they describe the server that shipped, not the one someone remembered. Prose belongs in wiki-notes/<tool>.md in the repo.
selenium-flow · MIT
Start here
Guides
Lifecycle
Going places
Doing things
Getting things out