camoufox-jsreverser-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LLM_API_KEY | No | API key for the chosen LLM provider. | |
| LLM_BASE_URL | No | Base URL for openai-compatible provider; optional for others. | |
| LLM_PROVIDER | No | LLM provider: 'openai', 'anthropic', or 'openai-compatible'. Leave empty to disable LLM tools. | |
| CAMOUFOX_PATH | No | Path to Camoufox binary. Default: /Applications/Camoufox.app/Contents/MacOS/camoufox (macOS) | |
| GECKODRIVER_PATH | No | Path to geckodriver binary. Default: /usr/local/bin/geckodriver. Apple Silicon: /opt/homebrew/bin/geckodriver | |
| LLM_DEFAULT_MODEL | No | Default model ID for LLM tools. |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| check_browser_healthA | Verify Firefox is connected and BiDi reports ready. |
| list_pagesB | List browsing contexts (tabs and iframes) currently open in Firefox. |
| new_pageC | Open a new browsing context (tab). |
| select_pageB | Set the active browsing context for subsequent tool calls. |
| navigate_pageC | Navigate the current context to a URL, or perform reload / back / forward. |
| list_framesA | List frames (top + iframes) under the active page as a flat array. |
| select_frameB | Set the active frame (iframe) context for subsequent tool calls. Pass empty string to clear. |
| take_screenshotC | Take a screenshot of the active page as base64 PNG. |
| get_performance_metricsA | Get W3C performance metrics from the active page (navigation timing + paint). M3 adds engine-level metrics behind the same tool. |
| list_scriptsA | List script resources loaded on the active page (URL + size). Does not include inline blocks; M3 RDP version will. |
| get_script_sourceA | Get the source of a script by URL. Fetches via the page (BiDi limitation; CORS may block cross-origin). Cached. |
| find_in_scriptA | Find string or regex pattern in a single cached script. Use get_script_source first to populate the cache. |
| search_in_scriptsA | Search a string or regex across ALL cached scripts. Populate the cache with get_script_source first. |
| search_in_sourcesA | Alias of search_in_scripts. M3 RDP version differentiates by including dynamically-evaluated sources too. |
| create_hookB | Create a hook definition. Use inject_hook to attach it to the page or workers. |
| inject_hookC | Inject a created hook into the page or worker(s). target: "page" | "worker:" | "all-workers" (default "page"). |
| get_hook_dataB | Read collected samples for a hook. Optionally limit count and filter by timestamp. |
| list_hooksA | List all registered hooks with their injection status and sample count. |
| remove_hookC | Remove a hook and its preload script registration. |
| hook_functionB | Create and inject a hook in one call. Convenience wrapper around create_hook + inject_hook. |
| unhook_functionC | Alias for remove_hook (kept for compatibility with the original CDP project naming). |
| trace_functionA | Trace a function: hook with capture preset [args, return, stack]. Convenience wrapper for call-chain debugging. |
| list_network_requestsA | List network requests collected since session start. Filter by URL substring, method, or response presence. |
| get_network_requestA | Get full details of a single network request by ID. Optionally fetch its body via networkObserver.getData. |
| get_request_initiatorB | Get the initiator info for a request. Returns BiDi initiator + (when M3 initiatorTracer is wired) normalized {type, stack[{scriptUrl,line,column,functionName?}]}. |
| break_on_xhrB | Install a hook that issues |
| remove_xhr_breakpointA | Remove an XHR/fetch breakpoint registered by break_on_xhr. |
| get_storageA | Read cookies, localStorage, sessionStorage, and IndexedDB names for the active page. |
| save_session_stateB | Snapshot cookies + localStorage + sessionStorage of all known window realms into an in-memory snapshot. |
| restore_session_stateC | Restore a previously saved snapshot back into the browser (cookies + localStorage + sessionStorage). |
| dump_session_stateB | Export a named snapshot as a JSON string (for writing to disk). |
| load_session_stateC | Load a snapshot from a JSON string (previously produced by dump_session_state). |
| list_session_statesA | List all named session snapshots in memory. |
| delete_session_stateB | Delete a named session snapshot from memory. |
| get_dom_structureA | Get a flattened summary of the DOM tree (up to depth 4, 20 children per node). |
| query_domC | CSS selector query against the active page. Returns shared node references. |
| find_clickable_elementsB | Find all clickable elements (links, buttons, role=button, onclick, submit inputs) on the active page. |
| click_elementC | Click a DOM element identified by its sharedId. |
| type_textC | Type text into a DOM element identified by its sharedId. |
| wait_for_elementC | Wait for a CSS selector to match an element on the active page. |
| list_console_messagesC | Return console log entries from the active session. Optionally limit and filter by level. |
| get_console_messageA | Get a single console entry by index. |
| evaluate_scriptC | Evaluate a JS expression in a window realm of the active (or specified) context. |
| monitor_eventsC | Start a monitor for RDP resource types (console-message, error-message, network-event, source, document-event, etc.). |
| stop_monitorA | Stop a monitor previously started by monitor_events. |
| list_websocket_connectionsC | List active WebSocket connections detected on the page. |
| get_websocket_messageC | Get a single frame by wsid + frameIndex. |
| get_websocket_messagesC | Get multiple frames for a wsid with optional filters. |
| analyze_websocket_messagesC | Cluster frames by byte-signature heuristic. v1 local-only; no LLM. |
| list_workersA | List workers (dedicated, shared, service) visible on the active page. M3 RDP version adds offline worker detection. |
| select_workerA | Set the active worker realm. Pass empty string to clear. Used as default target by hook tools. |
| set_breakpointA | Set a breakpoint by source URL + line (+ optional column). columnTolerance > 0 enables multi-hit auto-resume until the paused column falls within ± tolerance of the requested column. |
| set_breakpoint_on_textA | Set a breakpoint by searching for a text string in cached sources (+ optional sourceUrl filter). columnTolerance > 0 enables multi-hit auto-resume. |
| remove_breakpointB | Remove an existing breakpoint by its bpId. |
| list_breakpointsA | List all currently registered breakpoints. |
| pauseA | Pause script execution in the debugger thread. |
| resumeA | Resume script execution after a pause. |
| step_overC | Step over the current statement (skips into function calls). |
| step_intoC | Step into the current function call. |
| step_outA | Step out of the current function, resuming until the caller. |
| get_paused_infoA | Get information about the current paused state (callframe, location, why). Fails if not paused. |
| evaluate_on_callframeA | Evaluate a JavaScript expression in the context of the current paused callframe. Throws if not paused. |
| inspect_objectC | Inspect an RDP object grip: preview + prototype + own properties (+ optional internal slots). |
| set_javascript_enabledA | Enable or disable JavaScript execution for a browsing context. Per-context scope via BiDi emulation.setScriptingEnabled — does not affect other tabs. |
| set_csp_enabledA | Enable or disable CSP enforcement for a browsing context. Per-context scope via BiDi browsingContext.setBypassCSP — when enabled=false, bypass is set so inline injections succeed. |
| inject_stealthC | Apply a stealth preset via BiDi preload. Default: firefox-default. |
| inject_stealth_hookA | Render a stealth-hardened wrap (Function.toString masking + channel-emitting Proxy) over one or more dotted global paths, optionally with performance.now/Date.now timing neutralisation, then install via BiDi preload. Main world only — use inject_stealth_to_workers for worker realms. |
| inject_stealth_to_workersA | Push a stealth preset (default firefox-default) into every dedicated/shared worker realm via post-start eval. With watch:true (default) subscribes to new-worker events for the rest of the session. |
| list_stealth_featuresB | List the stealth features the capability knows about. |
| list_stealth_presetsB | List the stealth presets the capability knows about. |
| inject_preload_scriptB | Inject arbitrary preload JavaScript via BiDi script.addPreloadScript. Source runs before page scripts. |
| set_user_agentC | Override the User-Agent string for a browsing context via BiDi emulation.setUserAgentOverride. |
| understand_codeB | Use an LLM to explain what a JS snippet does. Returns LlmNotConfigured cleanly when no provider is set. |
| summarize_codeC | Use an LLM to produce a bullet-list summary of a JS snippet. Returns LlmNotConfigured when no provider is set. |
| deobfuscate_codeB | Apply local AST transforms (constant fold / string array decrypt / dead-code / control-flow hint) to deobfuscate a JS snippet. |
| detect_cryptoB | Run static crypto-algorithm signature rules (AES/RC4/MD5/SHA*/Base64/HMAC/RSA/SM*) against inline source or a cached script. |
| analyze_targetC | Summarize cached scripts: crypto signature hits + sensitive API usage. Filter by URL substring. |
| risk_panelB | Aggregate risk signals across cached scripts: crypto, exfil, fingerprint, storage writes, dynamic eval. Returns weighted score. |
| collect_codeC | Fetch and cache the source of every script URL on the active page. If urls/urlSubstring given, only those are collected. |
| export_rebuild_bundleC | Bundle cached scripts + hook samples + network samples + env probes into artifacts/tasks//. |
| diff_env_requirementsA | Diff two pip-style requirement files. Returns added / removed / changed / unchanged buckets plus counts. |
| record_reverse_evidenceC | Append a reverse-engineering evidence record to artifacts/tasks//runtime-evidence.jsonl. |
| export_session_reportA | Render a Markdown summary of the current session (scripts / requests / hooks / evidence) into artifacts/tasks//report.md. |
| collection_diffB | Diff two keyed collections (scripts / requests / hooks). Items with the same key but different hash become "changed". Used by evidence comparisons. |
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/wukaka/camoufox-jsreverser-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server