export_curl
Turn a captured request into a runnable curl and an httprequest(impersonate='chrome') call. The second form is the point: plain curl replays with a curl TLS fingerprint, which anti-bot systems flag even when every header matches
How to use it
Project documentation lists export_curl for the MCP Stealth Chrome MCP server. Add the server to your MCP client (Claude Desktop, Cursor, Windsurf and others), then check which tools your installed version makes available. Tool availability can depend on configuration and credentials. A server handshake does not verify this tool’s behavior. See the full listing for setup details.
Install MCP Stealth Chrome
claude mcp add stealth-chrome -- uvx mcp-stealth-chrome@latestOther tools in MCP Stealth Chrome (38)
Intercept the next N requests matching a URL pattern and return their headers (Authorization, Cookie, X-CSRF-) — for SPAs that hold bearer tokens in JS memory
Click + observe one of navigation / url / text / selector / request / networkidle. Distinguishes real submit from silent invalid-form click
Click top-left/right/bottom-left/right of element
Find image + click its center
Click at % position inside element (not center)
CF Turnstile bypass for embed widgets + template-match fallback
search → fetch top-N sources → markdown + citations, in one call
Compact JSON summary (title/url/headings/fields/actions/errors/navigation) — ~10× fewer tokens than accessibilitysnapshot. waitstable=True waits for SPA hydration via MutationObserver
One-shot: detect anti-bot wall (CF / DataDome / PX / Akamai / Imperva / Kasada) and apply best bypass we have
Identify CF/DataDome/PerimeterX/Kasada/Imperva on current page
Persistent native-dialog handler with type filter (alert / confirm / prompt / beforeunload). Update action without re-arming. Idempotent per tab
OpenCV template match → coordinates
Audit this browser's OWN fingerprint for the leaks detectors read — in-page, nothing leaves the machine. Weights cross-field consistency (a Windows UA on a MacIntel platform) and states what it cannot see from inside a page (TLS/JA3, IP-vs-timezone)
UA/lang/platform/timezone via CDP
Per-field detail (label, framework binding react/vue/solid/lit, validation state, pattern/length constraints, aria-invalid)
Repo / README / issues / releases via GitHub REST API (pure HTTP)
TLS-perfect HTTP via curlcffi (chrome/firefox/safari impersonation)
Authenticated curlcffi request that piggybacks on browser cookies + auto-extracts most recent same-host bearer from networkindex
Inspect which browser cookies match a URL
What was seen, plus whether interception is still active — an empty log cannot be mistaken for "the page sent nothing"
Pause matching requests and observe / cancel / mock them at the CDP layer — catches XHR and anything the page captured before your script ran, which patching window.fetch cannot
End it early; it also disables itself on a deadline so a forgotten intercept cannot wedge the page
Random Bezier wandering (pass behavioral ML)
Full paste-event sequence (ClipboardEvent + DataTransfer + beforeinput inputType:'insertFromPaste') for SolidJS/Svelte 5/Qwik forms that ignore plain dispatchEvent('input')
One URL → clean LLM-ready markdown (stdlib, ~70–98% smaller than raw HTML)
Grep the current page's text (zero-LLM, instant)
Natural browsing pattern (homepage/referer/scroll) before target
HTTP-first; auto-escalates to the stealth browser only when the request is blocked
Fill form by label text (fuzzy match: exact > prefix > substring > token); native value setter for React/Vue. Returns didyoumean candidates on miss
Structured, account-independent Reddit community digest (votes/comments/age)
CapSolver API — Turnstile/reCAPTCHA/hCaptcha
Vision LLM picks matching tiles — solve image challenges (auto-clicks anchor checkbox in v0.2.10+)
Cloudflare checkbox via OpenCV template match
NL → element coordinates: "the red Create button at bottom right" (optional click=True)
Block until a request matching urlpattern is observed (+ optional method filter, + optional response wait) — replaces setTimeout polling
SERP search with no browser and no API key (Bing default, Brave/DuckDuckGo/Exa optional) → {title,url,snippet}
Sequential tool runner with resumable startat index and stoponerror. Failure response includes failurecontext and resumewith hint
Video metadata + transcript (native timedtext, yt-dlp fallback)