Model Context Protocol (MCP) server backed by CloakBrowser stealth Chromium. Drop-in replacement for @playwright/mcp with source-level fingerprint patches, humanized inputs, and persistent profiles. 80 tools across navigation, interaction, page state, network, storage, vision, PDF, testing, devtools, and CloakBrowser-exclusive stealth/profile management.
22 tools with mixed quality. Naming is verb-forward and clear (browser_*, cloak_*), but parameter descriptions are severely incomplete. Most tools lack descriptions for individual parameters, only 3-4 params per tool have meaningful descriptions; the rest show 'null' or are undescribed. Output schemas are not documented. Error handling is minimal (mostly textOutput with no recovery guidance). Tool descriptions themselves are adequate (50-150 chars), but the parameter-level documentation is a critical gap that prevents LLMs from understanding valid inputs and constraints.
Remove highlight from a previously highlighted element, or all of them.
Persistently outline an element so a human reviewer can see what the agent picked.
Resume page execution if paused via debugger; statement or DevTools breakpoint.
Begin a Playwright trace recording. Stop with browser_stop_tracing to write the .zip.
Begin a video recording. Stop with browser_stop_video. Note: video must be configured at context creation; for ephemeral sessions, the next launched tab is recorded.
Stop tracing and write the .zip trace to the path passed in browser_start_tracing.
Parameter descriptions are null or missing for ~70% of parameters across all tools. E.g., browser_highlight.element, browser_highlight.style, browser_start_video.size, cloak_set_fingerprint.gpuVendor all show 'description':null. LLMs cannot infer valid values or constraints without descriptions.
No output schemas documented for any tool. Callers cannot know what fields to expect in responses. E.g., cloak_detection_test returns 'key result fields' but the schema is not specified. This forces LLMs to guess at response structure.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
Stop the video recording flag.
Insert a chapter marker into the video buffer (no-op when video is off).
Report installed CloakBrowser binary version, platform, and cache path.
Force CloakBrowser to check for and download the latest Chromium build. May take several minutes (~200MB).
Load a well-known bot-detection probe page and dump its key result fields.
Toggle humanized mouse/keyboard inputs and tune behavior. Takes effect on subsequent click/type calls when --caps humanize is on.
Create a fresh persistent profile directory under ~/.cloak-browser-mcp/profiles/<name>. Use as --profile-dir on next launch.
Delete a profile directory. Requires confirm=true. The active session is unaffected.
List all profile directories under ~/.cloak-browser-mcp/profiles/.
Open the target URL in an ephemeral background tab and capture per-request connection signals: response status, security details (TLS protocol/issuer), response headers, and request headers (Accept-Language, User-Agent, Sec-CH-UA-*).
Apply a fingerprint profile to the active context. Some fields (seed, GPU, screen) require recreating the context — current pages will be reopened on the same URL.
Set the geolocation reported by navigator.geolocation. Pass fromProxyIp=true to auto-resolve from proxy exit IP.
Override navigator.language and Accept-Language for the active context.
Replace the current proxy. This recreates the BrowserContext (state is preserved if --profile-dir was used; otherwise cookies are lost).
Live-override the timezone for the active context via CDP (no relaunch).
Programmatic stealth audit. Reports navigator.webdriver, plugin count, WebGL vendor/renderer, languages, user agent, hardwareConcurrency, deviceMemory, permissions, chrome.runtime presence, and a canvas fingerprint hash.
Error handling is minimal. Most handlers return textOutput() with no recovery guidance. E.g., browser_start_tracing returns 'Tracing already active' but does not suggest calling browser_stop_tracing first. No error categorization (retryable vs fatal).
Destructive operations (cloak_persistent_profile_delete, cloak_binary_update) lack confirmation or dry-run support. Agents can accidentally delete profiles or trigger large downloads without explicit user consent.
Parameter constraints are not enforced in descriptions. E.g., cloak_persistent_profile_create.name has a regex pattern '^[a-zA-Z0-9_-]+$' but the description does not state this. cloak_set_fingerprint.screenWidth/Height have no min/max bounds documented.