Mochi
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SUPER_TESTER_WS_PORT | No | WS port the extension connects to. | 9009 |
| SUPER_TESTER_DATA_DIR | No | Override where selector cache and workflows are stored. | <project>/.continuum/ |
| SUPER_TESTER_AUTO_LAUNCH | No | Set false to disable Chrome auto-launch. | true |
| SUPER_TESTER_CHROME_PATH | No | Override Chrome binary path. | platform-detected |
| SUPER_TESTER_PROFILE_DIR | No | Dedicated --user-data-dir. | ~/.super-tester/super-tester-profile |
| SUPER_TESTER_PROJECT_DIR | No | Where to start looking for a project root for per-project data dir. | process.cwd() |
| SUPER_TESTER_EXTENSION_PATH | No | If set, Chrome launches with --load-extension=<path>. | unset |
| SUPER_TESTER_EXTENSION_WAIT_MS | No | How long to wait for the extension to connect on cold start. | 20000 |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| browser_session_startA | Start a new browser session. Creates a Chrome tab group with an initial tab; all subsequent operations are scoped to that group. Pass newWindow=true to spawn a fresh Chrome window so window-resize won't disturb the user's other tabs. By default the new window is brought to OS foreground once (so the user sees automation has started) — subsequent browser_navigate calls do NOT steal focus (default changed in 0.4.1). Pass bringToFront:false to start fully in the background. Idempotent: ends a previous session first. |
| browser_session_endA | End the current session. Detaches debugger, ungroups tabs (default) or closes them. |
| browser_navigateA | Navigate the active session tab to a URL and wait for load. The tab is always made active within its Chrome window (prevents SPA throttling), but by default does NOT raise the Chrome window to OS foreground — automation no longer steals keyboard focus from whatever you're working on. Pass bringToFront:true to explicitly bring the window forward (useful when you want to watch). |
| browser_open_tabC | Open a new tab inside the session's tab group. |
| browser_list_tabsC | List tabs in the current session group. |
| browser_close_tabB | Close a specific session tab (cannot close the primary tab). |
| browser_snapshotA | Capture an ARIA-flavored accessibility tree with stable refs and pixel boxes. Compact by default: viewport-only, redacted, depth-limited, and capped to 12KB. Use refs for browser_click/browser_type. Pass mode='full' only when you intentionally need the uncapped page tree. |
| browser_textA | Return compact visible text lines from the page. Prefer this before browser_snapshot when you need to read/search page content without flooding context. |
| browser_linksA | Return compact visible links from the page with text, href, and best-effort selector refs. Useful for navigation choices without a full snapshot. |
| browser_snapshot_queryA | Search the latest stored browser_snapshot tree by text/name/role/ref/tag and return tiny matching excerpts plus paths. Use this to drill into a compact snapshot instead of requesting a full page tree. |
| browser_snapshot_nodeB | Return a compact subtree from the latest stored browser_snapshot by ref, text, or path from browser_snapshot_query. Use for targeted drilldown. |
| browser_clickA | Click an element by CSS selector via real CDP mouse events. Pass |
| browser_click_atA | Click at exact CSS pixel coordinates (viewport-relative). Useful with screenshots when no good selector exists. |
| browser_typeB | Focus + clear + insertText. Optional |
| browser_press_keyC | Dispatch a real keyboard event via CDP. |
| browser_scrollA | Scroll the active session tab. Pass {x,y} for absolute or {deltaX,deltaY} for relative. |
| browser_go_backD | History back. |
| browser_go_forwardC | History forward. |
| browser_waitC | Sleep up to 60 seconds. |
| browser_screenshotB | PNG/JPEG screenshot of the session tab (CDP-based; works whether the tab is foreground or background). Modes: viewport (default), fullPage, elementRef. |
| browser_window_resizeC | Resize/move/maximize the session's Chrome window (affects whole window). |
| browser_emulate_viewportB | Programmatic Device Mode via CDP (viewport + DPR + mobile/UA). Preset or width/height. |
| browser_clear_emulationC | Clear viewport / UA / touch emulation overrides. |
| browser_assertA | Assert a condition is true on the page. Returns {ok, got}. Kinds: url-contains, url-equals, title-contains, element-exists, element-missing, text-contains, text-equals (text kinds need a target selector; element kinds too). |
| browser_session_healthA | Diagnostic snapshot of the bridge + active session: bridge mode, extension connectivity, current URL/origin, in-memory trace length, server uptime, MCP client count. Use when something feels stuck before reaching for browser_session_end. |
| browser_evaluateA | Execute JavaScript in the active tab via CDP Runtime.evaluate. Returns a serialized value (or {ok:false,error} on exception). Useful for shadow-DOM traversal, reading window state, or programmatic clicks when extensions intercept the synthetic mouse events. The expression is run in the page context as a real user gesture. |
| browser_console_messagesA | Recent browser console + uncaught exceptions for the active tab. Capture starts when the session attaches CDP (eagerly on session_start). Returns the last N messages, optionally filtered by level or timestamp. Pass clear=true to drain. |
| browser_network_requestsA | Recent XHR / fetch / document / asset requests for the active tab. Returns method, URL, status, mime, duration, success/failure. Filter by URL substring, method, status range, or failedOnly. Body capture is opt-in via includeRequestHeaders / includeResponseHeaders. |
| browser_recall_selectorA | Ask the memory if there's a known selector for this intent on the current origin. Returns null if unknown. Useful BEFORE browser_snapshot to skip discovery. |
| browser_forget_selectorC | Drop a cached selector (origin defaults to current). |
| browser_list_selectorsC | List cached selectors. Pass |
| browser_workflow_saveA | Persist the current session's auto-traced actions as a named workflow for this origin. The trace is built from successful click/type/navigate/etc. calls since session_start. Overwrites if (origin, name) exists. |
| browser_workflow_listB | List saved workflows. Pass |
| browser_workflow_getC | Get the steps of a named workflow. |
| browser_workflow_deleteC | Delete a named workflow. |
| browser_workflow_runA | Replay a saved workflow. Returns {status, stepsTotal, stepsPassed, results:[per-step envelope]}. Steps with cached selectors run first; on selector miss, falls back to role+name self-healing and updates the cache. Stops at first failure unless continueOnError=true. |
| browser_workflow_exportC | Export a workflow as portable JSON (commit to your repo to share). |
| browser_workflow_importA | Import a workflow from JSON (the shape returned by browser_workflow_export). |
| browser_run_historyB | Last N runs of a workflow (status, pass/fail counts, timings). |
| browser_upload_stageA | Stage a file (image/video/document) into the project's content-addressed upload library at |
| browser_upload_fileA | Attach a file to a target on the page. Bypasses the native OS file picker via a strategy chain (direct DOM.setFileInputFiles → file-chooser intercept → drag-drop synthesis → paste synthesis). Source can be a stashId from browser_upload_stage OR inline (path/url/dataUrl/base64). Target can be a CSS selector, accessibility ref, visible trigger element, or auto-detected from a nearby anchor. |
| browser_playbook_listA | List per-feature playbooks. Filter by origin, feature slug, tag, or verifiable. Returns compact metadata only — call browser_playbook_get for the full body. |
| browser_playbook_getA | Return one playbook with full meta, body sections, and the underlying workflow JSON. |
| browser_playbook_saveA | Create or update a playbook. Validates frontmatter and required sections. Use browser_playbook_propose_update for trace-driven authoring. |
| browser_playbook_deleteC | Delete a playbook (markdown, workflow JSON, and screenshots). |
| browser_playbook_matchB | Find playbooks matching a URL, intent, or task description. Returns top scored matches above threshold. |
| browser_playbook_runA | Replay a playbook (with self-heal) using the provided inputs. Recursively executes composes/next chains. Returns a verdict + evidence. |
| browser_playbook_propose_updateA | Given a successful trace, create or update the matching playbook. Inputs and steps are inferred from the trace; selectors are tracked via the existing selector cache. |
| browser_playbook_secret_checkA | Validate that all |
| browser_playbook_seed_from_codebaseA | Static-analyze the project's frontend (Next.js App/Pages Router, Vite/CRA) and emit draft playbooks per route + form. Drafts have playbook_version=0 and verifiable=false until you run + bless them. |
| browser_playbook_diff_acceptB | Bless a run's per-step screenshots as the new visual reference for a playbook. Updates visual_refs[] hashes and bumps playbook_version. |
| browser_playbook_exportB | Export one or more playbooks (and their screenshots) to a single JSON bundle file. Useful for sharing across projects or teams. |
| browser_playbook_importB | Import a playbook bundle (local file, inline JSON, or https URL). Optionally overwrite existing playbooks or rewrite their origin (e.g., staging → production). |
| browser_playbook_dashboardB | Generate a self-contained HTML dashboard from the playbook library. Pass open:true to also navigate to it (requires an active browser session). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/DevZonayed/Mochi'
If you have feedback or need assistance with the MCP directory API, please join our Discord server