Theseus
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| THESEUS_TRACE | No | Set to 1 to write a Playwright trace.zip; it holds the session's cookies | false |
| THESEUS_CDP_URL | No | Borrow the login from a running Chrome, e.g. http://127.0.0.1:9222; must be on this machine | |
| THESEUS_RUNS_DIR | No | Run output directory (default ~/.theseus/runs) | |
| THESEUS_MAX_TURNS | No | MCP session limit on calls (default 30) | 30 |
| THESEUS_NO_SANDBOX | No | Set to 1 to start Chromium without its sandbox, for a container that can't run it | false |
| THESEUS_WRITE_ALLOW | No | Comma-separated URL patterns of non-GET requests to send anyway, e.g. https://api.example.com/search | |
| THESEUS_ALLOW_WRITES | No | Set to 1 to let writes through (blocked by default) | false |
| THESEUS_BLOCK_WRITES | No | Set to 1 to keep writes blocked whatever else says otherwise; wins over THESEUS_ALLOW_WRITES and a profile's writes: live. Any value except an explicit off counts as on | false |
| THESEUS_PROFILES_DIR | No | Where site profiles are read from (default ~/.theseus/sites) | |
| THESEUS_RECORD_FIELDS | No | Comma-separated field names whose values captured_writes.jsonl may record; no other values are ever recorded | |
| THESEUS_STORAGE_STATE | No | Path to a saved Playwright storage-state file to launch with that login | |
| THESEUS_BROWSER_CHANNEL | No | Launch an installed browser (e.g. chrome) instead of Playwright's Chromium | |
| THESEUS_IDLE_TIMEOUT_SEC | No | Close an MCP session with no calls for this long, in seconds (default 900) | 900 |
| THESEUS_MAX_WALL_CLOCK_SEC | No | MCP session limit on browser time in seconds (default 900) | 900 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| session_startA | Open start_url in Theseus's own browser and start a session. success_criterion is required and fixed for the session: the text that will be visible when the goal is reached, with the exact text in quotes, e.g. "the page shows 'Order placed'". Navigation is then limited to the origin start_url lands on. read_only fakes every click, fill and submit. headed shows Theseus's browser window. |
| session_statusA | Show the session's progress, limits and whether it has ended. |
| session_endA | End the session: write summary.json, close Theseus's browser window and tabs, return the summary. |
| read_pageA | List the page's visible controls with indexes, plus headings, dialogs and errors. |
| click_indexB | Click the control with this index from the most recent read_page. |
| clickA | Click a control by its visible text or label. Prefer click_index. |
| fillC | Type value into the input whose label matches label. |
| submitA | Click the form's Save, Create, Apply or Submit button (refused if its name is a forbidden verb). |
| navigateA | Go to url (absolute, or relative to the current page). Must stay on the session's origin; three violations end the run. |
| wait_forA | Wait up to 8 s for text in quotes to appear (e.g. "'Order placed'"); with no quotes, wait for the page to settle. |
| inspect_errorB | Reveal validation errors on the page, optionally for one field or control. |
| screenshotA | Save a screenshot of the visible window and return its absolute path (open it to view). full_page=true takes the whole page, which on a long site is too tall to read. |
| noteB | Record an observation in the run trace. Doesn't touch the page. |
| assert_stateA | Check the page against the session's success criterion. A match ends the run as a success. |
| give_upA | End the run as failed, recording why. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 15 tools
Most tools target distinct actions (fill, submit, navigate, wait_for, screenshot, note, session_*), and inspect_error vs assert_state have clearly different roles. The main overlap is click vs click_index, which is mitigated by the description telling agents to prefer click_index.
All names are snake_case and readable, but conventions are mixed: bare verbs (fill, submit, navigate, click, note), verb_noun (read_page, click_index, assert_state, inspect_error, wait_for), and noun_verb (session_start, session_end, session_status). Predictable enough to follow, but not a single pattern.
Fifteen tools is at the upper bound but justified by a real browser-automation loop: session lifecycle, navigation, interaction, waiting, verification and telemetry. Only the click/click_index pair feels like redundancy rather than a distinct capability.
The session lifecycle and core act/observe/verify loop are covered end to end, so no dead ends on the happy path. However, form automation lacks dropdown/select handling, keyboard actions (Enter, Tab, Escape), scrolling, and navigation history, which are common needs on real pages.