camoufox-versatile-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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 | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| launch_browserA | Launch the Camoufox anti-detection browser. The trio of |
| close_browserA | Close the Camoufox browser and release all resources. |
| navigateA | Navigate to a URL, with optional hook pre-injection and captcha challenge auto-solve. Args:
url: Target URL.
wait_until: "load", "domcontentloaded", or "networkidle".
pre_inject_hooks: Hook preset names to register before navigation.
collect_response_chain: Record responses for final_status resolution.
clear_network_capture: Clear stale network buffer before navigating.
auto_solve_challenge: After the page loads, run auto_solve_captcha if a
captcha challenge is detected. Built-in alternative to the
project's test.py flow.
captcha_type: Captcha provider (default "cloudflare"). Future-proof:
new providers supported by Returns: dict with url, title, initial_status, final_status, redirect_chain, hooks_injected, reloaded, challenge (detection + solve result when auto_solve_challenge=True), warnings. |
| reloadA | Reload the current page, preserving any init scripts. |
| take_screenshotC | Take a screenshot of the current page or a specific element. |
| take_snapshotB | Get the accessibility tree of the current page (token-efficient). |
| clickC | Click on a page element. |
| type_textC | Type text into an input field with realistic keystroke delays. |
| wait_forC | Wait for an element to appear or a network request matching a URL pattern. |
| get_page_infoA | Get current page URL, title, and viewport size. |
| reset_browser_stateC | Reset MCP-side browser residual state without closing the browser. |
| scriptsD | Script inspection. |
| search_codeC | Search keyword in loaded scripts. |
| evaluate_jsC | Execute an arbitrary JavaScript expression in the page context and return the result. |
| hook_functionD | Hook or trace a function. |
| inject_hook_presetC | Inject a pre-built hook template for common reverse engineering tasks. |
| remove_hooksC | Remove installed hooks and restore original objects. |
| get_console_logsC | Get console output collected from the page. |
| network_captureD | Unified network capture control. |
| list_network_requestsC | List captured network requests with optional filters. |
| get_network_requestC | Get full details of a specific captured network request. |
| get_request_initiatorC | Get the JS call stack that initiated a network request. |
| intercept_requestD | Intercept network requests matching a pattern. |
| cookiesD | Cookie management. |
| get_storageC | Get the contents of localStorage or sessionStorage. |
| export_stateC | Export the complete browser state to a JSON file. |
| import_stateC | Import browser state from a JSON file by creating a new context. |
| hook_jsvmp_interpreterC | Install a JSVMP runtime probe. |
| compare_envC | Collect browser environment fingerprint data for comparison with Node.js/jsdom. |
| instrumentationD | – |
| check_environmentB | One-stop self-check of MCP environment, dependencies, and browser state. |
| verify_signer_offlineA | Verify a signing function against known samples (offline, no browser needed). Args: signer_code: JavaScript code that exports a signing function. Must be a function expression or arrow function: e.g. "(s) => mySign(s)" samples: List of samples, each with expected request/response pairs: [{"id": "r1", "input": {...}, "expected": {"X-Bogus": "..."}}] Returns: dict with overall passed/failed, per-sample results, and first mismatch. |
| trace_property_accessC | Engine-level DOM property access tracing (JSVMP-undetectable). |
| list_trace_filesC | List all trace files on disk. |
| query_trace_fileC | Query a specific historical trace file. |
| auto_solve_captchaA | Auto-detect and solve a captcha challenge on the current page. Wraps Args:
captcha_type: Captcha provider, e.g. "cloudflare". The library is
future-proof; new providers (hcaptcha, recaptcha, ...) will be
supported as Returns: dict with detected, challenge_type_used, solved, attempts, verified, final_url, error (if any). |
| detect_captchaA | Detect whether a captcha challenge is currently shown. Lightweight probe: returns detection flags without attempting to solve anything. Useful when you want to decide whether to call auto_solve_captcha. Args: captcha_type: Captcha provider to probe, e.g. "cloudflare". Returns: dict with provider-specific detection flags and the current URL. For "cloudflare" today: {turnstile: bool, interstitial: bool}. Other providers will report under their own keys. |
| detect_vmpA | Detect what kind of JavaScript VM Protection the page is running. Returns a structured report with This is purely read-only: no hooks are installed, no scripts are rewritten. |
| trace_vmp_for_signA | Install a signature-safe tap and record what the VMP reads. Args: properties: list of property names to watch on navigator/screen/history/ location prototypes. If empty, uses a default high-signal set. trigger_js: optional JS expression to evaluate AFTER the tap is installed, to actually invoke the VMP (e.g. "sign(payload)"). max_entries: cap on the recorded log. track_calls: also instrument Date.now / etc. clear_log: clear any previous tap log first. wait_ms: extra delay after trigger_js before reading the log. Returns: dict with the tap summary, count of recorded reads, and a condensed view of the VMP's reads (prop -> latest value preview). |
| get_tap_logC | Read what was recorded by trace_vmp_for_sign. |
| disassemble_wasmA | Disassemble a WebAssembly binary to text (wat) + summarize imports/exports. Args:
wasm_source:
- if source_kind=='base64': base64-encoded wasm bytes
- if source_kind=='hex': hex-encoded wasm bytes
- if source_kind=='url': a URL to fetch the wasm from (uses the
active page so cookies / headers apply)
source_kind: see above.
generate_wat: if True, run wabt to produce WAT. Falls back to exports
+ imports only when wabt is unavailable.
auto_install_wabt: if True and wabt is missing, attempt Returns: dict with imports, exports, optional wat text, and entry-function candidates (for replay_vmp_offline). |
| capture_worker_jsA | Patch the page's Worker constructor and record every Worker created. Use this when VMP bytecode is delivered via a Web Worker (e.g. the page
does Returns: dict with workers[] (id, url, source_preview if blob:), events[]. |
| capture_ws_payloadsA | Patch the page's WebSocket constructor and record every connection's send/recv. Use this when VMP fetches its bytecode over WebSocket (e.g. an onmessage pushes an opaque blob that is then assembled into a Worker or eval'd). Args: duration_ms: how long to keep the patch alive after install. url_filter: if set, only record connections whose URL contains this string. max_events: ring buffer cap. Returns: dict with connections[] (url, sent[], received[]), events[]. |
| auto_suggest_missing_propsA | Given a trace log (or just an error string), guess which props a Node-side VMP replay is missing. This combines two signals:
Args: trace_log: the entries returned by trace_vmp_for_sign/get_tap_log (optional). If absent, only the curated list is returned. failed_replay_error: the error string from a previous failed replay_vmp_offline call (e.g. "ReferenceError: navigator is not defined"). Used to extract additional hints. supplied_env: dict of props you've already fed to replay. We won't suggest these. Returns:
dict with |
| replay_vmp_offlineA | Run captured VMP code in headless Node and call the entry function. Useful for verifying you've correctly extracted the signing algorithm: call the VMP's signing function with the inputs a real request would use, and check that the output matches what the browser actually sent. Args: vmp_code: The JavaScript source that defines the VMP / sign function. entry: The name of the function exported on global that we should call. input: A dict to pass to the entry function. Will be JSON-serialized and re-parsed inside the Node sandbox. timeout_ms: VM timeout. JS that runs longer triggers a V8 timeout error. expected_sign: optional reference sign captured from the browser. When set and auto_diff is True, the response includes a structured diff (match / common_prefix_len / first_diff_idx). auto_diff: if True and expected_sign is set, compute a structured diff. supplied_env: optional dict merged into the sandbox before the VMP code runs. Use this to feed navigator.userAgent, screen.width, Date.now(), document.cookie etc. (see auto_suggest_missing_props). Returns: dict with status, output, elapsed_ms, optional diff, and optional suggestion hint when outputs don't match. |
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/usernamexiaozhang/camoufox-versatile-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server