Tool reference
Every tool call costs 1 credit except reflex_auth (free). Reflex is designed so a whole task fits in 2-3 calls. Final tool names and schemas are owned by the MCP server; this page tracks them.
| Tool | What it does | Typical use |
|---|---|---|
reflex_open | Navigate and return a distilled snapshot with stable element refs | First look at any page |
reflex_act | Run a batch of steps (click, fill, press, select, scroll, wait...) with expect guards checked inside the batch; stops at first failure with a forensic report | The whole task, one call |
reflex_read | Delta since last look, or "(page unchanged)" | Check what changed |
reflex_extract | Full table/list data from a ref (large output goes to a file) | Scraping a folded table |
reflex_check | Visual audit: overlap, contrast, clipped text, broken images | QA passes |
reflex_shot | Screenshot (page or region), returned as an image plus file path | Visual confirmation |
reflex_tab | List, switch to, or close tabs | Popups, multi-tab flows |
reflex_flow | Flow operations via its action enum (save, run, list, state_save): save this session as a replayable flow, replay deterministically with zero model tokens, list flows, save auth state | Logins, nightly checks |
reflex_auth | Sign in, sign out, or check auth status. action "login" opens your browser and saves a key locally (free, unmetered) | First-time setup |
Step types and expect guards
Each step in a reflex_act batch is one object. Action steps: goto, click, dblclick, hover, focus, fill, type, press, select, check, uncheck, scroll, wait, shot, eval. Assertion guards: expect.visible, expect.hidden, expect.text, expect.url_contains, expect.value. Put expect guards between actions to verify as you go.
A target is a ref from a snapshot (like a3f2) or a semantic name (button label, input label, placeholder, or id). Values may use the {{env:VAR}} pattern to pull secrets from the server environment, so credentials never appear in the model's context.
Worked example: login and verify
// One look, then the whole login-and-verify flow in a single batch.
reflex_open { "url": "https://app.example.com/login" }
reflex_act {
"steps": [
{ "fill": ["Email", "{{env:APP_EMAIL}}"] },
{ "fill": ["Password", "{{env:APP_PASSWORD}}"] },
{ "click": "Sign in" },
{ "wait": { "url_contains": "/dashboard" } },
{ "expect": { "visible": "Orders" } },
{ "expect": { "text": "Welcome back" } }
]
}