To type into a field: {"type":"click","selector":"input#search"} then {"type":"write","text":"query"}, optionally {"type":"press","key":"Enter"} — 'write' requires a prior click to focus the field
Wait for elements with {"type":"wait","selector":"#el"} or for time with {"type":"wait","milliseconds":N}
Capture mid-sequence state with a {"type":"screenshot",...} or {"type":"scrape"} action; {"type":"executeJavascript","script":"..."} runs custom JS
Final page state lands in the requested top-level formats; per-action captures appear under data.actions (e.g. data.actions.screenshots[])
Known gotchas
'write' only works on a focused input — always click the target field immediately before it
Actions run sequentially and their render/wait time counts against the request timeout (default 60000 ms) — raise timeout for long chains
Concurrent-browser limits (as low as 2-5 on Free/Hobby plans) are often the real bottleneck for action-heavy scraping, not request rate
Per-action screenshots/PDFs come back as URLs under data.actions, not inline in data.markdown
Give your agent this knowledge — and 17,900+ more routes
One MCP install gives any agent live access to the full route map across 6,000+ domains, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp
Need this verified for your stack — or a route we don't have yet?