Leapfrog MCP
Leapfrog MCP is a multi-session browser automation server for AI agents offering token-efficient, stealthy, and intelligent web interaction with 36 tools across these capabilities:
Session & Profile Management
Create/destroy up to 15 isolated browser sessions ("ponds") with separate cookies, state, proxies, viewports, locales, and stealth settings
Save/load auth profiles, import cookies from Chrome, warm profiles for better reCAPTCHA trust scores
View pool status with memory usage, uptime, and session summaries
Navigation & Page Interaction
Navigate to URLs with compact accessibility snapshots (~200–500 tokens vs ~15,000 with Playwright MCP — a 2–10x reduction)
Incremental diff snapshots showing only what changed (ideal for polling/monitoring)
Click, fill, type, scroll, drag, upload, hover, and more using
@eNrefs or CSS selectorsBatch up to 100 sequential actions per MCP call to eliminate round-trip overhead
Execute custom Playwright scripts, smart waits, screenshots, and JS evaluation
Tab Management
List, switch between, and close tabs within a session
Network & API Intelligence
View HTTP logs filtered by URL, method, status, or content type
Read browser console output by log level
Intercept, block, mock, or log network requests
Discover and classify JSON APIs; export OpenAPI v3 specs from observed traffic
Pagination & Multi-Page Extraction
Extract data across multiple pages using click-next, infinite scroll, or URL pattern strategies (up to 50 pages / 100K characters)
Stealth & Anti-Bot
19 anti-detection patches (WebGL, navigator.webdriver, AudioContext, WebRTC, font enumeration, CDP evasion, and more)
Four stealth modes:
true,passive,auto(EXP3 bandit per-domain optimization),false
Human Intervention & CAPTCHA Handling
wait_for_humantool pauses with an overlay for manual assistanceAuto-detects and attempts to resolve CAPTCHAs (reCAPTCHA, hCaptcha, Turnstile, Cloudflare); supports CapSolver, 2Captcha, NopeCHA
Self-Improvement
Learns per-domain optimal wait strategies, stealth tiers, consent selectors, selector healing, and stable element suppression across 9 dimensions
Recording & Replay
Export session history as replayable JSON or Playwright JS scripts with parameter overrides
Session Memory & Context Recovery
Recall session action history to recover context after LLM context window compression
Additional Features
Inject init scripts for fingerprint overrides or instrumentation
Export Playwright trace ZIPs for detailed action timelines
SSRF hardening, localhost blocking, and sandboxed script execution
Provides automated detection and resolution of Cloudflare challenges including Turnstile CAPTCHAs and verify buttons, with stealth escalation strategies, IP leak prevention, and automated retry logic to bypass bot protection mechanisms.
The Problem
Playwright MCP sends ~14,000 tokens for a content-heavy page like Hacker News. Most of that is noise. Your context window fills up. Your agent gets confused. You pay for it.
Leapfrog sends ~1,400 tokens. Same page. Same information. Up to 10x less noise.
┌─────────────────────────────────────────────────────┐
│ Playwright MCP │
│ ████████████████████████████████████████ ~14,000 │
│ │
│ Leapfrog │
│ █████ ~1,400 │
└─────────────────────────────────────────────────────┘
tokens per page (Hacker News, real test)Savings range from 2-10x depending on page complexity. Content-heavy pages see the biggest wins. Dense forms see the smallest. The median across real-world sites is ~4-5x.
Related MCP server: MCP Browser
Quick Start
npx leapfrog-mcp --doctor # verify everything works
npx leapfrog-mcp --stealth-audit # test all 19 stealth patches
npx leapfrog-mcp --config # print MCP config to pasteAdd to ~/.mcp.json (Claude Code) or your editor's MCP config:
{
"leapfrog": {
"command": "npx",
"args": ["-y", "leapfrog-mcp"],
"env": {
"LEAP_MAX_SESSIONS": "15",
"LEAP_TILE": "true",
"LEAP_HUD": "true",
"LEAP_AUTO_CONSENT": "true"
}
}
}Leapfrog uses playwright-core (15MB) instead of playwright (1.6GB) and does not bundle a browser. Either:
Set
LEAP_CHANNEL=chrometo use your installed Chrome/Chromium (recommended)Or run
npx playwright-core install chromiumto install the bundled Chromium binaryOr set
LEAP_CDP_ENDPOINTto connect to an already-running Chrome instance
Feature Matrix
Leapfrog | Playwright MCP | agent-browser | |
Tokens per page | ~1,200-2,500 | ~3,800-15,000 | ~300 |
Parallel sessions | 15 | 1 | 1 |
Session isolation | Yes | No | No |
Multi-tab / popups | Yes | No | No |
Network intercept | Yes | No | No |
Console capture | Yes | Yes | No |
Stealth / anti-bot | Yes | No | No |
Smart wait (5 types) | Yes | Basic | No |
Crash recovery | Yes | No | No |
Batch actions (100/call) | Yes | No | No |
Init script injection | Yes | Yes | No |
Drag / upload / resize | Yes | Yes | No |
Per-session proxy | Yes | No | No |
Humanization (opt-in) | Yes | No | No |
Auth profile reuse | Yes | No | No |
Cookie persistence | Yes | No | No |
Page classification (18) | Yes | No | No |
Session memory | Yes | No | No |
API intelligence | Yes | No | No |
Adaptive wait + auto-retry | Yes | No | No |
CAPTCHA auto-resolve | Yes | No | No |
Self-improvement (9 dims) | Yes | No | No |
Record / replay | Yes | No | No |
Pagination extraction | Yes | No | No |
Incremental snapshots (diff) | Yes | No | No |
Stealth self-test CLI | Yes | No | No |
SSRF protection | Yes | No | No |
Stealth
Leapfrog ships 19 anti-detection patches enabled by default (LEAP_STEALTH=true). Four modes:
true(default) — all 19 patches activepassive— removes automation signals only (webdriver, HeadlessChrome). Does NOT fake identity (WebGL, fonts, audio). Better for sites where trust matters more than evasion.auto— per-domain EXP3 bandit selects the optimal stealth configuration based on what's worked beforefalse— no stealth patches
These cover the vectors that fingerprint services like CreepJS and fingerprint-pro actually check:
Client Hints brands (strips HeadlessChrome)
navigator.webdriverforced toundefinedWebGL vendor/renderer (replaces SwiftShader with real GPU strings)
Connection RTT (non-zero)
Alert dismiss timing (human-speed delay)
Window outer/inner height offset
MIME type array population
Platform inference from user agent
chrome.appemulationiframe
contentWindowprotectionMedia codec spoofing (
canPlayType)document.hasFocus()overrideSource URL comment stripping
Custom UA + stealth coexistence (custom user agents no longer disable stealth context)
CDP
Runtime.enabledetection (Error.prepareStackTracefilter)Permissions API spoofing (20+ permission types)
AudioContext fingerprint noise (
getChannelData/getFloatFrequencyData)WebRTC IP leak prevention (ICE candidate filtering)
Font enumeration fingerprint spoofing
Per-session stealth control: pass stealth: false in session_create to disable for a specific session.
Humanization (Experimental)
Set LEAP_HUMANIZE=true to enable human-like browser interaction. This is opt-in and adds latency in exchange for more realistic behavior. Six modules:
Mouse — Bezier curve paths with Fitts's Law timing and micro-tremor jitter
Typing — Log-normal inter-key delays (200ms median), key dwell time, bigram-aware speed, rollover typing
Scroll — Inertial simulation with ramp-up and momentum decay (touchpad/mouse-wheel physics)
Pause — Inter-action "think" delays that simulate cognitive gaps between actions
Fingerprint — Coherent browser fingerprint generation (platform, device memory, GPU, timezone)
Utils — Shared math primitives (Box-Muller gaussian, distributions)
Page Classification
Every navigate and snapshot call automatically classifies the page type using weighted signal scoring (no LLM required). 18 types:
login · search-results · product · product-list · checkout · article · dashboard · form · error · challenge · landing · documentation · profile · media · feed · qa · ecommerce · unknown
Classification drives smarter snapshot extraction — login pages surface form fields, articles surface content, dashboards surface interactive elements.
Harness Intelligence
The harness tracks every action in a session and classifies outcomes:
Action outcome classification —
SUCCESS,SILENT_CLICK,NAVIGATION,WRONG_ELEMENT,BLOCKED,ERROR,PENDINGBot redirect detection — detects when a site redirects to a challenge or block page after an action
Loop detection — warns when the agent is stuck clicking the same element, ping-ponging between URLs, or repeating actions
Session memory —
session_memorytool recalls actions after context window compression
Cookie Persistence
Persistent browser profiles now use context.cookies() + addCookies() instead of storageState(), which returns empty on persistent contexts. Auth state survives across sessions.
Adaptive Wait + Stealth Escalation
Navigate automatically retries with fallback strategies when pages fail to load:
Try
load(fastest) — if empty, retry withnetworkidle(10s cap)If
networkidletimes out (Amazon, ad-heavy sites), fall back todomcontentloadedIf blocked/challenged, escalate stealth: random delays → wait for JS challenge → rotate session with fresh fingerprint
Profile sessions (auth'd) never have their session destroyed — hard-capped at Level 2
Opt-out with autoRetry: false on navigate. Control max escalation with maxRetryLevel (0-5, default 3).
Record / Replay
Export a session's action history as a replayable recording, then replay it in new sessions:
session_export— creates parameterized JSON or Playwright script from session history.@eNrefs resolved to stable CSS selectors. Auto-detects emails, passwords, URLs as{{placeholders}}.session_replay— replays a recording with parameter overrides. SupportsonError: 'stop'or'skip'.
Turn one-off agent workflows into reusable automations.
Pagination Extraction
Extract data across multiple pages in a single tool call:
Click-next — auto-detects "Next" buttons, pagination links, "Load more" buttons
Infinite scroll — scrolls and waits for new content via DOM hash comparison
URL pattern — increments
?page={page}or custom patterns
Replaces 3-4 tool calls per page. Cap: 50 pages, 100K total chars. Stops on: no next button, empty page, duplicate content, or bot detection.
Incremental Snapshots
The diff tool returns only what changed since the last snapshot — additions, removals, changes. Massive token savings for monitoring and polling workflows.
HUD Overlays (LEAP_HUD=true)
When running headed, Leapfrog overlays visual feedback on every session:
Click ripple — expanding green circle at click coordinates (agent actions only)
Zoom-to-target — browser zooms to 1.15x on the clicked element briefly so agents (and humans) can visually track what's happening in tiled windows
Scroll-to-target — scrollIntoView before clicks so you can see what the agent is about to click
Minimal by design. No borders, no status bars, no cursor overlay — just the feedback that matters.
Multi-Terminal Tiling (LEAP_TILE=true)
Multiple Leapfrog instances share the screen via file-based coordination. Each instance tracks its own windows and a TilesCoordinator assigns global grid slots — no overlap, no manual arrangement. Set LEAP_TILE=true (or LEAP_TILE=master for the primary instance). Padding between tiles is configurable with LEAP_TILE_PADDING (default 8px).
Human Intervention
Leapfrog auto-detects situations that need a human — CAPTCHAs, login forms, OAuth redirects, Cloudflare challenges — and tries to self-resolve before pausing.
Auto-resolves first: clicks reCAPTCHA checkboxes, Cloudflare verify buttons, generic verify/continue buttons, then a second-pass retry — all before asking for help
External solvers: set
LEAP_CAPTCHA_PROVIDER+LEAP_CAPTCHA_API_KEYfor CapSolver, 2Captcha, or NopeCHA integrationLearns what works: remembers which resolution method succeeded per domain and tries the known-good method first on revisit
Detects reCAPTCHA, hCaptcha, Turnstile, login forms, OAuth redirects, Cloudflare challenges
Tab title changes to "NEEDS HUMAN" when intervention is needed
wait_for_humantool — agent calls when stuck, blocks until you resolve it or navigate past
Cookie Consent Auto-Dismiss (LEAP_AUTO_CONSENT=true)
Automatically dismisses cookie consent banners across 10 frameworks (OneTrust, CookieBot, TrustArc, Quantcast, Didomi, Cookielaw, Osano, Usercentrics, + generic) plus text-matching fallback. Per-domain selector caching for instant replay on revisit.
Tracing (LEAP_TRACE=true)
Per-session Playwright tracing with screenshots + DOM snapshots. Export ZIP files viewable at trace.playwright.dev via the session_export_trace tool. Auto-saves on session destroy.
Self-Improvement
Leapfrog learns from every visit. Per-domain knowledge persists at ~/.leapfrog/domains/{domain}.json — 9 dimensions, all automatic:
# | Dimension | What it does |
1 | Wait strategies | Learns optimal wait method per domain ( |
2 | Stealth tiers | Auto-escalates 0→3 when blocks are detected (2+ blocks in 1 hour). Starts at learned tier on revisit |
3 | Consent selectors | Remembers cookie banner dismiss selectors, auto-clicks on revisit |
4 | Challenge resolution | Records which CAPTCHA method worked (reCAPTCHA checkbox, Cloudflare verify, etc.), tries known-good method first |
5 | Stable element suppression | Identifies nav/footer/sidebar elements seen 3+ visits, suppresses from snapshots (30-40% token savings on mature domains) |
6 | Selector healing | Remembers element fingerprints → selectors, heals broken refs across visits |
7 | API endpoint caching | Discovered API endpoints persist across sessions |
8 | Interaction heat maps | Tracks which elements agents actually use, suppresses untouched elements (coming) |
9 | Strategy selection | Adversarial bandit (EXP3) for stealth config optimization. Use |
LRU eviction at 500 domains. Inspect with the domain_knowledge tool.
SSRF Hardening
URL validation blocks hex-encoded IPs (0x7f000001), octal notation (0177.0.0.1), CGNAT ranges (100.64.0.0/10), and redirect chains that resolve to internal addresses. Localhost and 127.0.0.0/8 are allowed by default for local dev workflows — set LEAP_BLOCK_LOCALHOST=true to block them.
The Ecosystem
Leapfrog uses pond metaphors to keep things memorable. Your agent is the frog.
Concept | Leapfrog term | What it means |
Sessions | Ponds | Isolated browser contexts — cookies, storage, state |
Tabs | Lily pads | Where the frog lands within a pond |
Navigate | Leap | Jump to a URL, get a compact snapshot back |
Snapshots | Surface | What you see on the surface — interactive |
Network traffic | Ripple | HTTP requests flowing under the surface |
Console errors | Croak | Something went wrong in the browser |
Stealth mode | Camouflage | Anti-bot evasion patches |
All 36 Tools
Pond Management (11)
Tool | What it does |
| Open a new pond — isolated cookies, state, viewport, locale, timezone, stealth, proxy |
| Drain a pond and free the slot |
| See all active ponds with URLs and idle times |
| Save auth state to disk for future ponds |
| List saved auth profiles |
| Pool stats, memory, uptime |
| Is the pond healthy? Browser connected, page responsive? |
| List saved persistent browser profiles |
| Delete a saved persistent browser profile and its data |
| Import cookies and state from an installed Chrome profile |
| Pre-warm a profile by loading key URLs to establish cookies/state |
Navigation & Snapshots (12)
Tool | What it does |
| Leap to a URL, return a compact |
| Re-read the surface (scope with CSS selector) |
| Incremental snapshot — returns only what changed since last snapshot |
| Click, fill, type, check, select, press, scroll, hover, mousemove, drag, upload, resize, back, forward |
| Up to 100 sequential actions in one MCP call — eliminates round-trip overhead |
| Extract data across multiple pages in one call (click-next, scroll, URL pattern) |
| Inject JS that runs before every page load, persists across navigations |
| Wait for element / text / network idle / navigation / JS expression |
| Capture PNG (full page or element) |
| Pull text, HTML, title, URL, or evaluate JS |
| Recall actions performed in this session — recovers context after compression |
| Export session history as a replayable JSON recording or Playwright script |
Tab Management (3)
Tool | What it does |
| List all pads in a pond |
| Hop to another pad (-1 for most recent popup) |
| Close a pad (can't close the last one) |
Agent Intelligence (3)
Tool | What it does |
| Pause for human intervention — blocks until user clicks Done on the |
| Inspect what Leapfrog has learned about a domain (wait strategies, stealth tiers, endpoints) |
| Export a Playwright trace ZIP — viewable at trace.playwright.dev |
Network & API Intelligence (7)
Tool | What it does |
| See HTTP traffic — filter by URL, method, status, content-type |
| Read browser console output, filtered by level |
| Block, mock, or log requests by URL pattern |
| List JSON APIs the page has called, classified by category (data, tracking, auth, cdn, ads) |
| Generate an OpenAPI v3 spec from observed API traffic |
| Run a Playwright script in a sandboxed environment — replaces 5-20 sequential MCP round trips |
| Replay a recording in the current session with parameter overrides |
Environment Variables
Variable | Default | Description |
|
| Max concurrent sessions |
|
| Session idle timeout in ms (30 min). Set |
|
| Set |
|
| Set |
| (bundled chromium) | Set |
| (none) | Connect to a running Chrome instance (e.g. |
| (none) | Comma-separated paths to browser extensions to load |
|
| Allow JS evaluation in |
|
| Stealth mode: |
|
| Enable stealth patches on profile (auth'd) sessions |
|
| CDP detection evasion ( |
|
| Experimental. Human-like mouse movement, typing cadence, and scroll behavior. |
|
| Allow the |
|
| Block localhost/127.x.x.x (allowed by default for local dev) |
|
| Directory for persistent browser profiles |
|
| Tile sessions in a grid ( |
|
| Padding between tiled windows (px) |
|
| Multi-terminal tiling coordination across Leapfrog instances |
| (auto) | Explicit screen width for tiling calculations |
| (auto) | Explicit screen height for tiling calculations |
|
| Click ripple, zoom-to-target, scroll-to-target on agent actions |
|
| Auto-dismiss cookie consent banners (10 frameworks + fallback) |
|
| Per-session Playwright tracing (screenshots + DOM snapshots) |
|
| Session recording (action history export) |
|
| Enable Rebrowser integration |
|
| Auto-warm profiles by loading key URLs on session create |
| (none) | External CAPTCHA solver: |
| (none) | API key for the configured CAPTCHA provider |
| (none) | Per-client session pool limit |
|
|
|
Tests
769 passing across 31 suitesSession management, snapshot engine, snapshot differ, network intelligence, tab management, security, SSRF protection, stealth patches (19), stealth enhanced, humanization (mouse, typing, scroll), page classification, harness intelligence, API intelligence, script executor, extended actions, HUD overlays, human intervention, cookie consent, domain knowledge, selector healing, stable elements, tile manager, bug regression, integration smoke, stress tests, benchmarks.
npm testRequirements
Node.js >= 20
Chromium — use system Chrome (
LEAP_CHANNEL=chrome) or install vianpx playwright-core install chromium
License
MIT
Available Tools
37 toolsactBrowser ActionA
Perform a browser interaction: click, fill, type, check, select, press key, scroll, hover, mousemove, drag, upload, resize, back, forward. Use @eN refs from navigate/snapshot as the target (e.g. '@e2'). CSS selectors also work. drag: requires target (source) and target2 (destination). upload: requires target (file input) and filePaths. resize: requires width and height (no target needed). holdDuration: for click, holds mouse down for N ms (long-press). Returns a fresh snapshot if the page navigated, or just the action result if it didn't.
Inputs: sessionId (required), action (required), target, value, +11 more.
add_init_scriptAdd Init ScriptA
Inject JavaScript that runs before every page load in a session. Persists across navigations (Playwright built-in behavior). Use for fingerprint overrides, custom stealth patches, or page instrumentation.
Inputs: sessionId (required), script (required).
api_discoverDiscover Page APIsA
List JSON APIs the page has called. Captured automatically from XHR/fetch traffic. Classifies into: data, tracking, auth, cdn, ads.
Inputs: sessionId (required), category, minConfidence.
api_exportExport OpenAPI SpecA
Generate an OpenAPI v3 spec from observed API traffic. Navigate pages first to capture traffic, then export.
Inputs: sessionId (required), title, includeTracking.
batch_actionsBatch ActionsA
Execute multiple browser actions sequentially in a single MCP call. Eliminates round-trip overhead for humanization sequences (e.g. Bezier mouse paths, typed text with delays). Each action can have an optional delayAfter (ms) to pause between steps. Returns a single result with the outcome of each action.
Inputs: sessionId (required), actions (required).
console_logConsole LogA
View captured browser console messages (log, warn, error, info, debug). Console capture starts automatically when a session is created. Use level filter to focus on errors or warnings.
Inputs: sessionId (required), level.
diffSnapshot DiffA
Compare the current page state against the last snapshot for this session. Returns only what changed (additions, removals, changes) — massive token savings vs a full re-snapshot. Use after 'act' instead of 'snapshot' when you just need to see what changed. On first call (no previous snapshot), returns the full snapshot with a note. Use 'selector' to scope the diff to a page region.
Inputs: sessionId (required), selector.
domain_knowledgeDomain KnowledgeA
Inspect what Leapfrog has learned about a website from previous visits. Shows stealth tier, wait strategy, block history, consent selector, API endpoints, and visit count. Pass no domain to list all known domains.
Inputs: domain.
executeExecute ScriptA
Run a Playwright script with access to { page, context }. One tool call replaces 5-20 sequential MCP round trips. Use for complex flows with conditional logic, loops, error handling. NOTE: Scripts run in the Node.js process — equivalent to arbitrary code execution. Disable with LEAP_ALLOW_EXECUTE=false.
Inputs: sessionId (required), script (required), timeout.
extractExtract DataA
Extract data from the page without a full snapshot. Types: text (visible text), html (markup), title, url, js (evaluate JavaScript). Use target with @eN or CSS selector for element-specific extraction.
Inputs: sessionId (required), type, target, js, +1 more.
network_interceptNetwork InterceptA
Add or remove network intercept rules. Block requests (ads, trackers), mock API responses, or log specific traffic. Use action='remove' with ruleId to remove an existing rule.
Inputs: sessionId (required), action (required), ruleId (required), urlPattern, +3 more.
network_logNetwork LogA
View captured HTTP requests/responses for a session. Shows method, status, URL, size, and timing. Filter by URL pattern, method, status range, or content-type. Network capture starts automatically when a session is created.
Inputs: sessionId (required), urlPattern, method, statusMin, +2 more.
paginatePagination ExtractionA
Extract data across multiple pages in a single call. Handles click-next, infinite scroll, and URL-pattern pagination. Auto-detects 'next' buttons when nextSelector='auto'. Returns extracted content from each page plus metadata. Replaces 3-4 tool calls per page with one invocation. Cap: 50 pages, 100K total chars.
Inputs: sessionId (required), extractType, extractTarget, extractJs, +7 more.
pool_statusPool Status & ResourcesA
Show pool stats, resource usage (memory, uptime), and all active session summaries. Shows per-session idle time. Sessions approaching 30-minute idle timeout should be refreshed or saved.
Inputs: no named parameters.
profile_deleteDelete Auth ProfileA
Delete a saved persistent browser profile and all its data.
Inputs: name (required).
profile_import_from_chromeImport Profile from ChromeA
Connect to your real Chrome browser via CDP, capture its auth cookies, and save them as a Leapfrog profile. This gives you real Google auth, reCAPTCHA trust, and all your logged-in sessions — but in an isolated Leapfrog session, not your real browser. Start Chrome with: chrome --remote-debugging-port=9222
Inputs: name (required), cdp, domains.
profile_listList Auth ProfilesA
List saved persistent browser profiles with their auth status.
Inputs: no named parameters.
profile_warmWarm Browser ProfileA
Warm up a browser profile by browsing trusted sites (Google, Wikipedia, YouTube). Fresh profiles with zero history score near 0 on reCAPTCHA v3. A 60-90 second warm-up dramatically improves trust scores. Stores warm-up state in domain knowledge so it doesn't repeat. Must pass a sessionId of an existing session with a profile.
Inputs: sessionId (required).
screenshotScreenshotB
Capture a screenshot of the current page. Returns the image inline as base64. Optionally save to disk with savePath.
Inputs: sessionId (required), fullPage, selector, savePath.
session_createCreate Browser SessionA
Create a new isolated browser session with its own cookies and state. Returns a short session ID (e.g. s_k3m7x1) to pass to all other tools. Each session is a separate BrowserContext — no cookie leakage between sessions. Pool limit: 15 concurrent sessions. Sessions auto-expire after 30 minutes of inactivity. Use keep-alive pattern (periodic navigate or snapshot) for long-running sessions.
Inputs: profilePath, viewport, userAgent, locale, +13 more.
session_create_batchCreate Multiple Browser SessionsA
Create multiple isolated browser sessions concurrently — 5-10x faster than sequential session_create calls. Optionally navigate each to a URL. Returns all session IDs. A single reflow positions all windows into a unified grid after all sessions are created.
Inputs: sessions (required).
session_destroyDestroy Browser SessionA
Close and clean up a browser session. Frees a pool slot.
Inputs: sessionId (required).
session_exportExport Session RecordingA
Export session action history as a replayable recording. Creates a JSON script from all mutating actions with @eN refs resolved to stable selectors. Use format='playwright' to get a Playwright JS script compatible with the execute tool.
Inputs: sessionId (required), name, keepExtracts, format.
session_export_traceExport Session TraceA
Export a Playwright trace file for a session. Requires LEAP_TRACE=true. The trace can be viewed at trace.playwright.dev for detailed action timeline.
Inputs: sessionId (required).
session_healthSession Health CheckA
Check if a session is healthy (browser connected, page responsive). Omit sessionId to check all sessions. Quick diagnostic for debugging.
Inputs: sessionId.
session_listList Browser SessionsA
List all active browser sessions with their URLs and idle times.
Inputs: no named parameters.
session_list_profilesList Saved ProfilesA
List all saved authentication profiles.
Inputs: no named parameters.
session_memorySession Action HistoryA
Recall what actions were performed in this session. Useful after context window compression to recover lost context.
Inputs: sessionId (required), limit.
session_replayReplay Session RecordingA
Replay a recording in the current session. Executes each step directly against the browser. Override {{placeholder}} params with the params object. Set onError='skip' to continue past failures.
Inputs: sessionId (required), recording (required), params, onError.
session_save_profileSave Session ProfileA
Save a session's cookies and auth state to disk. Use this after logging in to a site so future sessions can restore that login. Pass the returned profile path to session_create's profilePath to reuse it.
Inputs: sessionId (required), name (required).
snapshotPage SnapshotA
Re-snapshot the current page for fresh @eN refs. Use after 'act' when you need to re-orient, or scope to a region with 'selector'. Use 'selector' to dramatically reduce tokens (e.g. 'form', '#results').
Inputs: sessionId (required), selector, maxChars.
tab_closeClose TabA
Close a tab by index. Defaults to the active tab. Cannot close the last remaining tab. Returns a snapshot of the new active tab.
Inputs: sessionId (required), tabIndex.
tabs_listList TabsA
List all open tabs in a session. Shows index, URL, title, and which tab is active. New tabs (popups, OAuth windows) are automatically tracked.
Inputs: sessionId (required).
tab_switchSwitch TabA
Switch to a different tab by index. Use -1 to switch to the most recently opened tab (useful for popups). Returns a snapshot of the newly active tab.
Inputs: sessionId (required), tabIndex (required).
wait_forSmart WaitA
Wait for a condition before proceeding. Supports: element visible, text appears, network idle, URL navigation, JS expression truthy. Returns a fresh snapshot after the wait completes.
Inputs: sessionId (required), condition (required), target, text, +2 more.
wait_for_humanWait for HumanA
Pause and request human intervention. Shows the @..@ overlay with your reason. Use when you encounter a CAPTCHA, login wall, or any situation requiring human action. The tool blocks until the user clicks 'Done' on the overlay. Returns success when resolved.
Inputs: sessionId (required), reason (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 37 tools
Most tools are clearly distinct, but there are confusing overlaps: session_list and pool_status both list active sessions, and session_list_profiles and profile_list appear to list the same saved profiles. network_log and api_discover also overlap somewhat in observing traffic, though their descriptions help separate them.
The majority of tool names follow a snake_case verb_noun pattern with domain prefixes like session_, tab_, profile_, network_, and api_. However, several names are noun-like rather than command-like (pool_status, console_log, session_memory, domain_knowledge), and profile_warm is inverted. These deviations are minor and the overall pattern remains readable and predictable.
37 tools is well above the comfortable range for an MCP server and reaches the 'too many' category. The collection includes tight clusters of overlapping functionality, such as two profile-listing tools and two session-listing tools, which increases maintenance and learning burdens without adding proportional value. Many tools are useful, but the set could be consolidated below 25.
The server provides thorough coverage across the browser automation lifecycle: session management, navigation, interaction, snapshots/diffs, waits, tabs, network interception, profilers, authentication, API discovery, export/replay, human intervention, and traceability. Almost every task an agent would need in a browser drive has a direct tool, and any remaining gaps are just workarounds via execute or extract.
Maintenance
Related MCP Connectors
Web scraping, browser automation, screenshots and AI data extraction for AI agents via MCP.
Stealth web browser for agents: search, fetch, click, download and type in persistent MCP sessions.
Cloud browser, web extraction, screenshots, and remote CDP tools for AI agents.
Undetectable cloud browser sessions for AI agents and scrapers. Navigate, extract, click, captcha.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceSecurity-hardened MCP server that gives AI assistants full control over your real browser session, supporting 36 tools for navigation, data extraction, monitoring, and more.MIT
- AlicenseAqualityDmaintenanceMCP server that lets AI assistants browse the web through your real Chrome with your cookies, sessions, and fingerprint, avoiding bot detection and CAPTCHAs. Enables web browsing, content extraction, and multi-step workflows via persistent tabs.159 npm3MIT
- AlicenseNot gradedqualityAmaintenanceBrowser automation for AI agents: tabs, cookies, arbitrary JS execution (via CDP, bypasses CSP), screenshots, downloads, proxy switching, data cleanup. Chrome & Edge multi-browser, full permissions, zero configuration. 25+ MCP tools.1MIT
- AlicenseNot gradedqualityAmaintenanceAn MCP server that exposes browser-drive tools over a local endpoint, letting AI agents launch and control isolated browser profiles with their own cookies, fingerprints, and proxies, then navigate, click, type, extract, screenshot, evaluate JS, and manage tabs and cookies. Session state persists across launches so authenticated workflows carry over between AI sessions.MIT