# io.github.CapMonsterCloud/capmonster-mcp-patchright-captcha-solver (npm · capmonster-mcp-patchright)

Browser automation MCP for solving captchas with CapMonster Cloud via Patchright.

- Trust score: 68/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-20

## Components

- npm · `capmonster-mcp-patchright`: 68/100 (this document), [markdown](https://verifymcp.io/servers/capmonstercloud-capmonster-mcp-patchright-captcha-solver/capmonster-mcp-patchright.md), [page](https://verifymcp.io/servers/capmonstercloud-capmonster-mcp-patchright-captcha-solver/capmonster-mcp-patchright)

## Channel facts

- Registry: `npm`
- Package: `capmonster-mcp-patchright`
- Version: `1.1.3`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-20.

- **Supply Chain Security**: 98/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - 32 of 98 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 1 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 81/100
  - AI-judged instruction clarity (excellent).
  - Tool/resource definitions use about 4820 tokens (~73/item across 66 items; 66 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 86/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 59% of tool parameters carry a description.
- **Tool Safety**: 75/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - 0 of 7 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "browser_run_code_unsafe" implies "execute" and declares no destructiveHint at all, which the MCP spec reads as destructive by default.
  - An AI judge read all 66 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### How do I install the io.github.CapMonsterCloud/capmonster-mcp-patchright-captcha… server?

io.github.CapMonsterCloud/capmonster-mcp-patchright-captcha… runs locally as an npm package, launched with npx -y capmonster-mcp-patchright. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add capmonstercloud-capmonster-mcp-patchright-captch -- npx -y capmonster-mcp-patchright
```

### Cursor

```json
{
  "mcpServers": {
    "capmonstercloud-capmonster-mcp-patchright-captch": {
      "command": "npx",
      "args": [
        "-y",
        "capmonster-mcp-patchright"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "capmonstercloud-capmonster-mcp-patchright-captch": {
      "command": "npx",
      "args": [
        "-y",
        "capmonster-mcp-patchright"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add capmonstercloud-capmonster-mcp-patchright-captch -- npx -y capmonster-mcp-patchright
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "capmonstercloud-capmonster-mcp-patchright-captch": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "capmonster-mcp-patchright"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add capmonstercloud-capmonster-mcp-patchright-captch --command npx --arg -y --arg capmonster-mcp-patchright
```

### Hermes

```yaml
mcp_servers:
  capmonstercloud-capmonster-mcp-patchright-captch:
    command: "npx"
    args: ["-y", "capmonster-mcp-patchright"]
```

### Netclaw

```json
{
  "McpServers": {
    "capmonstercloud-capmonster-mcp-patchright-captch": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "capmonster-mcp-patchright"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add capmonstercloud-capmonster-mcp-patchright-captch -t stdio -c npx -a -y capmonster-mcp-patchright
```

### Other

```json
{
  "mcpServers": {
    "capmonstercloud-capmonster-mcp-patchright-captch": {
      "command": "npx",
      "args": [
        "-y",
        "capmonster-mcp-patchright"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-19 (score 68, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-09-18 (score 53)

First indexed and scored.

## MCP tools (66)

### `browser_start` (~286 tokens)

Start a browser session. Defaults to patchright chromium headed Chrome with a persistent profile.

Input parameters:

- `browser` (string)
- `cdpEndpoint` (string): Existing Chrome remote debugging endpoint, e.g. http://127.0.0.1:9222
- `channel` (string)
- `colorScheme` (string)
- `device` (string): Emulate a device from the Playwright registry, e.g. "iPhone 15", "Pixel 7". Sets viewport, UA, scale factor, and touch.
- `geolocation` (object): Spoof geolocation. Grants the geolocation permission automatically.
- `headless` (boolean)
- `height` (number)
- `locale` (string)
- `mobile` (boolean): Enable mobile emulation (touch + mobile hints) without a full device descriptor.
- `proxy` (object): Proxy for this session (persistent launch only). Keep IP country consistent with locale/timezone/geo to avoid bot detection.
- `recordVideo`: Record a video of the whole session. Pass true for defaults, or an object to customize. Saved as .webm; files finalize on browser_close. Not available over cdpEndpoint.
- `timezoneId` (string)
- `userAgent` (string)
- `userDataDir` (string)
- `width` (number)

### `browser_status` (~13 tokens)

Return current browser status.

### `browser_navigate` (~39 tokens)

Navigate the active page to a URL.

Input parameters:

- `timeout` (number)
- `url` (string, required)
- `waitUntil` (string)

### `browser_new_page` (~33 tokens)

Open a new page/tab and make it active. Optionally navigate to a URL.

Input parameters:

- `url` (string)

### `browser_pages` (~24 tokens)

List open pages/tabs with ids, active state, URL, and title.

### `browser_switch_page` (~29 tokens)

Switch the active page/tab by pageId from browser_pages.

Input parameters:

- `pageId` (string, required)

### `browser_close_page` (~32 tokens)

Close a page/tab by pageId, or the active page if omitted.

Input parameters:

- `pageId` (string)

### `browser_snapshot` (~86 tokens)

Return a distilled AI-oriented aria snapshot (verbose /url lines dropped and data: URLs collapsed to save tokens). Use [ref=eN] values with browser_click/fill/type/hover/press/wait_for.

Input parameters:

- `includeUrls` (boolean): Keep /url lines for links. Default false for token efficiency.
- `maxLength` (number): Truncate snapshot to this many chars.

### `browser_find` (~130 tokens)

Search the current page's aria snapshot for text or a regex. Returns matching nodes with their [ref] and a few lines of surrounding context — cheaper than a full browser_snapshot when you only need to locate an element.

Input parameters:

- `context` (number): Lines of surrounding context per match. Default 2.
- `ignoreCase` (boolean): Case-insensitive match. Default true.
- `maxMatches` (number): Max matches to return. Default 20.
- `query` (string, required): Text substring, or a regex source when regex=true.
- `regex` (boolean): Treat query as a regular expression.

### `browser_take_screenshot` (~61 tokens)

Take a screenshot. Returns base64 if path is omitted.

Input parameters:

- `fullPage` (boolean)
- `path` (string)
- `scale` (string): css = smaller, device-consistent CSS pixels; device = full device-pixel resolution.

### `browser_click` (~94 tokens)

Click an element by CSS selector or aria ref from browser_snapshot.

Input parameters:

- `frameSelector` (string): Optional CSS selector for an iframe. When set, selector/ref resolve inside that frame.
- `ref` (string): aria-ref from browser_snapshot, for example e12. Provide exactly one of selector or ref.
- `selector` (string): CSS selector. Provide exactly one of selector or ref.
- `timeout` (number)

### `browser_fill` (~101 tokens)

Fill an input by CSS selector or aria ref from browser_snapshot.

Input parameters:

- `frameSelector` (string): Optional CSS selector for an iframe. When set, selector/ref resolve inside that frame.
- `ref` (string): aria-ref from browser_snapshot, for example e12. Provide exactly one of selector or ref.
- `selector` (string): CSS selector. Provide exactly one of selector or ref.
- `text` (string, required)
- `timeout` (number)

### `browser_type` (~177 tokens)

Type text into an element (CSS selector or aria ref) with human-like input: real per-key events, real Shift keyDown/up for capitals & symbols, variable dwell and inter-key gaps. Verifies the result against the request for input/textarea and errors on mismatch.

Input parameters:

- `delay` (number): Deprecated/ignored; timing is randomized.
- `frameSelector` (string): Optional CSS selector for an iframe. When set, selector/ref resolve inside that frame.
- `ref` (string): aria-ref from browser_snapshot, for example e12. Provide exactly one of selector or ref.
- `selector` (string): CSS selector. Provide exactly one of selector or ref.
- `text` (string, required)
- `timeout` (number)
- `verify` (boolean): Verify typed value matches request (default true) for input/textarea.

### `browser_hover` (~94 tokens)

Hover an element by CSS selector or aria ref from browser_snapshot.

Input parameters:

- `frameSelector` (string): Optional CSS selector for an iframe. When set, selector/ref resolve inside that frame.
- `ref` (string): aria-ref from browser_snapshot, for example e12. Provide exactly one of selector or ref.
- `selector` (string): CSS selector. Provide exactly one of selector or ref.
- `timeout` (number)

### `browser_press_key` (~70 tokens)

Press a keyboard key, optionally focused on a selector or aria ref first.

Input parameters:

- `frameSelector` (string): Optional iframe CSS selector; selector/ref resolve inside it.
- `key` (string, required)
- `ref` (string)
- `selector` (string)
- `timeout` (number)

### `browser_wait_for` (~73 tokens)

Wait for time or for selector/ref state. If no selector/ref, waits timeout milliseconds.

Input parameters:

- `frameSelector` (string): Optional iframe CSS selector; selector/ref resolve inside it.
- `ref` (string)
- `selector` (string)
- `state` (string)
- `timeout` (number)

### `browser_evaluate` (~254 tokens)

Evaluate JavaScript in the active page. Pass 'function' for a function body, 'expression' for a plain expression, or 'script' (deprecated). By default JS runs in an isolated stealth world (DOM is shared, but the page's own window globals are NOT visible). Set world:'main' to run in the page's real world — required to read or call globals the page defined (e.g. a page-registered callback). Pass frameSelector to run inside a specific iframe (including cross-origin ones, e.g. a captcha widget hosted on a different domain) instead of the top-level page — same CSS selector browser_click/browser_fill/browser_type already accept.

Input parameters:

- `expression` (string)
- `frameSelector` (string): Run inside this iframe (CSS selector) instead of the top-level page — reaches cross-origin iframe content that plain JS (element.contentDocument) cannot, the same way browser_click/browser_fill/brows…
- `function` (string)
- `script` (string)
- `world` (string): Execution world. 'isolated' (default) = stealth, page globals hidden; 'main' = page's real world, page globals visible/callable.

### `browser_fingerprint_check` (~19 tokens)

Collect browser fingerprint diagnostics from the active page.

### `browser_navigate_back` (~16 tokens)

Navigate back in browser history.

### `browser_select_option` (~110 tokens)

Select options from a <select> element by CSS selector or aria ref.

Input parameters:

- `frameSelector` (string): Optional CSS selector for an iframe. When set, selector/ref resolve inside that frame.
- `ref` (string): aria-ref from browser_snapshot, for example e12. Provide exactly one of selector or ref.
- `selector` (string): CSS selector. Provide exactly one of selector or ref.
- `timeout` (number)
- `values` (array, required): Option values or labels to select.

### `browser_handle_dialog` (~96 tokens)

Accept or dismiss a JavaScript dialog (alert / confirm / prompt).

Input parameters:

- `accept` (boolean, required): true = accept, false = dismiss
- `promptText` (string): Text to enter for prompt dialogs
- `timeout` (number): Milliseconds to wait when wait=true
- `wait` (boolean): When true, wait for and handle the next dialog before returning. Default false arms a one-shot handler for the next action.

### `browser_file_upload` (~110 tokens)

Upload files to a <input type=file> by CSS selector or aria ref.

Input parameters:

- `frameSelector` (string): Optional CSS selector for an iframe. When set, selector/ref resolve inside that frame.
- `paths` (array, required): Local file paths to upload.
- `ref` (string): aria-ref from browser_snapshot, for example e12. Provide exactly one of selector or ref.
- `selector` (string): CSS selector. Provide exactly one of selector or ref.
- `timeout` (number)

### `browser_network_requests` (~31 tokens)

List captured network requests. Set activeOnly=true for in-flight only.

Input parameters:

- `activeOnly` (boolean)

### `browser_network_request` (~68 tokens)

Get details for a single network request by stable id from browser_network_requests. Legacy zero-based index is also accepted.

Input parameters:

- `details` (boolean): Include response body preview when true
- `id` (string)
- `index` (number): Legacy zero-based index into the retained request list

### `browser_console_messages` (~21 tokens)

List captured console messages (log / warn / error etc.).

### `browser_resize` (~38 tokens)

Resize the active page viewport.

Input parameters:

- `height` (number, required): Viewport height in pixels
- `width` (number, required): Viewport width in pixels

### `browser_drag` (~59 tokens)

Drag an element from source to target by CSS selector or aria ref.

Input parameters:

- `source` (object): { selector|ref, frameSelector? }
- `target` (object): { selector|ref, frameSelector? }
- `timeout` (number)

### `browser_fill_form` (~40 tokens)

Fill multiple form fields at once. Each field needs selector or ref, and value.

Input parameters:

- `fields` (array, required)
- `timeout` (number)

### `browser_run_code_unsafe` (~107 tokens)

Execute arbitrary JavaScript in page context. Prefer browser_evaluate when possible. Runs in the isolated stealth world by default; set world:'main' to run in the page's real world (page-defined window globals visible/callable).

Input parameters:

- `args` (array)
- `script` (string, required)
- `world` (string): Execution world. 'isolated' (default) = stealth; 'main' = page's real world, page globals visible/callable.

### `browser_add_init_script` (~179 tokens)

Register JavaScript that runs before any page script, on every navigation (Playwright's page.addInitScript — always in the page's main world). Unlike browser_evaluate, this is proactive: it wins the race against a site's own inline <script> (e.g. Cloudflare/Turnstile checks that run synchronously on document parse), which a reactive evaluate call issued over the MCP connection cannot. Call this BEFORE browser_navigate to the target URL — it has no effect on a page already loaded, only on the page it's called on and future navigations of that same page. Scoped to the current page only.

Input parameters:

- `function` (string): Function body/expression to install as the init script, e.g. '() => { window.foo = 1; }'.
- `script` (string): Deprecated alias for function.

### `browser_network_state_set` (~34 tokens)

Set network state: pass offline=true to simulate offline, offline=false to restore connectivity.

Input parameters:

- `offline` (boolean, required)

### `browser_api_request` (~110 tokens)

Make an HTTP request reusing the browser session's cookies/storage (authenticated API calls without re-login). Returns status, headers, and body.

Input parameters:

- `data`: Request body: a string, or an object (sent as JSON).
- `headers` (object): Request headers as key/value strings.
- `maxBytes` (number): Truncate response body to this many chars. Default 100000.
- `method` (string)
- `timeout` (number)
- `url` (string, required)

### `browser_get_visible_text` (~52 tokens)

Get the visible text (document.body.innerText) of the active page. Lighter than a full aria snapshot.

Input parameters:

- `maxLength` (number): Truncate to this many chars. Default 100000.

### `browser_get_visible_html` (~86 tokens)

Get page HTML, optionally scoped to a selector. Strips script/style/svg by default for token efficiency.

Input parameters:

- `maxLength` (number): Truncate to this many chars. Default 100000.
- `removeScripts` (boolean): Remove script/style/noscript/svg. Default true.
- `selector` (string): Limit to this element's outerHTML. Default whole document.

### `browser_iframe_click` (~72 tokens)

Shorthand for clicking inside an iframe. (Most tools now accept a frameSelector directly — prefer browser_click with frameSelector.)

Input parameters:

- `frameSelector` (string, required): CSS selector for the iframe element.
- `selector` (string, required): CSS selector for the target element inside the iframe.
- `timeout` (number)

### `browser_iframe_fill` (~78 tokens)

Shorthand for filling inside an iframe. (Most tools now accept a frameSelector directly — prefer browser_fill with frameSelector.)

Input parameters:

- `frameSelector` (string, required): CSS selector for the iframe element.
- `selector` (string, required): CSS selector for the input inside the iframe.
- `timeout` (number)
- `value` (string, required)

### `browser_route_block` (~85 tokens)

Block requests by resource type and/or URL pattern (e.g. block images/fonts/media to speed up loads and shrink fingerprint surface). Applies to all pages in the context.

Input parameters:

- `resourceTypes` (array): Resource types to abort. If omitted, blocks every request matching urlPattern.
- `urlPattern` (string): Glob/URL pattern to match. Default **/* (all).

### `browser_route_mock` (~80 tokens)

Mock matching requests with a canned response (fulfill). Useful for stubbing APIs or bypassing endpoints.

Input parameters:

- `body` (string): Response body.
- `contentType` (string): Content-Type, default text/plain.
- `status` (number): HTTP status, default 200.
- `urlPattern` (string, required): Glob/URL pattern to match.

### `browser_route_clear` (~16 tokens)

Remove all active block/mock routes.

### `browser_storage_save` (~57 tokens)

Export current session (cookies + localStorage) as a Playwright storageState. Saves to path, or returns the state JSON if path omitted.

Input parameters:

- `path` (string): Output JSON file path. If omitted, returns the state inline.

### `browser_storage_load` (~73 tokens)

Restore a session from a storageState (cookies + localStorage). Provide a file path or an inline state object. Note: localStorage restore navigates to each origin.

Input parameters:

- `path` (string): Path to a storageState JSON file.
- `state` (object): Inline storageState object ({ cookies, origins }).

### `browser_cookie_list` (~52 tokens)

List cookies in the current session, optionally filtered by domain and/or path.

Input parameters:

- `domain` (string): Filter cookies by domain (substring match).
- `path` (string): Filter cookies by path (exact match).

### `browser_cookie_get` (~33 tokens)

Get a single cookie by name. Returns null if not present.

Input parameters:

- `name` (string, required): Cookie name to get.

### `browser_cookie_set` (~140 tokens)

Set a cookie with optional flags. Provide url, or domain (path defaults to /). If neither given, the active page's origin is used.

Input parameters:

- `domain` (string): Cookie domain, e.g. .example.com
- `expires` (number): Expiry as Unix timestamp (seconds). Session cookie if omitted.
- `httpOnly` (boolean)
- `name` (string, required)
- `path` (string): Cookie path, default /.
- `sameSite` (string)
- `secure` (boolean)
- `url` (string): URL the cookie applies to. Alternative to domain/path.
- `value` (string, required)

### `browser_cookie_delete` (~45 tokens)

Delete cookies by name, optionally narrowed by domain/path.

Input parameters:

- `domain` (string)
- `name` (string, required): Cookie name to delete.
- `path` (string)

### `browser_cookie_clear` (~17 tokens)

Clear all cookies in the current session.

### `browser_localstorage_list` (~24 tokens)

List all localStorage key-value pairs for the active page's origin.

### `browser_localstorage_get` (~30 tokens)

Get a localStorage item by key. Returns null if absent.

Input parameters:

- `key` (string, required)

### `browser_localstorage_set` (~36 tokens)

Set a localStorage item on the active page's origin.

Input parameters:

- `key` (string, required)
- `value` (string, required)

### `browser_localstorage_delete` (~25 tokens)

Delete a localStorage item by key.

Input parameters:

- `key` (string, required)

### `browser_localstorage_clear` (~21 tokens)

Clear all localStorage for the active page's origin.

### `browser_sessionstorage_list` (~24 tokens)

List all sessionStorage key-value pairs for the active page's origin.

### `browser_sessionstorage_get` (~30 tokens)

Get a sessionStorage item by key. Returns null if absent.

Input parameters:

- `key` (string, required)

### `browser_sessionstorage_set` (~36 tokens)

Set a sessionStorage item on the active page's origin.

Input parameters:

- `key` (string, required)
- `value` (string, required)

### `browser_sessionstorage_delete` (~25 tokens)

Delete a sessionStorage item by key.

Input parameters:

- `key` (string, required)

### `browser_sessionstorage_clear` (~21 tokens)

Clear all sessionStorage for the active page's origin.

### `browser_passkey_install` (~35 tokens)

Install Patchright's virtual WebAuthn authenticator in the current browser context. Call before a page first uses navigator.credentials.

### `browser_passkey_create` (~132 tokens)

Generate or import a virtual passkey. To import, provide all four key-material fields. Private keys are omitted unless includePrivateKey=true.

Input parameters:

- `id` (string): Base64url credential id.
- `includePrivateKey` (boolean): Return private key material. Default false.
- `privateKey` (string): Base64url PKCS#8 DER private key.
- `publicKey` (string): Base64url SPKI DER public key.
- `rpId` (string, required): Relying-party id, usually the site's effective domain.
- `userHandle` (string): Base64url user handle.

### `browser_passkey_list` (~70 tokens)

List virtual passkeys, optionally filtered by rpId or credential id. Private keys are omitted unless includePrivateKey=true.

Input parameters:

- `id` (string): Base64url credential id.
- `includePrivateKey` (boolean): Return private key material. Default false.
- `rpId` (string)

### `browser_passkey_delete` (~30 tokens)

Delete one virtual passkey by its base64url credential id.

Input parameters:

- `id` (string, required)

### `browser_video_save` (~78 tokens)

Direct the active page's session recording to a specific output path (requires the session to have been started with recordVideo). The .webm finalizes when the page or browser closes. Without a path, returns the pending video location.

Input parameters:

- `path` (string): Target .webm path. If omitted, returns the auto-generated pending path.

### `browser_highlight` (~170 tokens)

Draw a persistent highlight overlay around an element (by CSS selector or aria ref). Useful for screenshots and video recording to show what the agent is focusing on. Does not affect page behavior.

Input parameters:

- `frameSelector` (string): Optional CSS selector for an iframe. When set, selector/ref resolve inside that frame.
- `label` (string): Optional text label shown above the highlight; also used as the key for browser_hide_highlight.
- `ref` (string): aria-ref from browser_snapshot, for example e12. Provide exactly one of selector or ref.
- `selector` (string): CSS selector. Provide exactly one of selector or ref.
- `style` (string): Optional extra inline CSS for the overlay, e.g. 'outline: 3px dashed lime'.
- `timeout` (number)

### `browser_hide_highlight` (~77 tokens)

Remove highlight overlays. Pass label/selector/ref to remove a specific one, or omit all to clear every highlight.

Input parameters:

- `label` (string): Label/key used when the highlight was added.
- `ref` (string): aria ref used when the highlight was added.
- `selector` (string): Selector used when the highlight was added.

### `browser_save_blob` (~326 tokens)

Evaluate JavaScript in the page and write the result straight to a file on disk — the value itself never passes through this tool's response. Use this instead of browser_evaluate whenever you need to get a large/opaque blob (base64 image(s), a full page's HTML, a big JSON dump) out of the live page and into a request body: reading it via browser_evaluate and then re-typing/pasting it into another tool call's arguments (e.g. create_task's imagesBase64/htmlPageBase64) risks silently corrupting it — a dropped character or an unclosed quote partway through a multi-KB string merges what should be several array elements into one, with no clear error. Pass 'function' or 'expression' (same as browser_evaluate); pass encoding:'base64' when the value is a base64 string (a data:...;base64, prefix is stripped automatically) to write raw decoded bytes, or omit it to write the value as UTF-8 text (non-strings are JSON-stringified).

Input parameters:

- `encoding` (string): 'base64' decodes the evaluated string into raw bytes before writing. 'text' (default) writes UTF-8 (JSON-stringifying non-string results).
- `expression` (string)
- `function` (string)
- `path` (string, required): Output file path.
- `world` (string): Execution world. 'isolated' (default) = stealth, page globals hidden; 'main' = page's real world, page globals visible/callable.

### `browser_save_pdf` (~97 tokens)

Render the active page to PDF via CDP (works in headed/stealth mode). Saves to path, or returns base64 if path omitted.

Input parameters:

- `format` (string)
- `landscape` (boolean)
- `path` (string): Output file path. If omitted, returns base64.
- `printBackground` (boolean): Include background graphics. Default true.
- `scale` (number): Render scale, default 1.

### `browser_close` (~13 tokens)

Close the browser session.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/capmonstercloud-capmonster-mcp-patchright-captcha-solver/capmonster-mcp-patchright#diagnostics

## Score history

- 2026-09-20: 68
- 2026-09-19: 68
- 2026-09-18: 53

## Common questions

### What is the io.github.CapMonsterCloud/capmonster-mcp-patchright-captcha… server?

io.github.CapMonsterCloud/capmonster-mcp-patchright-captcha… is listed in the public MCP registry as io.github.CapMonsterCloud/capmonster-mcp-patchright-captcha…. Browser automation MCP for solving captchas with CapMonster Cloud via Patchright. This page covers its npm package (capmonster-mcp-patchright).

### Is the io.github.CapMonsterCloud/capmonster-mcp-patchright-captcha… server safe to use?

io.github.CapMonsterCloud/capmonster-mcp-patchright-captcha… scores 68 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the io.github.CapMonsterCloud/capmonster-mcp-patchright-captcha… server expose?

io.github.CapMonsterCloud/capmonster-mcp-patchright-captcha… exposes 66 tools: browser_start, browser_status, browser_navigate, browser_new_page, browser_pages, and 61 more. Their descriptions and schemas cost roughly 4,820 tokens of context every time the server is loaded.

### Is the io.github.CapMonsterCloud/capmonster-mcp-patchright-captcha… server still maintained?

io.github.CapMonsterCloud/capmonster-mcp-patchright-captcha… is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the io.github.CapMonsterCloud/capmonster-mcp-patchright-captcha… server under?

io.github.CapMonsterCloud/capmonster-mcp-patchright-captcha… declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- npm package: https://www.npmjs.com/package/capmonster-mcp-patchright
- Socket report: https://socket.dev/npm/package/capmonster-mcp-patchright
- Repository: https://github.com/CapMonsterCloud/capmonster-mcp-patchright-captcha-solver
- Website: https://capmonster.cloud/en/
- Changelog RSS feed: https://verifymcp.io/servers/capmonstercloud-capmonster-mcp-patchright-captcha-solver/capmonster-mcp-patchright.xml
- Changelog JSON feed: https://verifymcp.io/servers/capmonstercloud-capmonster-mcp-patchright-captcha-solver/capmonster-mcp-patchright.json
- HTML version of this page: https://verifymcp.io/servers/capmonstercloud-capmonster-mcp-patchright-captcha-solver/capmonster-mcp-patchright
