browser_set_storage
Deterministic auth/state seeding — set localStorage, sessionStorage, and cookies (or clear) in one call so a flow starts from a known logged-in state.
How to use it
Project documentation lists browser_set_storage for the Mochi MCP server. Add the server to your MCP client (Claude Desktop, Cursor, Windsurf and others), then check which tools your installed version makes available. Tool availability can depend on configuration and credentials. A server handshake does not verify this tool’s behavior. See the full listing for setup details.
FULL MOCHI LISTINGOther tools in Mochi (39)
Perform one action (click/type/navigate/presskey/clickat) and classify the result: WORKS / NO-OP / ERROR / NAVIGATES. A NO-OP (clickable but nothing changed) is a dead control = defect. Returns urlChanged, domChanged, networkDelta, consoleDelta.
Verify url-contains, url-equals, title-contains, element-exists, element-missing, text-contains, text-equals. Returns {ok, got}.
One-call health gate: ok=false if any console error/uncaught exception or any >=400/failed request happened since the page loaded (sinceNavigation default, or sinceMs, with ignoreUrlContains). Failed-request entries include .body.
Enumerate every actionable control on the page (scope:"all"\
Reset viewport overrides.
Click by selector (CDP). Pass intent to cache the selector for next time.
Click at pixel coords (CDP).
Close a specific session tab.
accepts sinceNavigation:true to scope to the
Device Mode via CDP. Presets + custom width/height/DPR/UA.
Compact visible links with text, href, selector ref, and box.
List session tabs + CDP attachment state.
Navigate primary tab, wait for load.
accepts sinceNavigation, sinceMs, and
Open new tab inside the session group.
Hash the live page assets (script/css/document) with sha256 + a pageHash. Confirm the live bundle hash == the built hash so you never test a stale cached deploy.
Remove a playbook + workflow + screenshots.
Return one playbook with meta + body sections + workflow JSON.
List playbooks under .continuum/playbooks/, filter by origin/tag/verifiable.
Score-match playbooks against a URL, intent, or task description.
Replay a playbook (with self-heal) using provided inputs; recursively executes composes/next chains; returns verdict + evidence.
Create/update a playbook (validates frontmatter and required sections).
Real keyboard event (CDP).
Post an OS notification asking the human to look (captcha, choice, or "done — come look"). Click focuses the window.
PNG/JPEG (viewport / fullPage / elementRef).
Absolute {x,y} or relative {deltaX,deltaY}.
Detach debugger, ungroup or close session tabs.
accepts heal:true to re-attach the debugger to
New tab group + primary tab. Pass newWindow:true to spawn a fresh window. Posts a click-to-focus notification instead of stealing focus.
ARIA tree with stable refs + pixel boxes. Defaults to compact, viewport-only, redacted, depth-limited, and 12KB capped.
Return one compact subtree from the stored snapshot by ref, text, or query path.
Search the stored snapshot by text/name/role/ref/tag and return tiny excerpts.
Compact visible text lines, optionally filtered by query. Use before snapshot for reading/searching content.
Focus + clear + insertText. Pass intent to cache.
Attach a file to a page target via a strategy chain: direct (DOM.setFileInputFiles) → intercept (file-chooser dialog) → drop (synthesized DataTransfer + DragEvent) → paste (synthesized ClipboardEvent). Bypasses the native OS file picker entirely. Target by selector, ref, trigger, or auto: { near }.
Stage a file into the per-project library at .continuum/uploads/. Accepts path, https url, dataUrl, or base64. Returns a stable stashId (sha256-based, idempotent) reusable across many uploads.
Sleep up to 60s.
Block until a matching network response arrives (urlGlob/urlContains, method, statusGte/statusLt, timeoutMs). Proves a write actually persisted instead of guessing from the UI.
Resize/move/maximize the actual window (only safe with newWindow).