{"name":"io.github.CapMonsterCloud/capmonster-mcp-patchright-captcha-solver","slug":"capmonstercloud-capmonster-mcp-patchright-captcha-solver","title":null,"description":"Browser automation MCP for solving captchas with CapMonster Cloud via Patchright.","url":"https://mcp.market/server/capmonstercloud-capmonster-mcp-patchright-captcha-solver","rating":null,"grade":"B","score":83,"certified":false,"status":"active","category":"scraping","tags":["scraping"],"presence":{"score":34,"stars":1,"forks":2,"downloads_week":456,"last_push_at":"2026-09-18T13:44:05.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/CapMonsterCloud/capmonster-mcp-patchright-captcha-solver","website":"https://capmonster.cloud/en/","version":"1.1.3","remotes":[],"packages":[{"registryType":"npm","identifier":"capmonster-mcp-patchright","version":"1.1.3","transport":{"type":"stdio"}}],"tools":[{"name":"browser_add_init_script","description":"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 BE","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_api_request","description":"Make an HTTP request reusing the browser session's cookies/storage (authenticated API calls without re-login). Returns status, headers, and body.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_click","description":"Click an element by CSS selector or aria ref from browser_snapshot.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_close","description":"Close the browser session.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_close_page","description":"Close a page/tab by pageId, or the active page if omitted.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_console_messages","description":"List captured console messages (log / warn / error etc.).","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_cookie_clear","description":"Clear all cookies in the current session.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_cookie_delete","description":"Delete cookies by name, optionally narrowed by domain/path.","write_action":true,"price_micros":0,"input_schema":null},{"name":"browser_cookie_get","description":"Get a single cookie by name. Returns null if not present.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_cookie_list","description":"List cookies in the current session, optionally filtered by domain and/or path.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_cookie_set","description":"Set a cookie with optional flags. Provide url, or domain (path defaults to /). If neither given, the active page's origin is used.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_drag","description":"Drag an element from source to target by CSS selector or aria ref.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_evaluate","description":"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 fra","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_file_upload","description":"Upload files to a <input type=file> by CSS selector or aria ref.","write_action":true,"price_micros":0,"input_schema":null},{"name":"browser_fill","description":"Fill an input by CSS selector or aria ref from browser_snapshot.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_fill_form","description":"Fill multiple form fields at once. Each field needs selector or ref, and value.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_find","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_fingerprint_check","description":"Collect browser fingerprint diagnostics from the active page.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_get_visible_html","description":"Get page HTML, optionally scoped to a selector. Strips script/style/svg by default for token efficiency.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_get_visible_text","description":"Get the visible text (document.body.innerText) of the active page. Lighter than a full aria snapshot.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_handle_dialog","description":"Accept or dismiss a JavaScript dialog (alert / confirm / prompt).","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_hide_highlight","description":"Remove highlight overlays. Pass label/selector/ref to remove a specific one, or omit all to clear every highlight.","write_action":true,"price_micros":0,"input_schema":null},{"name":"browser_highlight","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_hover","description":"Hover an element by CSS selector or aria ref from browser_snapshot.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_iframe_click","description":"Shorthand for clicking inside an iframe. (Most tools now accept a frameSelector directly — prefer browser_click with frameSelector.)","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_iframe_fill","description":"Shorthand for filling inside an iframe. (Most tools now accept a frameSelector directly — prefer browser_fill with frameSelector.)","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_localstorage_clear","description":"Clear all localStorage for the active page's origin.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_localstorage_delete","description":"Delete a localStorage item by key.","write_action":true,"price_micros":0,"input_schema":null},{"name":"browser_localstorage_get","description":"Get a localStorage item by key. Returns null if absent.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_localstorage_list","description":"List all localStorage key-value pairs for the active page's origin.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_localstorage_set","description":"Set a localStorage item on the active page's origin.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_navigate","description":"Navigate the active page to a URL.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_navigate_back","description":"Navigate back in browser history.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_network_request","description":"Get details for a single network request by stable id from browser_network_requests. Legacy zero-based index is also accepted.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_network_requests","description":"List captured network requests. Set activeOnly=true for in-flight only.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_network_state_set","description":"Set network state: pass offline=true to simulate offline, offline=false to restore connectivity.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_new_page","description":"Open a new page/tab and make it active. Optionally navigate to a URL.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_pages","description":"List open pages/tabs with ids, active state, URL, and title.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_passkey_create","description":"Generate or import a virtual passkey. To import, provide all four key-material fields. Private keys are omitted unless includePrivateKey=true.","write_action":true,"price_micros":0,"input_schema":null},{"name":"browser_passkey_delete","description":"Delete one virtual passkey by its base64url credential id.","write_action":true,"price_micros":0,"input_schema":null},{"name":"browser_passkey_install","description":"Install Patchright's virtual WebAuthn authenticator in the current browser context. Call before a page first uses navigator.credentials.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_passkey_list","description":"List virtual passkeys, optionally filtered by rpId or credential id. Private keys are omitted unless includePrivateKey=true.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_press_key","description":"Press a keyboard key, optionally focused on a selector or aria ref first.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_resize","description":"Resize the active page viewport.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_route_block","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_route_clear","description":"Remove all active block/mock routes.","write_action":true,"price_micros":0,"input_schema":null},{"name":"browser_route_mock","description":"Mock matching requests with a canned response (fulfill). Useful for stubbing APIs or bypassing endpoints.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_run_code_unsafe","description":"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).","write_action":true,"price_micros":0,"input_schema":null},{"name":"browser_save_blob","description":"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 ","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_save_pdf","description":"Render the active page to PDF via CDP (works in headed/stealth mode). Saves to path, or returns base64 if path omitted.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_select_option","description":"Select options from a <select> element by CSS selector or aria ref.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_sessionstorage_clear","description":"Clear all sessionStorage for the active page's origin.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_sessionstorage_delete","description":"Delete a sessionStorage item by key.","write_action":true,"price_micros":0,"input_schema":null},{"name":"browser_sessionstorage_get","description":"Get a sessionStorage item by key. Returns null if absent.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_sessionstorage_list","description":"List all sessionStorage key-value pairs for the active page's origin.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_sessionstorage_set","description":"Set a sessionStorage item on the active page's origin.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_snapshot","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_start","description":"Start a browser session. Defaults to patchright chromium headed Chrome with a persistent profile.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_status","description":"Return current browser status.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_storage_load","description":"Restore a session from a storageState (cookies + localStorage). Provide a file path or an inline state object. Note: localStorage restore navigates to each origin.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_storage_save","description":"Export current session (cookies + localStorage) as a Playwright storageState. Saves to path, or returns the state JSON if path omitted.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_switch_page","description":"Switch the active page/tab by pageId from browser_pages.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_take_screenshot","description":"Take a screenshot. Returns base64 if path is omitted.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_type","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_video_save","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_wait_for","description":"Wait for time or for selector/ref state. If no selector/ref, waits timeout milliseconds.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":83,"grade":"B","scanned_at":"2026-09-19T19:31:08.589Z","report":{"scannerVersion":"0.1.5","scannedAt":"2026-09-19T19:31:08.887Z","components":{"code":{"score":20,"max":25,"notes":["15 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 1 days ago"]},"identity":{"score":7,"max":10,"notes":["registry namespace matches repository owner"]}},"findings":[{"id":"exec.eval","severity":"medium","component":"code","title":"eval / new Function used","evidence":"dist/tools/handlers.js: … const result = await evaluate(new Function(`return (${parsed.expression})`), undefi…"}],"inputs":{"packages":[{"registryType":"npm","identifier":"capmonster-mcp-patchright","version":"1.1.3","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":4,"publishedAt":"2026-09-18T13:47:23.045Z","repositoryUrl":"git+https://github.com/CapMonsterCloud/capmonster-mcp-patchright.git","weeklyDownloads":456}],"repo":{"found":true,"owner":"CapMonsterCloud","repo":"capmonster-mcp-patchright-captcha-solver","archived":false,"pushedAt":"2026-09-18T13:44:05Z","stars":1,"forks":2,"openIssues":0,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/279800871?v=4","ownerCreatedAt":"2026-04-27T17:53:07Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/279800871?v=4&s=128","source":"registry","width":128,"height":128},"presence":{"stars":1,"forks":2,"downloadsWeek":456,"license":"MIT","lastPushAt":"2026-09-18T13:44:05.000Z","score":34}}}},"grade_history":[],"reviews":[]}