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: BrowserMCP Secure
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | Session ID. | |
| action | Yes | Interaction to perform. | |
| target | No | @eN ref or CSS selector. Required for click, fill, type, check, select, hover. | |
| value | No | Text for fill/type, option value for select. | |
| key | No | Key name for press (e.g. 'Enter', 'Tab', 'Control+a'). | |
| scrollDirection | No | Scroll direction. Default: down. | |
| scrollAmount | No | Pixels to scroll. Default: 300. | |
| typeDelay | No | Delay in ms between keystrokes for action='type'. Enables human-like typing speed. | |
| x | No | X coordinate for mousemove action. | |
| y | No | Y coordinate for mousemove action. | |
| target2 | No | Drop destination for drag action. @eN ref or CSS selector. | |
| filePaths | No | File path(s) for upload action. Single string or array of strings. | |
| width | No | Viewport width for resize action. | |
| height | No | Viewport height for resize action. | |
| holdDuration | No | Hold duration in ms for click action (long-press). Uses mouse.down() + wait + mouse.up(). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral disclosure. It mentions return behavior (fresh snapshot vs. action result) and holdDuration details, but lacks description of side effects or prerequisites like active session.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is organized: purpose first, then targeting guidance, then per-action specifics. It is relatively concise for the tool's complexity, though some redundancy could be trimmed (e.g., 'CSS selectors also work' is mentioned in parameters).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 15 parameters and no output schema, the description covers key behaviors and special actions. It does not explain sessionId or how to obtain @eN refs, but these are covered by sibling tools. Overall, it is sufficiently complete for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with per-parameter descriptions. The description adds value by clarifying relationships (e.g., target as source for drag, no target needed for resize) and explaining @eN refs, going beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Perform a browser interaction' and enumerates specific actions (click, fill, type, etc.). It distinguishes itself from sibling tools like navigate and snapshot by focusing on post-navigation interactions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context for using @eN refs from navigate/snapshot, and specifies when to use target and target2 for drag, or filePaths for upload. However, it does not explicitly state when not to use this tool or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | Session ID. | |
| script | Yes | JavaScript code to inject. Runs in page context before any page scripts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses key behaviors: runs before every page load, persists across navigations, and executes in page context before page scripts. This compensates for missing annotations, though it could mention potential side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each adding unique value: action + persistence + use cases. No redundant words. Front-loaded with primary purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema or annotations, the description covers purpose, usage, and a critical behavioral trait (persistence). Slight omission of return value or script limits, but adequate for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds minimal value beyond what the schema already provides for 'script' parameter (both mention 'before page scripts'). No additional semantic guidance for 'sessionId'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool injects JavaScript that runs before every page load and persists across navigations. It distinguishes from siblings like 'execute' by emphasizing persistence and automatic re-execution, not just one-time execution.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists use cases: fingerprint overrides, stealth patches, page instrumentation. It does not mention when not to use or alternatives, but the provided guidance is strong enough for correct selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
api_discoverDiscover Page APIsA
List JSON APIs the page has called. Captured automatically from XHR/fetch traffic. Classifies into: data, tracking, auth, cdn, ads.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | ||
| category | No | ||
| minConfidence | No | Minimum classification confidence (0-1). Default: 0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the automatic capture from XHR/fetch and classification behavior, which is helpful. However, it does not mention side effects (none expected), permissions, or limitations (e.g., only captures during page lifecycle, not all request types).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main action, and contains no fluff. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose and classification output but lacks details on output format, pagination, timing of capture (when available), and response structure. Given the absence of an output schema, more context would be beneficial but the description is minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is low (33%). The description adds meaning by explaining the classification categories and the source of data, partially compensating for missing param descriptions. However, it does not clarify the sessionId parameter or the minConfidence default and usage beyond what's in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists JSON APIs called by the page, captured from XHR/fetch traffic, and classifies them into five specific categories. This provides a specific verb-resource combination and distinguishes it from broader network tools like network_log.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (when you need listed and classified JSON APIs), but it does not explicitly state when to use this tool over alternatives such as network_log or network_intercept. No exclusions or preconditions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
api_exportExport OpenAPI SpecA
Generate an OpenAPI v3 spec from observed API traffic. Navigate pages first to capture traffic, then export.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | ||
| title | No | API spec title. | |
| includeTracking | No | Include tracking/analytics endpoints. Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description discloses it uses observed traffic but lacks details on side effects, required permissions, or return value. Adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no wasted words. Purpose and usage are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without output schema or annotations, description could better specify output format or potential errors. Adequate for a simple tool but leaves gaps for agent decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%; description adds no further explanation for parameters. The 'navigate first' hint implies sessionId context but doesn't enhance parameter understanding beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it generates an OpenAPI v3 spec from observed traffic, distinguishing it from sibling tools like network_intercept or api_discover. Includes usage hint about navigating first.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit instruction to navigate pages before export, guiding correct usage. No mention of when not to use or alternatives, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | Session ID. | |
| actions | Yes | Array of actions to execute sequentially. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It conveys sequential execution, optional delays, and a combined result. Missing details on error handling (e.g., stop on first failure?), atomicity, and side effects. Adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loading the core purpose. No unnecessary words. Well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of batching up to 100 actions with 13 action types, the description lacks details on error handling, partial failure, and the structure of the result object. Without an output schema, more detail on outcomes is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with descriptions. The description reinforces delayAfter and mentions the return format, but does not add significant new meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it executes multiple browser actions sequentially in one call, reducing round-trip overhead. It explicitly mentions humanization sequences, which distinguishes it from single-action sibling tools like 'act' or 'click'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use it: for sequences of actions to minimize overhead. It gives examples like Bezier mouse paths and typed text. However, it does not explicitly state when not to use it or compare to alternatives like individual actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | Session ID. | |
| level | No | Filter by level: error, warn, log, info, debug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries full burden. It mentions that console capture starts automatically on session creation, but does not disclose that the operation is read-only, non-destructive, or any rate limits. Adequate but could be more comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, front-loaded with purpose, then usage tip. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with 2 params and no output schema, description covers purpose, auto-capture, and filtering. However, it lacks info on return format or pagination, which would be helpful since no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds minimal new meaning: it mentions the level filter and its possible values, but these are already in the schema description. The usage tip ('focus on errors or warnings') adds slight context but doesn't enrich semantics significantly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it's for viewing captured browser console messages with specific verb 'View' and resource 'captured browser console messages'. It implicitly distinguishes from sibling network_log by focusing on console vs network logs, but doesn't explicitly differentiate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a usage tip to use the level filter for focusing on errors/warnings, but no guidance on when to use this tool vs alternatives like network_log or session logs. Does not specify when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | Session ID. | |
| selector | No | CSS selector to scope snapshot to a page region. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but the description explains return format (additions, removals, changes) and first-call fallback. Could be improved by explicitly stating it's read-only or non-destructive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences: core function, usage guidance, and edge case. No fluff, each sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple diff tool, the description covers purpose, usage, edge case, and optional refinement. Differentiates from sibling 'snapshot' and no output schema needed as return is described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The description adds slight value by explaining the selector parameter's purpose, but sessionId is not elaborated beyond its name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool compares current page state against last snapshot, returning only changes. It distinguishes itself from sibling 'snapshot' by highlighting token savings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises using after 'act' instead of 'snapshot' when only changes needed, and mentions using 'selector' to scope. Also covers first-call behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | Domain to inspect (e.g. 'github.com'). Omit to list all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses read-only behavior by describing inspection of previous visit data. No annotations are provided, but the description implies no destructive actions. It lacks details on rate limits or permissions but is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, no extraneous information. Every word contributes to clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one optional parameter, no output schema, and no annotations, the description fully covers the tool's purpose and usage. It explains the parameter behavior completely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter. The description adds 'Pass no domain to list all known domains,' which mirrors the schema's 'Omit to list all' but is not redundant. Minimal added value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Inspect' and the resource 'what Leapfrog has learned about a website from previous visits'. It lists specific data shown (stealth tier, etc.) and differentiates from sibling tools by focusing on domain knowledge inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: 'Pass no domain to list all known domains'. While it doesn't explicitly state when not to use or mention alternatives, the instruction is sufficient given the tool's unique purpose among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | ||
| script | Yes | JavaScript async function body with access to { page, context }. Example: 'await page.goto("..."); return await page.title();' | |
| timeout | No | Timeout in ms. Default: 60000, max: 300000. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries full burden. It discloses that scripts run in the Node.js process with arbitrary code execution, a critical behavioral trait. It also mentions the LEAP_ALLOW_EXECUTE environment variable for disabling, ensuring transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four concise sentences that front-load purpose and key usage guidance. Every sentence earns its place: purpose, efficiency claim, security warning, disable method. No redundant text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a general script execution tool with no output schema, the description omits what the tool returns (e.g., the script's result). It provides an example in the schema but not in the description itself. Somewhat incomplete for an agent needing to understand the full I/O contract.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67% (script and timeout have descriptions, sessionId does not). The description adds no new parameter-level information beyond the schema's descriptions; it only contextualizes the script execution environment. Baseline of 3 is appropriate as the schema does most of the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Run' and the resource 'Playwright script' with explicit access to { page, context }. It distinguishes from siblings by claiming one call replaces 5-20 sequential MCP round trips, making the purpose specific and differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises using this tool for complex flows with conditional logic, loops, and error handling. It provides context on efficiency gains and mentions the disable environment variable, offering clear guidance on when and how to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | Session ID. | |
| type | No | What to extract. | text |
| target | No | @eN ref or CSS selector. Omit for page-level. | |
| js | No | JavaScript expression for type='js'. | |
| maxChars | No | Max output characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries full burden but only states 'without a full snapshot' and lists types. No disclosure of performance implications, permission needs, or error handling for invalid selectors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose and types, no wasted words. Efficiently covers key points.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Missing essential information about return format (plain text? structured?) and error behavior. With no output schema, description should clarify what the agent gets back.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all parameters with descriptions (100% coverage). Description adds value by explaining target usage with @eN or CSS selectors and clarifying type options with parenthetical hints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'extract' and resource 'data from the page', distinguishes from 'snapshot' tool, and lists specific extraction types (text, html, title, url, js).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies use when a full snapshot is not needed, and mentions element-specific extraction via target, but does not explicitly state when not to use or compare with alternatives like 'snapshot'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | Session ID. | |
| action | Yes | Intercept action. | |
| ruleId | Yes | Unique rule ID. Use for adding and removing rules. | |
| urlPattern | No | URL glob pattern to match (e.g. '**/analytics/**'). Required for block/log/mock. | |
| mockStatus | No | HTTP status for mock responses. | |
| mockBody | No | Response body for mock responses. | |
| mockContentType | No | Content-type for mock responses. Default: application/json. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It indicates mutability ('add or remove') but does not disclose side effects like rule application scope or potential disruption. A mid-range score is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no redundancy. It front-loads the primary action and resource, making it immediately scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 7 parameters fully documented in schema and no output schema, the description covers the essential purpose and key usage patterns. It could elaborate on mock behavior, but schema covers details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all parameters are described. The description adds minimal extra value beyond the schema, e.g., clarifying urlPattern requirement for certain actions, but does not significantly enhance understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action (add/remove network intercept rules) and specific use cases (block ads, mock APIs, log traffic). It distinguishes from siblings like network_log by specifying intercept actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance for removal ('Use action='remove' with ruleId') and lists the possible actions. While not exhaustive on when not to use it, it gives enough context for correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | Session ID. | |
| urlPattern | No | Regex or substring to filter URLs. | |
| method | No | HTTP method filter (GET, POST, etc). | |
| statusMin | No | Minimum status code (e.g. 400 for errors). | |
| statusMax | No | Maximum status code. | |
| contentType | No | Content-type filter (e.g. 'json'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden. It indicates the tool is read-only and capture is automatic, but it does not disclose return format, pagination, or whether the session must be active. No contradictions with annotations (none provided).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the primary purpose, and uses efficient language. Every sentence contributes meaning, though some structural optimization (e.g., bullet points) could improve scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and 6 parameters, the description adequately covers purpose and filters but omits response structure, ordering, or limits. The agent lacks full context for interpreting the tool's output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 6 parameters. The description adds value by summarizing filter capabilities (URL pattern, method, status range, content-type) but does not provide deeper semantics beyond what the schema already conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool is for viewing HTTP requests/responses, lists the data fields shown (method, status, URL, size, timing), and mentions filtering capabilities. It effectively distinguishes from siblings like 'network_intercept' which focuses on interception.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that the tool is for passive viewing after capture starts automatically, but it does not explicitly state when to use it versus alternatives (e.g., 'network_intercept'). No exclusions or when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | Session ID. | |
| extractType | No | What to extract from each page. | text |
| extractTarget | No | CSS selector to scope extraction to a specific container. | |
| extractJs | No | JavaScript expression for extractType='js'. | |
| nextSelector | No | CSS selector for the next button, or 'auto' to detect automatically. | auto |
| paginationType | No | Pagination strategy: click (next button), scroll (infinite scroll), url (URL pattern). | click |
| urlPattern | No | URL pattern with {page} placeholder for paginationType='url'. | |
| maxPages | No | Maximum pages to extract. Default: 10. | |
| delayMs | No | Delay between pages in ms. Default: 1000. | |
| maxCharsPerPage | No | Max characters per page extraction. Default: 5000. | |
| stopWhen | No | Stop condition. Default: auto (all heuristics). | auto |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It mentions auto-detection, caps, and returns extracted content plus metadata, but lacks details on error handling, response structure, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with four sentences, front-loading the main purpose and key features. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (11 parameters, 3 enums, no output schema), the description explains the overarching functionality, caps, and efficiency gains. It lacks examples for URL patterns or stop conditions but is otherwise complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters. The description adds context for some parameters (nextSelector, paginationType) but does not significantly expand beyond the schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states that the tool extracts data across multiple pages, handling click-next, infinite scroll, and URL-pattern pagination. It differentiates from sibling tools like 'extract' by focusing on multi-page extraction and auto-detection of next buttons.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context, noting that the tool replaces 3-4 tool calls per page with one invocation. It specifies caps (50 pages, 100K total chars) but does not explicitly state when not to use or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Provides behavioral context beyond empty schema: mentions per-session idle time and 30-minute timeout, advising to refresh or save. No annotations, so description carries the burden adequately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, clear and front-loaded. Efficient but could benefit from bullet points for structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers main functionality and adds actionable tip about session timeout. No output schema, but description sufficiently informs about return content.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters, so baseline 4 applies. Description adds no parameter info, but none needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it shows pool stats, resource usage, and session summaries. Distinguishes from sibling tools like session_create or session_destroy by focusing on monitoring.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for monitoring pool health and session idle times, but does not explicitly state when to use this tool versus alternatives like session_health or session_list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
profile_deleteDelete Auth ProfileA
Delete a saved persistent browser profile and all its data.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Profile name to delete. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states the tool deletes all data, signaling destructive behavior. This provides transparency beyond the absence of annotations, though it could mention prerequisites like profile existence.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no extraneous information. The description is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description covers the core action and effect. Lacks mention of success/failure response, but overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents the 'name' parameter. The description adds no further detail about the parameter, meeting but not exceeding expectations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete') and the resource ('saved persistent browser profile and all its data'), distinguishing it from siblings like profile_list or profile_warm.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., profile_warm, profile_list). The description only states what it does, not when it's appropriate compared to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Profile name to save as (e.g. 'google-auth', 'my-chrome'). | |
| cdp | No | CDP endpoint. Default: http://localhost:9222 | http://localhost:9222 |
| domains | No | Only capture cookies from these domains. Omit for all cookies. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It explains the process and startup requirement but omits details like overwrite behavior, Chrome version compatibility, or return value. It adequately covers the main action but not edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences plus a command, highly efficient and front-loaded. Every sentence adds value, with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no output schema, the description is largely complete: it explains the action, setup, and benefits. Missing details on whether it overwrites existing profiles or captures only cookies (not storage) keeps it from a perfect score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so description adds little beyond schema. The description implicitly links 'CDP' to the cdp parameter and 'auth cookies' to domains, but does not elaborate on parameter semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description precisely states the tool's action: connect to Chrome via CDP, capture auth cookies, and save as a Leapfrog profile. It clearly distinguishes the benefit (real auth, reCAPTCHA trust, isolated session) and differentiates from sibling profile tools like profile_list and profile_delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing real Chrome auth in isolation and provides a prerequisite command to start Chrome. However, it lacks explicit when-not-to-use or alternative suggestions, though no direct alternative exists among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
profile_listList Auth ProfilesA
List saved persistent browser profiles with their auth status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description assumes read-only behavior but does not explicitly state side effects, idempotency, or rate limits. With zero annotation coverage, description should disclose these traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single concise sentence, no fluff. Could be slightly more structured but is appropriate for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool is simple with zero params and no output schema. Description covers what it returns (list with auth status). Missing details like ordering or empty results, but adequate for the complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist; schema coverage is 100%. Description does not need to add parameter details, but it effectively describes the tool's action. Baseline 4 for zero params is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action (list), resource (saved persistent browser profiles), and included data (auth status). Differentiates from siblings like profile_delete and session_list_profiles.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., session_list_profiles). No context about typical use cases or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | Session ID (must be a profile-based session). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the browsing behavior, duration (60-90 seconds), and state storage. It does not contradict any annotations. Could mention that it modifies profile history, but the core behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, using four sentences to convey purpose, benefit, state behavior, and requirement. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's operation well, but lacks detail on return values or output (no output schema). However, for a warming tool, the primary effect is side-effect driven, so this is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description for sessionId. The tool description repeats the requirement but adds no new semantics beyond the schema, meeting the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: warming up a browser profile by browsing trusted sites. It explains the rationale (improving reCAPTCHA trust scores) and distinguishes from sibling tools that are about deleting, listing, or creating profiles.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies that a sessionId of an existing session with a profile is required, and mentions that the warm-up state is stored to avoid repetition. However, it lacks explicit when-not-to-use guidance or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screenshotScreenshotB
Capture a screenshot of the current page. Returns the image inline as base64. Optionally save to disk with savePath.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | Session ID. | |
| fullPage | No | Capture full scrollable page. | |
| selector | No | CSS selector to capture a specific element. | |
| savePath | No | Optional file path to save the screenshot to disk. If omitted, image is returned inline only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses return format (inline base64) and optional disk saving, but does not mention file overwrite behavior, potential failure modes, or interaction with parameters like fullPage/selector. With no annotations, more behavioral detail would be beneficial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, concise and to the point. Every word contributes, though a bit more structure could improve readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers basic functionality and return format, but lacks details on error handling, file saving behavior (e.g., overwrite, format), and edge cases. With 4 parameters and no output schema, more completeness is warranted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. Description adds minimal value by restating savePath's optionality. No additional meaning for fullPage or selector beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool captures a screenshot and returns it as base64. The verb 'Capture' and resource 'screenshot of the current page' are specific. While it does not explicitly distinguish from siblings like 'snapshot' or 'extract', the action is distinct enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as 'snapshot' or 'extract'. The description lacks context about prerequisites, typical use cases, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| profilePath | No | Path to a Playwright storageState JSON file for pre-authenticated sessions. | |
| viewport | No | Custom viewport. Default: 1280x720. | |
| userAgent | No | Custom user agent string. | |
| locale | No | Browser locale (e.g. 'en-US', 'fr-FR'). | |
| timezoneId | No | Timezone ID (e.g. 'America/New_York', 'Europe/London'). | |
| geolocation | No | Geolocation to emulate. | |
| permissions | No | Permissions to grant (e.g. ['geolocation', 'notifications']). | |
| colorScheme | No | Preferred color scheme. | |
| acceptDownloads | No | Whether to accept downloads. Default: true. | |
| stealth | No | Enable/disable stealth mode for this session. Default: true (uses global setting). | |
| proxy | No | Per-session proxy configuration. Each session can use a different proxy. | |
| profile | No | Profile shorthand name (e.g. 'github', 'gmail'). Uses persistent Chrome profile at ~/.leapfrog/chrome-profiles/{name}/. | |
| headed | No | Run browser with visible UI for this session. Overrides LEAP_HEADED env var. | |
| extensions | No | Paths to unpacked Chrome extensions to load. | |
| cdp | No | CDP endpoint URL to connect to a running Chrome instance (e.g. 'http://localhost:9222'). | |
| clientId | No | Client identifier for per-client pool partitioning. Used with LEAP_MAX_SESSIONS_PER_CLIENT. | |
| pinned | No | Pin this session to prevent idle timeout cleanup. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses isolation, no cookie leakage, pool limits, auto-expiry, and keep-alive necessity. It lacks details on error scenarios or authorization, but the behavioral traits are well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a concise 5-sentence paragraph, front-loaded with the core purpose and progressively adding details. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (17 parameters, no output schema), the description covers essential behavioral aspects like isolation, limits, and keep-alive. It could mention error handling or pool saturation, but it is adequate for a creation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all 17 parameters, so the baseline is 3. The description adds some high-level context (e.g., session isolation) but does not significantly enhance parameter understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a new isolated browser session with its own cookies and state, distinguishing it from related tools like session_destroy or session_list. It specifies the action, resource, and key traits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear guidance on when to use the tool, including the pool limit and auto-expiry. It recommends a keep-alive pattern for long sessions, but does not explicitly contrast with session_create_batch or mention when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sessions | Yes | Array of sessions to create. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description adequately discloses key behaviors: concurrency, isolation, optional navigation, and window grid reflow. It lacks details on error handling or rate limits, but for a creation tool this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with four focused sentences, each adding distinct value: speed comparison, optional navigation, return value, and window placement. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity and absence of output schema, the description covers purpose, usage, behavior, and return value. The schema handles parameter details, making the description complete for effective tool invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema achieves 100% description coverage for the 'sessions' parameter, so the description adds minimal value beyond stating optional URL navigation. Baseline score of 3 is appropriate as schema already documents parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates multiple isolated browser sessions concurrently, with a specific speed advantage over the sibling tool session_create. It also mentions optional navigation and return of session IDs, providing a precise verb+resource purpose that distinguishes it from related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly compares batch creation to sequential session_create calls, indicating when to use this tool for efficiency. However, it does not mention scenarios where individual creation might be preferred, such as needing per-session control or error isolation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_destroyDestroy Browser SessionA
Close and clean up a browser session. Frees a pool slot.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | Session ID to destroy. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the tool closes and cleans up a session and frees a pool slot, indicating destructive behavior. However, it does not detail side effects, reversibility, or waiting behavior, which would enhance transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no wasted words. The key information (action, resource, effect) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple destroy operation with one parameter and no output schema, the description is adequate: it explains the effect on pool slots. Minor missing details about return value or async behavior do not significantly impair completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% coverage with a description for sessionId ('Session ID to destroy.'). The tool description adds no additional meaning beyond the schema, placing it at baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Close and clean up') and the resource ('browser session'), with additional context about freeing a pool slot. It distinguishes itself from sibling tools like session_create and session_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives (e.g., tab_close). The description implies usage for cleanup, but lacks when-not-to-use or alternative references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | Session ID. | |
| name | No | Recording name. Default: auto-generated. | |
| keepExtracts | No | Include extract steps in the recording. Default: false. | |
| format | No | Output format. Default: json. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that it creates a JSON script from mutating actions with @eN refs resolved to stable selectors. No annotations provided, so description carries full burden. However, it does not mention idempotency, side effects, or whether it modifies the session.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, no wasted words. Front-loaded with purpose and key details. Clear structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, so description should explain return value. It does not describe the structure of the exported recording or the JSON script. Also missing prerequisites like session existence. Adequate but leaves gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all parameters with descriptions (100% coverage). Description adds value by explaining the specific role of the 'format' parameter and its compatibility with the execute tool, but no extra detail for other parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it exports session action history as a replayable recording, with two distinct output formats. Differentiates from siblings like session_export_trace and session_replay by specifying 'action history' and 'replayable recording'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance to use format='playwright' for Playwright scripts compatible with execute tool. Implicitly suggests when to use each format, though lacks explicit when-not-to-use or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | Session ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description covers the key behavior: exports a trace file, requires a flag, and points to a viewer. It does not detail the output format or side effects, but for a simple export it is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two clear sentences: the first states purpose and prerequisite, the second provides post-usage information. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one parameter and no output schema. The description sufficiently covers the export action, prerequisite, and viewer location. Context from sibling tools (e.g., session_export) reinforces its specific role.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (sessionId) with full schema description coverage. The description adds no extra meaning beyond 'Session ID,' so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Export a Playwright trace file for a session.' with a specific verb (Export) and resource (trace file), clearly distinguishing it from sibling tools like session_export.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a prerequisite ('Requires LEAP_TRACE=true') and a viewing tip, but lacks explicit guidance on when to use vs. alternatives. The context is clear for a straightforward export.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_healthSession Health CheckA
Check if a session is healthy (browser connected, page responsive). Omit sessionId to check all sessions. Quick diagnostic for debugging.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | No | Session ID. Omit to check all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries full burden. It discloses what is checked (browser connected, page responsive) but does not mention side effects, authentication needs, or rate limits. Adequate for a simple read operation but lacks deeper behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, no wasted words. Highly concise and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacks output schema and does not describe return format. For a diagnostic tool, agent would need to know if result is boolean, status string, etc. Given simplicity, minimally acceptable but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage for the single parameter, and the description repeats the schema's 'Omit to check all' instruction. No additional semantic value beyond what schema provides, so baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Check' and the resource 'session health' with specific criteria (browser connected, page responsive). It distinguishes from sibling tools like session_list or session_memory by emphasizing diagnostic purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage condition: 'Omit sessionId to check all sessions.' Implies use for debugging with 'Quick diagnostic for debugging.' Does not explicitly state when not to use or list alternatives, but context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_listList Browser SessionsA
List all active browser sessions with their URLs and idle times.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It does not disclose potential side effects, authentication requirements, or performance characteristics beyond the obvious read-only nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that conveys the essential information with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (no parameters, no output schema, a straightforward list operation), the description is complete and sufficient for an agent to understand its purpose and expected return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema coverage is 100% trivially. Per guidelines, 0 parameters yields baseline 4, and the description adds no unnecessary parameter info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (list), the resource (active browser sessions), and the information returned (URLs and idle times). It effectively distinguishes from sibling tools like session_list_profiles or session_create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as session_list_profiles or session_health. No context or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_list_profilesList Saved ProfilesA
List all saved authentication profiles.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must bear the burden of behavioral disclosure. It only states 'List all saved authentication profiles,' which implies a read-only operation, but it does not explicitly confirm non-destructiveness, safety, or output format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no extraneous information. Every word is necessary and directly conveys the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema and minimal description, the tool is simple (lists profiles). However, adding details about the return format (e.g., names, IDs) would improve completeness for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and schema coverage is 100% (empty). With no parameters, the description does not need to add parameter details, so it meets the baseline of 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List all saved authentication profiles' clearly states the action (List), resource (saved authentication profiles), and scope. It distinguishes the tool from siblings like profile_delete or profile_save, which perform different operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as profile_warm or session_save_profile. No context about prerequisites or outcomes is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_memorySession Action HistoryA
Recall what actions were performed in this session. Useful after context window compression to recover lost context.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | ||
| limit | No | Number of recent actions to return. Default: 20. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It only states recall without explaining read-only nature, error handling, or data ordering. This is minimal for a tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, each valuable. The first states purpose, the second gives a usage hint. No fluff, front-loaded, and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with 2 params and no output schema, the description covers purpose and one use case. However, it lacks details on return format, ordering, or failure behavior, making it merely adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 50% coverage (limit described, sessionId not). The description does not mention or elaborate on any parameters, failing to add meaning beyond the schema. Given low coverage, the description should compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Recall what actions were performed in this session.' This distinguishes it from sibling tools like session_create or session_destroy by focusing on history recall.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides a use case: 'Useful after context window compression to recover lost context.' It doesn't specify when not to use or name alternatives, but the sibling context implies this is the dedicated recall tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | Session ID. | |
| recording | Yes | Recording JSON string (from session_export). | |
| params | No | Parameter overrides for {{placeholder}} values. | |
| onError | No | Error handling: stop (default) or skip. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states 'executes each step directly against the browser', implying mutation and interaction, but does not detail potential destructive actions, permissions needed, or other behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the core action and using no wasted words. It is appropriately sized and structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters and no output schema, the description combined with the schema covers the key aspects: replay action, override mechanism, and error handling. It lacks details about session prerequisites and post-replay effects, but overall it is fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds context that params override placeholders and onError can skip failures, but this does not significantly enhance understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool replays a recording in the current session, executing each step against the browser. The verb 'Replay' and resource 'recording in the current session' are specific, and the tool is distinguished from siblings like session_export or execute.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides instructions on how to use the tool, such as overriding placeholders and setting onError='skip', but does not guide when to use this tool over alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | Session ID to save. | |
| name | Yes | Profile name (e.g. 'google', 'github'). Overwrites if exists. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden. It discloses that the operation saves to disk, overwrites if name exists (from schema), and returns a profile path. It adds value by explaining the output's role in session_create.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with no unnecessary words. It is front-loaded with the main action followed by usage guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple save operation with 2 parameters and no output schema, the description covers the core task, usage flow, and return value hint. It omits failure cases or permissions but is sufficient for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both parameters. The description adds no additional meaning beyond the schema, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Save a session's cookies and auth state to disk', with a specific verb and resource. It distinguishes from sibling tools like session_create (which creates sessions) and profile_delete (deletes profiles).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage context: 'Use this after logging in to a site so future sessions can restore that login' and links to session_create's profilePath. However, it does not explicitly exclude situations where it should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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').
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | Session ID. | |
| selector | No | CSS selector to scope snapshot to a page region. | |
| maxChars | No | Max output chars. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must carry behavioral info. Mentions 're-snapshot' implying refresh, but does not describe side effects, whether previous snapshot is cleared, or performance implications. Adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states purpose, second gives usage guidance and a tip. Efficient and front-loaded with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers main purpose, when to use, and key parameter advice. Missing explicit description of what the snapshot returns (no output schema), but typical behavior is implied (refreshes internal state). Reasonably complete for a three-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds value by explaining that 'selector' scopes the snapshot and reduces tokens, which goes beyond the schema's 'CSS selector' label.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Re-snapshot the current page for fresh @eN refs', which is a specific verb and resource. Differentiates from sibling tools like 'act' and 'navigate' by focusing on refreshing the snapshot state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises use after 'act' when re-orienting is needed and recommends 'selector' to reduce tokens. Provides concrete examples ('form', '#results'). Lacks explicit when-not-to-use but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | Session ID. | |
| tabIndex | No | Tab index to close. Omit to close the active tab. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that the tool cannot close the last tab and returns a snapshot of the new active tab. This is sufficient for a simple close operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences that front-load the core action, parameter specification, constraint, and return value. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a simple close tool: defines behavior, target selection, constraint, and output. No output schema but return is described. No annotations needed beyond this.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and already describes both parameters well. The description adds little new: 'by index' is implied in the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool closes a tab, specifies how to identify the tab (by index or default active), and includes a key constraint (cannot close last tab). This distinguishes it from sibling tools like 'tabs_list' and 'tab_switch'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit when-not-to-use condition: cannot close the last remaining tab. Does not explicitly name alternatives, but the constraint itself guides appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | Session ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It explains read-only listing behavior and automatic tracking of new tabs, which is sufficient for this simple tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with front-loaded purpose. No wasted words, every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one parameter and no output schema, the description fully explains what is returned and includes helpful context about automatic tab tracking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with description 'Session ID.' The description adds no extra info about the sessionId parameter beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists all open tabs in a session and specifies the shown fields (index, URL, title, active tab). It distinguishes from siblings like tab_close and tab_switch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing tabs, but lacks explicit when-to-use vs alternatives. No exclusions or prerequisite guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | Session ID. | |
| tabIndex | Yes | Tab index to switch to. -1 for last (most recent) tab. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses that it returns a snapshot of the new tab, but does not mention any destructive effects, permissions, or rate limits. Adequate for a simple tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, no extraneous words. Front-loaded with purpose, efficiently conveys key details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, explains return value. Covers special behavior of tabIndex. Lacks details on what snapshot contains, but sufficient for a simple tool with two parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (baseline 3). Description adds meaning by explaining the -1 value for tabIndex and its utility for popups, going beyond the schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action (switch) and resource (tab), including special behavior for -1 to switch to most recent tab. Differentiates from sibling tools like tab_close and tabs_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides specific use case for -1 (popups), implicitly indicating when to use. Lacks explicit when-not-to-use or alternatives, but the purpose is clear and context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | Session ID. | |
| condition | Yes | What to wait for. | |
| target | No | @eN ref or CSS selector (for element/text conditions). | |
| text | No | Text to find (for text condition) or URL pattern (for navigation). | |
| js | No | JS expression that should return truthy (for js condition). | |
| timeout | No | Max wait time in ms. Default 10000, max 30000. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the return of a fresh snapshot after the wait and the timeout behavior (default 10000, max 30000), which are important behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no wasted words. The first sentence states the primary purpose, and the second adds key details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description mentions the return value (snapshot) and covers all condition types. The schema handles parameter details, making the description complete for a wait tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter described. The description does not add additional semantics per parameter beyond what the schema provides, but it provides overall context (e.g., return behavior). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Wait for a condition before proceeding.' It lists supported conditions, making it specific and distinct from siblings like 'wait_for_human'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists the supported conditions, implying when to use each. It does not explicitly exclude cases or mention alternatives, but the enumeration provides sufficient context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | Session ID. | |
| reason | Yes | Why human help is needed (e.g. 'CAPTCHA detected', 'Login required'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description discloses that the tool blocks until user clicks 'Done' and returns success on resolution. No annotations provided, so description carries the burden; it adequately explains the blocking and completion behavior without contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning their place: first states the action, second explains when to use, third explains blocking behavior and return. Front-loaded with the main purpose. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no output schema, the description covers the return value, blocking behavior, and parameter meanings (via examples). It gives sufficient context for correct invocation and expectation management.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (both parameters described). Description adds value by giving examples for the 'reason' parameter, explaining its purpose beyond the schema. It provides context but no additional syntax.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool pauses and requests human intervention by showing an overlay. It lists specific use cases (CAPTCHA, login wall, etc.) and distinguishes from siblings as the only human-interaction tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use (CAPTCHA, login wall, any human action). Implicitly through blocking behavior, it's clear it's for blocking situations. Could add what not to use it for, but given its specificity, it's well-guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have distinct purposes, but 'profile_list' and 'session_list_profiles' appear to overlap significantly (both list saved profiles), and the 'act'/'execute'/'batch_actions' trio requires careful reading to distinguish (single interaction vs. arbitrary script vs. sequential batch). Domain-specific prefixes (session_, profile_, tab_) help but don't eliminate all ambiguity.
Naming uses functional prefixes (session_, profile_, api_, network_) which aids organization, but suffix patterns are inconsistent: some use verbs (session_create), some nouns (console_log), and some are just verbs (act, execute, navigate). Mix of snake_case throughout, but 'tabs_list' uses plural while 'tab_close' and 'tab_switch' use singular, showing lack of strict convention.
With 33 tools, this significantly exceeds the threshold where count becomes burdensome (25+). While the domain (browser automation) is complex, the sheer volume makes tool selection difficult for agents, and several tools feel like they could be consolidated (e.g., the various session export tools, profile listing redundancies).
The surface covers most browser automation needs (navigation, extraction, network interception, scripting), but has notable lifecycle gaps: 'session_create' exists with pool limits (15 sessions), yet there's no 'session_close' or 'session_delete' to manually free resources. Similarly, 'tab_close' and 'tab_switch' exist but 'tab_create'/'tab_open' is missing, forcing workarounds via 'act'.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Stealth web browser for agents: search, fetch, click, download and type in persistent MCP sessions.
A paid remote MCP for AI agent browser MCP session, built to return verdicts, receipts, usage logs,
A paid remote MCP for AI agent browser approval MCP, built to return verdicts, receipts, usage logs,
Autonomous cloud agent tasks: real browser + your tools, structured evidence-backed results.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables AI agents to control multiple independent browser instances in parallel with process-level isolation, supporting any backend MCP server for browser automation.271,44517MIT
- AlicenseNot gradedqualityCmaintenanceSecurity-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
- AlicenseNot gradedqualityDmaintenanceMCP 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.63MIT
- AlicenseBqualityAmaintenanceProvides AI agents with a real browser environment for web automation, memory, and secure credential management through 15 MCP tools.15MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/anthonybono21-cloud/leapfrog'
If you have feedback or need assistance with the MCP directory API, please join our Discord server