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 |
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 | {} |
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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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