Skip to main content
Glama
WhiteNightShadow

camoufox-reverse-mcp

instrumentation

Install instrumentation hooks on JavaScript VM-protected scripts, log tapped events, and reload pages to capture execution before page load. Supports AST or regex rewriting of member access and calls.

Instructions

JSVMP source-level instrumentation (v0.9.0 unified).

Replaces instrument_jsvmp_source / get_instrumentation_log / stop_instrumentation / reload_with_hooks.

Args: action: "install" — register route + AST/regex rewrite on matched scripts. Requires url_pattern. (was: instrument_jsvmp_source) "log" — fetch accumulated tap events from instrumented code. (was: get_instrumentation_log) "stop" — unregister instrumentation route. (was: stop_instrumentation) "reload" — reload page so persistent hooks fire before page JS. (was: reload_with_hooks) "status" — show active instrumentations and stats. (was: get_instrumentation_status) url_pattern: For "install"/"stop" — glob pattern matching VMP script URLs. mode: For "install" — "ast" (default) or "regex". tag: For "install"/"log" — group identifier. rewrite_member_access: For "install" — tap obj[key] reads. rewrite_calls: For "install" — tap fn(args) calls. max_rewrites: For "install" — hard cap on rewrites per file. fallback_on_error: For "install" — auto-fallback to regex if AST fails. ignore_csp: For "install" — skip CSP pre-flight check. clear_log: For "reload" — clear JSVMP logs before reload. wait_until: For "reload" — "load" / "domcontentloaded" / "networkidle". tag_filter: For "log" — filter by tag. type_filter: For "log" — "tap_get", "tap_call", "tap_method", "tap_call_err". key_filter: For "log" — substring match on property/method name. limit: For "log" — max entries to return. clear: For "log" — clear log after retrieval. filter_property_names: For "install" — only rewrite access to these property names (e.g. ['userAgent', 'platform', 'webdriver']). Dramatically reduces overhead for large files like webmssdk. filter_object_names: For "install" — only rewrite when base object matches (e.g. ['navigator', 'screen', 'document']). max_file_size: For "install" — files larger than this (bytes) trigger on_oversized behavior. Default 200KB. on_oversized: For "install" — "selective" (require filters), "skip", or "force" (full rewrite anyway). Default "selective".

Returns: dict with action-specific results.

IMPORTANT — timing for sync-loaded scripts (e.g. webmssdk): Route interception only catches requests made AFTER the route is registered. For scripts loaded via during page load, you MUST call instrumentation(action='install') BEFORE navigate(). Pattern: 1. launch_browser() 2. instrumentation(action='install', url_pattern='**/webmssdk*') 3. navigate("https://www.douyin.com/...") If called after navigate, use instrumentation(action='reload') to re-trigger page load with routes active.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
tagNovmp
modeNoast
clearNo
limitNo
actionYes
clear_logNo
ignore_cspNo
key_filterNo
tag_filterNo
wait_untilNoload
type_filterNo
url_patternNo
max_rewritesNo
on_oversizedNoselective
max_file_sizeNo
rewrite_callsNo
fallback_on_errorNo
filter_object_namesNo
filter_property_namesNo
rewrite_member_accessNo
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It details each action's behavior (registering routes, rewriting scripts, fetching logs) and important constraints (timing, tags). It does not explicitly mention side effects or destructive nature, but the context (instrumentation, rewrites) implies mutation. Slightly more explicit behavioral statements could push it to 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-organized with clear sections (Args, Returns, IMPORTANT) and uses bullet points for actions and parameters. Every sentence serves a purpose, including migration guidance (was: old_name). It front-loads the core purpose and parameter table, then adds critical timing notes. No redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 20 parameters, no output schema, and no annotations, the description is remarkably complete. It covers all actions, describes every parameter in detail, provides default values, explains when to use filters, and even includes a full workflow example. The only omission is a detailed return value structure, but 'dict with action-specific results' is acceptable given the complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description provides exhaustive parameter explanations, including default values, valid options (e.g., for action, mode, wait_until), and specific use cases (e.g., filter_property_names for reducing overhead). This fully compensates for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool is for JSVMP source-level instrumentation and unifies multiple actions (install, log, stop, reload, status). It distinguishes from sibling tools by focusing on a specific instrumentation domain, with a clear verb (instrumentation) and resource (JSVMP scripts).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use guidance, including a timing pattern requiring installation before navigate, with a step-by-step example. Explains each action's purpose and when to use alternatives (e.g., using reload after navigate). This is best-in-class for usage clarity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

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/WhiteNightShadow/camoufox-reverse-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server