Skip to main content
Glama

MCP Stealth Chrome

160 tools for AI agents that bypass Cloudflare, Turnstile, reCAPTCHA, and modern anti-bot systems — with an LLM-optimized action kit (describe_page, smart_fill, workflow_run, vision-LLM element locator) and a self-sufficient web-research kit (web_search, scrape_markdown, deep_research, social_research) layered on top of standard automation.

PyPI version License: MIT Python 3.11+

Browser stealth when you need eyes. TLS-perfect HTTP when you need speed.


Built on nodriver (direct CDP, no WebDriver leak) + curl_cffi (TLS fingerprint spoofing) + FastMCP.

One-line install with uvx:

claude mcp add stealth-chrome -- uvx mcp-stealth-chrome@latest

Proven on Real Sites

Site

Challenge

Result

bot.sannysoft.com

All fingerprint tests

✅ 100% pass (proof)

2captcha.com/demo/cloudflare-turnstile

Turnstile visible

✅ Passed via click_turnstile() (proof)

arh.antoinevastel.com/.../areyouheadless

Headless-chrome detection

✅ "You are not Chrome headless" (proof)

browserscan.net/bot-detection

WebDriver/Selenium/CDP/Headless

✅ All categories "Normal" (proof)

tls.browserleaks.com

TLS JA3/JA4 fingerprint

✅ Real Chrome/Firefox/Safari JA3 hashes (see output below)

httpbin.org

Multi-instance isolation

✅ Two browsers parallel

google.com/recaptcha/api2/demo

reCAPTCHA v2 image challenge

5/5 = 100% via solve_recaptcha_ai() (proof)

🎯 click_turnstile → Cloudflare Turnstile Bypass

One-liner bypass on supported widget shapes. click_turnstile() → checkbox switches from "Verify you are human" ☐ to "Success!" ✅.

✅ Works on: 2captcha.com/demo/cloudflare-turnstile, dash.cloudflare.com login, nopecha.com/captcha/turnstile (via template-match fallback since v0.1.7), any page embedding the standard CF Turnstile widget with [data-sitekey] / .cf-turnstile / challenges.cloudflare.com iframe.

❌ Does NOT work on: Cloudflare managed-mode interstitials — the "Just a moment..." full-page challenge (e.g. nopecha.com/demo/cloudflare). CF scores the click as non-human and resets the Ray ID. For those pages use solve_captcha with a CAPSOLVER_KEY, or storage_state_load with a pre-warmed session.

🧪 bot.sannysoft.com → All Fingerprint Tests Pass

navigator.webdriver missing, WebDriver Advanced passed, Chrome present, Plugins detected correctly, PHANTOM_* probes all ok, WebGL shows real Apple M1 Pro GPU — nodriver's CDP-direct approach leaves zero automation traces.

🤖 areyouheadless → Headless Chrome Detection

Antoine Vastel's public headless-detection test says "You are not Chrome headless" — even though we run Chrome controlled programmatically.

🔍 browserscan.net/bot-detection → All Categories Normal

14 signals checked (WebDriver, WebDriver Advance, Selenium, NightmareJS, PhantomJS, Awesomium, Cef, CefSharp, Coaches, FMiner, Born, Phantomas, Rhino, Webdriverio, Headless Chrome, CDP, Dev Tool, Native Navigator) — every one returns "Normal".

🔐 TLS Fingerprint Proof

http_request(impersonate="chrome") vs vanilla Python httpx — tls.browserleaks.com:

Vanilla httpx:       JA3: 37f7d09ced1a845dc48872abc1a29d7b   UA: python-httpx/0.28.1    ❌ BOT
Chrome impersonate:  JA3: f830262a93191fd695c65531282d5657   UA: Chrome/146.0.0.0         ✅ real Chrome
Firefox impersonate: JA3: 6f7889b9fb1a62a9577e685c1fcfa919   UA: Firefox/147.0            ✅ real Firefox
Safari impersonate:  JA3: ecdf4f49dd59effc439639da29186671   UA: Safari/605.1.15          ✅ real Safari

Each impersonation produces authentic browser JA3/JA4 — Cloudflare, DataDome, and Akamai cannot distinguish our HTTP requests from real browsers.

🏆 reCAPTCHA v2 Benchmark (5 consecutive runs)

Fresh profile + mouse drift warmup + an OpenAI-compatible vision model:

Run 1: ✅ 2169ch token, tiles=[3,4,7],         146s
Run 2: ✅ 2126ch token, tiles=[0,2,4,7],        80s
Run 3: ✅ 2169ch token, tiles=[1,2,4,8],       143s
Run 4: ✅ 2148ch token, tiles=[1,4,5,6,8,9],  126s
Run 5: ✅ 2169ch token, tiles=[0,3,4],          69s

Success rate: 5/5 = 100%
Avg solve:   113s
Token range: 2126–2169 chars (all Google-accepted)

First OSS MCP with proven 100% reCAPTCHA v2 bypass via BYO-API-key — works with Claude, gpt-4o, gpt-5.x, Gemini, Groq, local Ollama, any OpenAI-compatible vision model.

Method: neutral prompt language bypasses LLM safety filter + auto-refresh challenge when vision returns empty + dynamic 3x3/4x4 grid detection + humanized mouse behavior.

Related MCP server: ScrapeLab MCP

Key Differentiators

Compared to the leading Python stealth MCP (vibheksoni/stealth-browser-mcp, 476⭐):

Feature

mcp-stealth-chrome

vibheksoni

Tools

143

90

LLM-optimized kit (describe_page, smart_fill, vision_locate, workflow_run, assert_*)

Unique

Network body capture + session-bridged HTTP

Unique

click_turnstile one-liner

✅ Embed widgets + template fallback

Dual-mode HTTP (curl_cffi TLS)

Unique

AI Vision reCAPTCHA solver (Claude)

Unique

Precision Mouse Kit (11 tools)

Unique

Multi-instance + idle reaper

Install

uvx zero-setup

git clone + pip

Sister Firefox package

mcp-camoufox

Network interception hooks

⚠️ basic

AI-generated Python hooks

Pixel-perfect element cloning

⚠️ basic

300+ CSS + events

Different niches: we focus on anti-bot bypass, they focus on UI reverse-engineering. Both MCPs work great together.

Quick Install (3 commands per OS)

macOS:

curl -LsSf https://astral.sh/uv/install.sh | sh        # install uv
brew install --cask google-chrome                       # install Chrome (skip if already installed)
claude mcp add stealth-chrome --scope user -- uvx mcp-stealth-chrome@latest

Linux (Ubuntu/Debian):

curl -LsSf https://astral.sh/uv/install.sh | sh
sudo apt install -y google-chrome-stable                # or chromium-browser
claude mcp add stealth-chrome --scope user -- uvx mcp-stealth-chrome@latest

Windows (PowerShell):

powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
winget install Google.Chrome
claude mcp add stealth-chrome --scope user -- uvx mcp-stealth-chrome@latest

No Chrome? Server gives a friendly error with install instructions before failing.

See INSTALL.md for detailed per-client setup + troubleshooting. Per-client snippets below:

Global (available in all projects):

claude mcp add stealth-chrome --scope user -- uvx mcp-stealth-chrome@latest

Project only (current project):

claude mcp add stealth-chrome -- uvx mcp-stealth-chrome@latest

Global — add to config file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "stealth-chrome": {
      "command": "uvx",
      "args": ["mcp-stealth-chrome@latest"]
    }
  }
}

Claude Desktop is always global — no project-level config.

Global — Preferences > Features > MCP, or ~/.cursor/mcp.json:

Project.cursor/mcp.json in project root:

{
  "mcpServers": {
    "stealth-chrome": {
      "command": "uvx",
      "args": ["mcp-stealth-chrome@latest"]
    }
  }
}

Global~/.windsurf/mcp.json:

Project.windsurf/mcp.json in project root:

{
  "servers": {
    "stealth-chrome": {
      "command": "uvx",
      "args": ["mcp-stealth-chrome@latest"]
    }
  }
}

Global — VS Code settings or ~/.continue/config.json:

Project.vscode/mcp.json in project root:

{
  "mcpServers": {
    "stealth-chrome": {
      "command": "uvx",
      "args": ["mcp-stealth-chrome@latest"]
    }
  }
}

Settings → Extensions → MCP Servers, or edit ~/.config/zed/settings.json:

{
  "context_servers": {
    "stealth-chrome": {
      "command": {
        "path": "uvx",
        "args": ["mcp-stealth-chrome@latest"]
      }
    }
  }
}

🔑 BYOK (Bring Your Own Key) — Optional

mcp-stealth-chrome is fully functional without any API key — 157 of 160 tools work out of the box, including click_turnstile (Cloudflare Turnstile bypass), TLS-perfect HTTP, multi-instance, DevTools-level perf/coverage/emulation, the full LLM-optimized kit (describe_page / smart_fill / workflow_run), the web-research kit (web_search / scrape_markdown / deep_research / social_research — no search-API key needed), and all scraping tools.

API keys are optional — only needed for 3 vision/solver tools:

Tool

Purpose

Required key

Cost

solve_recaptcha_ai

reCAPTCHA v2 image challenges via AI vision

Any vision-capable LLM (OpenAI-compat / Claude / Ollama)

~$0.005-0.03 per solve

vision_locate

Find DOM element by natural-language description ("the red Create button at bottom right")

Same vision provider as solve_recaptcha_ai

~$0.001-0.01 per call

solve_captcha

Turnstile, reCAPTCHA v2, reCAPTCHA v3, hCaptcha via paid solver

CapSolver API

~$0.80-1.00 per 1000

Everything else (click_turnstile, verify_cf, storage_state, http_request, detect_anti_bot, clone_chrome_profile, etc.) works 100% without any key.

When BYOK Matters

  • solve_recaptcha_ai → auto-solve reCAPTCHA v2 image challenges ("select all images with cars") via vision LLM. Best for: low-volume automation where you want self-hosted / BYO-key.

  • solve_captcha → solve via CapSolver's dedicated captcha-solving service. Best for: production reliability, high success rate (95%+), handles multiple types (Turnstile + reCAPTCHA v2 + v3 + hCaptcha + more).

You can use either one or both depending on your budget and reliability needs. Add to the MCP env block.

⚠️ Model Must Be Multimodal (Vision-Capable)

solve_recaptcha_ai sends a screenshot + text prompt to the model — text-only models will fail silently.

Vision-capable (supported):

  • OpenAI: gpt-4o, gpt-4o-mini, gpt-4-vision-preview, gpt-5.x

  • Anthropic: claude-opus-4-7, claude-sonnet-4-*

  • Local Ollama: llava, llava-llama3, bakllava, llama3.2-vision

  • Groq: llama-3.2-90b-vision-preview

  • Custom: any model documented as "multimodal" / "vision"

Text-only (NOT supported):

  • gpt-3.5-turbo, llama3 (non-vision variant), claude-3-haiku (limited)

Config Options

{
  "mcpServers": {
    "stealth-chrome": {
      "command": "uvx",
      "args": ["mcp-stealth-chrome@latest"],
      "env": {
        "ANTHROPIC_API_KEY": "sk-ant-xxxxx",
        "ANTHROPIC_MODEL":   "claude-opus-4-7"
      }
    }
  }
}

Get key at console.anthropic.com.

"env": {
  "OPENAI_API_KEY": "sk-proj-xxxxx",
  "OPENAI_MODEL":   "gpt-4o"
}

Get key at platform.openai.com.

"env": {
  "OPENAI_BASE_URL": "https://your-provider.example.com/v1",
  "OPENAI_API_KEY":  "your-api-key",
  "OPENAI_MODEL":    "model-name-that-supports-vision"
}

Uses OpenAI SDK standard env names (OPENAI_API_KEY, OPENAI_BASE_URL). Works with any provider exposing /v1/chat/completions with image_url content support.

Example — Groq:

"env": {
  "OPENAI_BASE_URL": "https://api.groq.com/openai/v1",
  "OPENAI_API_KEY":  "gsk_xxxxx",
  "OPENAI_MODEL":    "llama-3.2-90b-vision-preview"
}
ollama pull llava
"env": {
  "OPENAI_BASE_URL": "http://localhost:11434/v1",
  "OPENAI_API_KEY":  "ollama",
  "OPENAI_MODEL":    "llava:latest"
}

Fully offline, no cost. Accuracy varies by model.

"env": {
  "CAPSOLVER_KEY": "CAP-xxxxxxxxxxxxx"
}

Enables solve_captcha tool. ~$0.80/1000 solves for Turnstile. Get key at capsolver.com.

Provider Resolution Priority

  1. Explicit args to solve_recaptcha_ai(provider=, base_url=, api_key=, model=)

  2. OPENAI_API_KEY + OPENAI_BASE_URL + OPENAI_MODELstandard (OpenAI SDK convention)

  3. AI_VISION_API_KEY + AI_VISION_BASE_URL + AI_VISION_MODEL — deprecated (removed in v0.2.0)

  4. ANTHROPIC_API_KEY + ANTHROPIC_MODEL — Claude

Legacy AI_VISION_* env still work but emit DeprecationWarning. Migrate to OPENAI_* standard for future compatibility.

Requirements

  • Python 3.11+

  • uv installed: curl -LsSf https://astral.sh/uv/install.sh | sh

  • Chrome or Chromium browser (auto-detected by nodriver)

Honest reporting (v0.9.0)

Tools that report a rosier state than reality are the worst failure mode for an agent: the caller has no way to notice, so a wrong "success" spreads into wrong conclusions. These no longer lie:

Behaviour

Before

Now

click_text / click_role on a covered button

"clicked" — while nothing happened

Refuses and names the blocker: NOT clicked — obscured by <div#overlay> at {x,y}

Click that lands but changes nothing

"clicked"

verify=True (default) reports clicked but NO page change detected

evaluate on async code

always null

Promises are awaited (await_promise=True by default)

console_get with nothing captured

bare [] — "no errors" or "never listening"?

{attached, capturing, since, total, messages}; capture survives navigation and records uncaught exceptions

get_text(selector=...)

textContent — inlined GTM/JSON a human never sees

innerText semantics; raw=True opts back in

screenshot(return_base64=True)

emitted a blob that got the whole result rejected

refuses over B64_INLINE_LIMIT with the path + how to shrink

mouse_click_xy

pressed without hovering — hover-only menus unreachable

hovers first (move_first=True)

Lost CDP session

opaque -32001

names the condition and the exact recovery

browser_recover + relaunch

could silently switch profile → logins looked wiped

profile affinity keeps the process on its profile

New diagnostics: assert_clickable (would a click reach this? what's in the way? — without clicking) and wait_for_change (click-then-wait in one call, with an honest timeout). screenshot(region_selector="css") measures the crop box for you, removing the CSS-px-vs-device-px guesswork.

Tool Categories (160)

⭐⭐⭐ Self-Sufficient Web Research (new) — replaces firecrawl/tavily for most tasks

Browserless-first (curl_cffi), escalates to the stealth browser only when a page is anti-bot blocked. Runs fully headless/API-mode and is ~10–12× lighter than driving Chrome for normal pages (verified: HTTP path 10–12× faster than headless render on example.com / Wikipedia).

Tool

Purpose

web_search

SERP search with no browser and no API key (Bing default, Brave/DuckDuckGo/Exa optional) → {title,url,snippet}

scrape_markdown

One URL → clean LLM-ready markdown (stdlib, ~70–98% smaller than raw HTML)

smart_fetch

HTTP-first; auto-escalates to the stealth browser only when the request is blocked

deep_research

search → fetch top-N sources → markdown + citations, in one call

search_page

Grep the current page's text (zero-LLM, instant)

social_digest

Structured, account-independent Reddit community digest (votes/comments/age)

github_read

Repo / README / issues / releases via GitHub REST API (pure HTTP)

youtube_read

Video metadata + transcript (native timedtext, yt-dlp fallback)

social_research

Social-media market/competitor research — WHO sells/makes X + HOW loud. Sweeps Reddit/Threads/Facebook/X via OSINT: Google/Bing site:<platform> dorks (no login, clean, non-personalized) + native in-platform search. Recommends cookie_import for login-walled platforms (Threads/FB/X/IG) to unlock engagement + fresh posts; pass cookie_files="a.json,b.json" to auto-(re)import sessions each call — crash-resilient (survives a browser restart that drops the session).

⭐⭐⭐ Dual-Mode HTTP (unique)

Tool

Purpose

http_request

TLS-perfect HTTP via curl_cffi (chrome/firefox/safari impersonation)

http_session_cookies

Inspect which browser cookies match a URL

session_warmup

Natural browsing pattern (homepage/referer/scroll) before target

detect_anti_bot

Identify CF/DataDome/PerimeterX/Kasada/Imperva on current page

⭐⭐ Precision Mouse Kit (unique)

Tool

Purpose

click_turnstile

CF Turnstile bypass for embed widgets + template-match fallback

click_element_offset

Click at % position inside element (not center)

click_at_corner

Click top-left/right/bottom-left/right of element

find_by_image

OpenCV template match → coordinates

click_at_image

Find image + click its center

mouse_drift

Random Bezier wandering (pass behavioral ML)

mouse_record / mouse_replay

Capture real human mouse patterns, replay

⭐⭐ AI Vision Solver (unique)

Tool

Purpose

solve_recaptcha_ai

Vision LLM picks matching tiles — solve image challenges (auto-clicks anchor checkbox in v0.2.10+)

vision_locate

NL → element coordinates: "the red Create button at bottom right" (optional click=True)

⭐⭐⭐ AI-Agent Action Kit (LLM-optimized, new in v0.3.0)

Designed for LLM-driven workflows — token-efficient page summaries, label-fuzzy form filling, verification primitives, resumable orchestration.

Tool

Purpose

describe_page

Compact JSON summary (title/url/headings/fields/actions/errors/navigation) — ~10× fewer tokens than accessibility_snapshot. wait_stable=True waits for SPA hydration via MutationObserver

smart_fill

Fill form by label text (fuzzy match: exact > prefix > substring > token); native value setter for React/Vue. Returns did_you_mean candidates on miss

paste_text

Full paste-event sequence (ClipboardEvent + DataTransfer + beforeinput inputType:'insertFromPaste') for SolidJS/Svelte 5/Qwik forms that ignore plain dispatchEvent('input')

assert_text_present / assert_url_matches / assert_element_visible

Verification primitives with internal poll-loop

click_and_wait

Click + observe one of navigation / url / text / selector / request / network_idle. Distinguishes real submit from silent invalid-form click

form_introspect

Per-field detail (label, framework binding react/vue/solid/lit, validation state, pattern/length constraints, aria-invalid)

workflow_run

Sequential tool runner with resumable start_at index and stop_on_error. Failure response includes failure_context and resume_with hint

storage_snapshot / storage_diff

Snapshot cookies + localStorage + sessionStorage + url to a named slot, then diff after an action — debug "what did this click actually change?"

detect_and_bypass

One-shot: detect anti-bot wall (CF / DataDome / PX / Akamai / Imperva / Kasada) and apply best bypass we have

⭐⭐ Network + Auth Bridge (new in v0.4.0)

Network capture with response bodies, plus a bridge from browser session into TLS-perfect HTTP for authenticated API debugging.

Tool

Purpose

network_start(capture_bodies=True) + network_get(include_body=True)

Index every request by request_id and lazy-fetch response bodies via CDP Network.getResponseBody (truncated, configurable)

auth_capture

Intercept the next N requests matching a URL pattern and return their headers (Authorization, Cookie, X-CSRF-*) — for SPAs that hold bearer tokens in JS memory

http_request_with_session

Authenticated curl_cffi request that piggybacks on browser cookies + auto-extracts most recent same-host bearer from network_index

wait_for_request

Block until a request matching url_pattern is observed (+ optional method filter, + optional response wait) — replaces setTimeout polling

dialog_auto_handle

Persistent native-dialog handler with type filter (alert / confirm / prompt / beforeunload). Update action without re-arming. Idempotent per tab

⭐⭐ Request Interception — see a request before the server does

Tool

Purpose

dry_run

Explore a logged-in account without changing anything. Blocks POST/PUT/PATCH/DELETE and records what each WOULD have sent (method, URL, headers, body) while reads still work — click the delete button, then read the exact request that was stopped

intercept_start

Pause matching requests and observe / cancel / mock them at the CDP layer — catches XHR and anything the page captured before your script ran, which patching window.fetch cannot

intercept_log

What was seen, plus whether interception is still active — an empty log cannot be mistaken for "the page sent nothing"

intercept_stop

End it early; it also disables itself on a deadline so a forgotten intercept cannot wedge the page

export_curl

Turn a captured request into a runnable curl and an http_request(impersonate='chrome') call. The second form is the point: plain curl replays with a curl TLS fingerprint, which anti-bot systems flag even when every header matches

⭐ Stealth Toolkit

Tool

Purpose

storage_state_save / storage_state_load

Portable session export — bypass Turnstile via reuse

solve_captcha

CapSolver API — Turnstile/reCAPTCHA/hCaptcha

verify_cf

Cloudflare checkbox via OpenCV template match

fingerprint_rotate

UA/lang/platform/timezone via CDP

fingerprint_audit

Audit this browser's OWN fingerprint for the leaks detectors read — in-page, nothing leaves the machine. Weights cross-field consistency (a Windows UA on a MacIntel platform) and states what it cannot see from inside a page (TLS/JA3, IP-vs-timezone)

identity_pin / identity_show

Persist and inspect a stable fingerprint + proxy per browser instance

browser_launch(privacy=True)

Fresh randomized fingerprint + disposable profile removed on close

humanize_click / humanize_type

Bezier+Gaussian for single actions

Local Human Handoff

Tool

Purpose

request_human_help

Focus a headed local browser and promptly tell the human what to complete

wait_for_human

Separately wait for an expected URL, selector, or real page change; timeouts are explicit

Multi-Instance

Tool

Purpose

spawn_browser

New named instance (parallel profiles), with optional desc and privacy mode

list_instances / switch_instance

Manage multiple browsers

instance_describe

Set/append semantic purpose memory that survives instance switching

close_instance / close_all_instances

Clean shutdown

⭐⭐ DevTools Suite — perf, coverage, emulation (new in v0.2.0)

Tool

Purpose

performance_trace_start / performance_trace_stop

CDP Tracing — save .json, drop into chrome://tracing or DevTools Performance panel

performance_metrics

Runtime Performance.getMetrics (Nodes, JSHeap, TaskDuration, FPS…)

performance_timeline

TTFB / FCP / DOMContentLoaded / load + slowest 5 resources (instant, no trace capture)

web_vitals

Core Web Vitals via web-vitals v4 — LCP/CLS/INP/FCP/TTFB with pass/fail ratings

coverage_start / coverage_stop

JS + CSS precise coverage — % unused bytes per file

memory_heap_snapshot

V8 .heapsnapshot — drag into DevTools Memory panel

emulate_network

Preset throttles (offline / slow-3g / 3g / slow-4g / 4g / wifi) + custom

emulate_cpu

1–6× CPU throttle (4× = DevTools default, 6× = low-end mobile)

emulate_device

Device presets: iphone-15, iphone-se, pixel-8, galaxy-s23, ipad, desktop

wait_for_network_idle

SPA-safe load detection — waits for N ms of no fetch/XHR activity

console_clear

Reset captured console buffer

⚡ Performance optimizations

Feature

What it does

browser_snapshot(mode="fast")

Skip getComputedStyle + minimal attrs (2–3× faster)

browser_snapshot(mode="viewport")

Only elements inside current scroll viewport (5–10× on long pages)

browser_snapshot(diff_from_last=True)

Cache DOM hash — near-instant if page unchanged

browser_snapshot(delta=True)

Prefix only new/changed elements with * (first snapshot marks all)

screenshot(format="jpeg", quality=60)

JPEG vs PNG — ~3× smaller file

screenshot(region={x,y,width,height})

Clip via CDP — 2–5× faster for small crops

browser_launch(testing_mode=True)

Disable images / background throttling / translate — 2–5× faster nav for perf tests (not for stealth)

Standard Browser Automation (lifecycle/navigation/DOM/interaction/scraping)

Count

Examples

Lifecycle: 2

browser_launch, browser_close

Navigation: 4

navigate, go_back, go_forward, reload

DOM/Content: 6

browser_snapshot, screenshot, get_text, get_html, get_url, save_pdf

Interaction: 10

click, click_text, click_role, assert_clickable, hover, fill, select_option, check, uncheck, upload_file

Keyboard: 2

type_text, press_key

Mouse: 3

mouse_click_xy, mouse_move, drag_and_drop

Wait: 6

wait_for, wait_for_change, wait_for_navigation, wait_for_url, wait_for_response, wait_for_request

Tabs: 4

tab_list, tab_new, tab_select, tab_close

Cookies: 5

cookie_list/set/delete, cookie_import (+ raw_text auto-detect), cookie_export

Storage: 9

localstorage_get/set/clear, sessionstorage_get/set/clear, cache_clear, indexeddb_list/delete

JavaScript: 2

evaluate, inject_init_script

Inspection: 4

inspect_element, get_attribute, query_selector_all, get_links

Frames: 2

list_frames, frame_evaluate

Batch: 3

batch_actions, fill_form, navigate_and_snapshot

Viewport/Scroll: 4

get/set_viewport_size, scroll, scroll_to

Dialog: 2

dialog_handle, dialog_auto_handle

A11y: 1

accessibility_snapshot

Console/Network: 9

console_start/get, network_start/get, intercept_start/log/stop, dry_run, export_curl

Debug: 3

server_status, get_page_errors, export_har

Scraping: 4

detect_content_pattern, extract_structured, extract_table, scrape_page

Chrome profile integration: 2

list_chrome_profiles, clone_chrome_profile

Example Workflows

One-liner Cloudflare Turnstile bypass (embed widget)

browser_launch(url="https://site-with-turnstile.com")
mouse_drift(duration_seconds=2)                    # natural behavior
click_turnstile()                                  # works on embedded widgets
# Login button now enabled, fill form, submit

Works on pages that embed the CF Turnstile widget (.cf-turnstile, [data-sitekey], or a challenges.cloudflare.com iframe). For managed-mode interstitials ("Just a moment..." full-page challenges), this tool cannot bypass — use solve_captcha or storage_state_load instead.

Bypass Turnstile via saved session (most reliable)

# Once — manual:
browser_launch(url="https://target.com/login", headless=false)
# [user logs in manually in browser window]
storage_state_save(filename="target-session.json")
browser_close()

# Every time after — automated:
browser_launch(
  url="https://target.com/dashboard",
  headless=true,                                   # can go headless
  storage_state_path="~/.mcp-stealth/storage-states/target-session.json"
)
# Turnstile never triggers — session is valid

Solve reCAPTCHA v2 image challenge via Claude

browser_launch(url="https://site-with-recaptcha.com")
click_element_offset(ref="recaptcha-checkbox-ref", x_percent=8)
# Image challenge appears
solve_recaptcha_ai(max_rounds=3)                   # uses ANTHROPIC_API_KEY
# Token injected, form ready to submit

Multi-account scraping in parallel

browser_launch(url="https://site.com", headless=true)   # main instance
spawn_browser("account_2", url="https://site.com", headless=true)
spawn_browser("account_3", url="https://site.com", headless=true)

list_instances()                                   # see all 3 running
switch_instance("account_2")
# All subsequent tool calls target account_2
click(ref="login-btn")
...
switch_instance("main")                            # back to main

Browser login + fast API scraping

# Login with browser (renders JS, solves challenges)
browser_launch(url="https://api-site.com/login")
click_turnstile()
fill(ref="email-ref", value="you@example.com")
fill(ref="password-ref", value="...")
click(ref="submit-ref")

# Scrape API 10x faster with TLS-perfect HTTP
http_request(
  url="https://api-site.com/v1/data",
  impersonate="chrome",
  use_browser_cookies=true                         # reuse login session
)
browser_launch(url="https://unknown-site.com")
detect_anti_bot()
# Returns: {"detected": ["Cloudflare", "reCAPTCHA"],
#           "recommended_tools": [...]}

Social-media market/competitor research (who sells + how loud)

browser_launch()
social_research(
  topic="AI carousel generator",
  platforms="reddit,threads,facebook",
  cookie_files="threads.json,fb.json",   # auto-(re)imports sessions — crash-resilient
)
# One call → per platform: Google site: dork (clean, non-personalized) + native
# in-platform search (engagement/likes/views). Reddit needs no login; Threads/FB/X
# use your imported session. Read the posts to judge sentiment / rank sellers.

Architecture

uvx mcp-stealth-chrome → Python 3.11 → FastMCP → nodriver → Chrome/Chromium
                                                  ↓
                                          curl_cffi (TLS)

Data locations:

  • Profile (main): ~/.mcp-stealth/profile/

  • Profiles (multi-instance): ~/.mcp-stealth/profiles/<instance_id>/

  • Screenshots: ~/.mcp-stealth/screenshots/

  • Exports (PDF, HAR): ~/.mcp-stealth/exports/

  • Storage states: ~/.mcp-stealth/storage-states/

Environment Variables

Variable

Default

Purpose

BROWSER_IDLE_TIMEOUT

600

Auto-close browsers after idle seconds (0 = never)

BROWSER_IDLE_REAPER_INTERVAL

60

How often reaper checks idle state

CAPSOLVER_KEY

Enable solve_captcha tool

OPENAI_API_KEY

OpenAI-compat solve_recaptcha_ai (standard)

OPENAI_BASE_URL

https://api.openai.com/v1

Custom endpoint (Groq, Together, Ollama, etc.)

OPENAI_MODEL

gpt-4o

Vision-capable model name (required multimodal)

ANTHROPIC_API_KEY

Claude solve_recaptcha_ai

ANTHROPIC_MODEL

claude-opus-4-7

Claude model name

Deprecated (still work but emit DeprecationWarning — migrate to OpenAI standards above): AI_VISION_BASE_URL, AI_VISION_API_KEY, AI_VISION_MODEL, AI_VISION_PROVIDER

Stealth Details

Underlying tech stack:

  • nodriver — Python CDP client with no WebDriver/Runtime.Enable leaks

  • curl_cffi — libcurl with CFFI, matches Chrome/Firefox/Safari TLS handshake exactly (JA3/JA4 authenticity)

  • OpenCV — template matching for visual CAPTCHA checkbox detection

Bypass layer vs detection:

Detection

Bypass

navigator.webdriver

nodriver doesn't set it

Runtime.Enable CDP leak

nodriver avoids it

Automation flags

No --enable-automation

Headless fingerprint

headless=false recommended for hard targets

TLS/JA3/JA4

http_request(impersonate='chrome')

Turnstile checkbox

click_turnstile()

reCAPTCHA v2 image

solve_recaptcha_ai() or solve_captcha()

Behavioral ML

mouse_drift, mouse_record/replay, humanize_click/type

Honest limits — these are HARDEST OSS bypass targets and require commercial services for production:

  • DataDome (real-time behavioral ML across 50+ signals)

  • Kasada (proprietary JS, rotates daily)

  • PerimeterX/HUMAN (ML-based request scoring)

  • ChatGPT managed Turnstile (checks React internal state)

For these, storage_state_save/load (manual-login-once, reuse) is the most reliable OSS approach.

Sister Package

mcp-camoufox — Firefox stealth with same API. Use when you need:

  • Hardest anti-bot bypass (Camoufox C++ level patches = stealth score 6% CreepJS)

  • Firefox-specific rendering

  • Node.js ecosystem

Both packages share tool names, snapshot format, ref system — switch seamlessly.

Development

git clone https://github.com/RobithYusuf/mcp-stealth-chrome
cd mcp-stealth-chrome
uv sync
uv run mcp-stealth-chrome       # run stdio server locally

Testing:

uv run python /tmp/smoke-test.py      # full smoke test (see /tmp/ examples)

Credits

License

MIT — see LICENSE.

Available Tools

138 tools
accessibility_snapshotC

Return ARIA accessibility tree of current page.

ParametersJSON Schema
NameRequiredDescriptionDefault
interesting_onlyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description must fully disclose behavior. It does not mention performance implications, the structure of the returned tree, or the effect of the 'interesting_only' parameter. The description is too minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

While the description is short, it lacks necessary details. Conciseness is not achieved at the expense of completeness; here, important information about parameters and behavior is missing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has one parameter and no explanation in the description, the contextual completeness is poor. The agent would not understand what 'interesting_only' means or how the return value is structured, despite an output schema being available.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description does not mention the single parameter 'interesting_only'. With 0% schema description coverage, the description should clarify what 'interesting' means, but it adds no value beyond the parameter name.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it returns the ARIA accessibility tree of the current page, which is a specific and distinct function from sibling tools like 'browser_snapshot' or 'describe_page'. It uses a specific verb and resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as 'browser_snapshot' or 'extract_structured'. The description does not specify context or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

assert_element_visibleA

⭐ Verify an element is visible (rendered, non-zero size, not hidden). Pass selector OR text — text uses fuzzy contains match. Returns ok(rect) or err(timeout).

ParametersJSON Schema
NameRequiredDescriptionDefault
selectorNo
textNo
timeoutNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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 specifies the verification criteria, the alternative identification methods, and the return type. However, it does not disclose potential side effects or details about waiting/polling behavior beyond the timeout parameter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, consisting of three short lines. It front-loads the purpose with an emoji and provides all key information without any unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 3 parameters and a mentioned return type (ok(rect) or err(timeout)), the description is fairly complete. It covers identification methods, visibility criteria, and the timeout parameter. Some implicit context (e.g., works on current page) is assumed but not critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains that selector and text are alternative identifiers and that text uses fuzzy contains match, adding meaning beyond the schema. The timeout parameter is mentioned with its default, though the default is already in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool verifies element visibility with specific criteria (rendered, non-zero size, not hidden). It also explains two identification methods (selector or text with fuzzy match), which distinguishes it from siblings like 'check' or 'inspect_element'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives like 'assert_text_present' or 'assert_url_matches'. The usage is implied through the return type (ok(rect) or err(timeout)), but no direct guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

assert_text_presentA

⭐ Verify text appears anywhere on page within timeout. Returns ok(found) or err(not found + sample of body text).

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
timeoutNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must fully disclose behavior. It mentions the return types and timeout, but does not specify whether hidden text is considered, case sensitivity, or if it works across iframes—typical behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with a prominent emoji star and front-loaded verb. Every word is functional, zero verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, but missing details on text matching behavior (e.g., exact match vs substring) and whether timeout is in seconds or milliseconds. An output schema exists but description doesn't reference it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must add meaning. It mentions 'text' and 'timeout' implicitly but provides no details on matching rules (exact, substring, case) or timeout unit/behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a clear verb ('Verify'), a specific resource ('text appears anywhere on page'), and a condition ('within timeout'), distinguishing it from sibling assertions like assert_element_visible and assert_url_matches.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states the return format ('ok(found) or err(not found + sample of body text)'), implying when to use it for text presence checks. However, it does not explicitly mention when not to use it or alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

assert_url_matchesA

⭐ Verify current URL matches regex within timeout. Returns ok(current_url) or err(timeout + last_url).

ParametersJSON Schema
NameRequiredDescriptionDefault
patternYes
timeoutNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden and discloses the timeout behavior and return format (ok/err with last URL). It could detail polling behavior but is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no fluff: first states purpose, second states return values. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Basic completeness with output schema existing and return values mentioned, but missing parameter descriptions and usage guidance for a tool with siblings like wait_for_url.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description adds no parameter explanations (e.g., pattern is a regex, timeout is seconds). This leaves agents to infer from names alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Verify', the resource 'current URL', and the condition 'matches regex' with a timeout, distinguishing it from siblings like get_url (just returns URL) and wait_for_url (waits for URL to become something).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for verifying URL after navigation but does not explicitly state when to use this tool over alternatives like wait_for_url or give exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

attach_to_chromeA

⭐ Attach to an existing Chrome instance via CDP — no new browser launch, no profile lock conflict. Target Chrome must have been started with --remote-debugging-port=<N>. Auto-detects port if omitted (picks lowest).

Use cases:
- Control your existing Chrome (e.g. Profile 21) without closing it.
- Drive a Chrome session you launched manually with custom flags.
- Connect to a remote/Docker Chrome via host=<remote> port=<N>.

To detach without closing Chrome, call detach(). Calling browser_close()
after attach DOES close the target Chrome — use detach() instead if you
want to keep it running.
ParametersJSON Schema
NameRequiredDescriptionDefault
portNo
hostNo127.0.0.1
instance_idNoattached

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations present, so description carries full burden. Discloses key behaviors: auto-detects port, requires Chrome to be started with --remote-debugging-port, warns that browser_close after attach closes Chrome. Minor omission: error handling if Chrome not found.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with emoji, clear sections, and front-loaded purpose. No unnecessary words; every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequately covers the tool's complexity with three parameters and an output schema (not shown but exists). Could add brief description of instance_id parameter for full completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so description must add meaning. Explains port (auto-detects, defaults to lowest) and host (remote connections). However, instance_id parameter is not described beyond its default 'attached', leaving ambiguity about its purpose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool attaches to an existing Chrome instance via CDP, distinguishing it from siblings like browser_launch (which launches new browser) and detach. It specifies the exact resource (Chrome instance) and action (attach).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit use cases: controlling existing Chrome, manually launched Chrome, remote/Docker Chrome. Also tells when not to use browser_close (use detach instead). References sibling tool detach() as alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

auth_captureA

⭐ Intercept the next N requests matching a URL pattern and return their headers (Authorization, Cookie, X-CSRF-*, etc.) — useful for SPAs that hold bearer tokens in JS memory and never write them to localStorage.

Pattern: substring match on URL (case-sensitive). For regex use
network_get instead.

Args:
    filter_url_pattern: e.g. "/api/" or "graphql"
    count: stop capturing after this many matches (default 1)
    timeout: max seconds to wait (default 10)
    include_response_headers: also wait for + return response headers

Returns JSON array of {url, method, request_headers, request_body,
[response_headers, status]}.
ParametersJSON Schema
NameRequiredDescriptionDefault
filter_url_patternYes
countNo
timeoutNo
include_response_headersNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description thoroughly discloses behavior: intercepts requests, stops after count matches, has timeout, optionally includes response headers, and returns a JSON array.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with brief intro, pattern note, argument list, and return format. A star emoji adds minimal verbosity but doesn't detract.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity and no annotations, the description covers all necessary aspects: use case, pattern details, parameters, and return format, making it fully informative.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so description compensates by explaining each parameter's purpose and defaults, adding value beyond raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool intercepts requests matching a URL pattern to capture headers, and explicitly distinguishes from sibling tool network_get for regex matching.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit context for when to use (SPAs with bearer tokens in JS memory) and when not to (use network_get for regex), plus pattern matching details.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

batch_actionsA

Execute a list of actions sequentially.

Each action: {type: click|fill|type|wait|press|navigate, ...params}
Example: [{"type":"click","ref":"e3"},{"type":"fill","ref":"e4","value":"x"}]
ParametersJSON Schema
NameRequiredDescriptionDefault
actionsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

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 the actions are executed sequentially, but lacks details on error handling, atomicity, or what happens on failure. The return value is not mentioned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences plus an example, front-loaded with the core purpose. Every element is relevant and non-redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (batch execution) and the presence of an output schema (not shown), the description does not explain return values or execution results. It covers the basics but lacks depth for a batch operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It provides structure and an example, adding meaning beyond the raw schema. However, it does not document all possible parameters for each action type, leaving gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Execute a list of actions sequentially' with an example showing structure. It distinguishes from sibling tools like click, fill, etc., which are individual actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for running multiple actions in order, but does not explicitly state when not to use it or provide alternative tools for single actions. The context of sibling tools makes it clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

browser_closeA

Close the browser and free the profile lock.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses closing the browser and freeing the profile lock, but does not mention side effects like unsaved data loss or whether the tool is idempotent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words. It conveys the essential action and outcome efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no parameters and an output schema (implied), the description adequately covers the action and consequence. It lacks usage guidance but is complete for the basic operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters and schema coverage is 100%. The description does not need to add parameter info, so baseline 3 is appropriate. It does not provide additional parameter context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Close') and resource ('browser'), and adds a unique detail ('free the profile lock'). It clearly differentiates from sibling tools like browser_launch or attach_to_chrome.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives (e.g., close_all_instances, detach). There is no mention of prerequisites or conditions for closing the browser.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

browser_launchA

Launch stealth Chrome via nodriver. Creates persistent profile by default.

Args:
    url: initial URL to load
    headless: run without UI (many sites detect headless — prefer False)
    proxy: "http://user:pass@host:port" or "socks5://host:port"
    user_agent: override UA string
    window_width, window_height: viewport size
    persistent: reuse profile at ~/.mcp-stealth/profile
    lang: browser language
    extra_args: additional Chromium flags
    storage_state_path: load cookies/localStorage from JSON before first nav
    testing_mode: 2-5× faster startup+nav for perf/regression testing —
        disables image loading, background throttling dampers, translate,
        notifications, media autoplay. WARNING: reduces stealth — not for
        anti-bot work (sites can detect missing images as automation signal).
    auto_verify: if True (default), automatically detect Cloudflare /
        Turnstile challenges after the initial load and dispatch a
        CDP-level click on the checkbox. Caps at 2 attempts ~6s total —
        never loops. Set False to opt out.
    user_data_dir: launch Chrome against an EXISTING user profile root
        (e.g. "~/Library/Application Support/Google/Chrome"). Overrides
        persistent + the default MCP profile. The target Chrome instance
        (if any) MUST be closed first — locked profiles are detected
        upfront and refused with the lock-holder PID. Supports ~ expansion.
    profile_directory: when paired with user_data_dir, picks a sub-profile
        inside it (e.g. "Default", "Profile 21"). Without this, Chrome
        uses "Default". Helpful to drive a specific persona without
        cloning the profile. Use list_chrome_profiles to enumerate.
ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoabout:blank
headlessNo
proxyNo
user_agentNo
window_widthNo
window_heightNo
persistentNo
langNoen-US
extra_argsNo
storage_state_pathNo
testing_modeNo
auto_verifyNo
user_data_dirNo
profile_directoryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of disclosing behavior. It covers stealth modifications, persistent profile default, headless detection warning, testing_mode impacts, auto_verify behavior, and user_data_dir constraints. However, it does not describe the output behavior (e.g., returns a browser instance ID) or lifecycle aspects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear purpose statement followed by a detailed parameter list. It is relatively long but each sentence adds value. Minor improvement could be using bullet points for readability, but it remains efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 14 parameters, no annotations, and an output schema that is not explained, the description covers all parameters with thorough explanations, including edge cases and warnings. It provides sufficient context for an AI agent to correctly invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must fully explain parameters. It does so excellently: each parameter is described with context, warnings, and defaults (e.g., 'many sites detect headless — prefer False', 'caps at 2 attempts ~6s total'). This adds significant value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Launch stealth Chrome via nodriver. Creates persistent profile by default.' This clearly identifies the tool's action and resource, distinguishing it from siblings like attach_to_chrome (which attaches to existing instances) and spawn_browser.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance is given on when to use this tool versus alternatives. The description does not mention when to prefer browser_launch over sibling tools like spawn_browser or attach_to_chrome, nor does it provide exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

browser_recoverA

Force-recover from a stuck browser state.

Escape hatch when browser_close() can't run (graceful shutdown depends
on internal state that may be corrupt). Steps:
1. Best-effort browser.stop() — ignore any errors
2. Kill orphan Chrome PIDs whose argv references the active profile
   (SIGTERM, then SIGKILL after 2s if still alive) — only PIDs spawned
   against THIS MCP profile, never the user's daily Chrome
3. Reset BrowserState (clears tabs, instances, network index, locks)
4. Clear devtools / dialog caches
5. Wipe stale Singleton* lock files in all known profile dirs

Always succeeds — never raises. Use this when normal close hangs or
returns an error you can't diagnose. After this, browser_launch()
again to start fresh.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description details all steps of recovery including killing orphan PIDs, resetting state, clearing caches, and wiping lock files. It notes that the operation 'Always succeeds — never raises.' With no annotations provided, the description fully discloses the aggressive and destructive nature of the tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a lead sentence and numbered steps. Every sentence serves a purpose, and it is appropriately sized for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and an output schema, the description fully explains the tool's behavior, prerequisites, and post-conditions. It covers all necessary contextual information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, so the schema does not need description. Per guidelines, baseline is 4 for zero parameters. The description correctly omits parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a clear verb+resource: 'Force-recover from a stuck browser state.' It explicitly distinguishes itself from siblings like browser_close by stating it's an 'escape hatch when browser_close() can't run.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use: 'Use this when normal close hangs or returns an error you can't diagnose.' It also explains the follow-up action: 'After this, browser_launch() again to start fresh.' This provides clear guidance and alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

browser_snapshotA

Inject SNAPSHOT_JS and return a ref-indexed list of interactive elements.

Refs (e0, e1, ...) are attached via data-mcp-ref and valid until next nav.

Modes (performance vs completeness tradeoff):
  full      — default; same shape as mcp-camoufox (computed-style visibility + full attrs)
  fast      — skip getComputedStyle + minimal attrs (2-3× faster, less info per element)
  viewport  — full fidelity but only elements inside current scroll viewport
              (5-10× faster on long feeds/SERPs, pair with scroll for segment-by-segment)

diff_from_last=True caches a DOM hash per tab; if the hash matches the previous
call on the same URL, returns "unchanged" without re-serializing the element list
(near-instant for re-check loops).
ParametersJSON Schema
NameRequiredDescriptionDefault
modeNofull
diff_from_lastNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fully bears the burden. It discloses that refs are attached via data-mcp-ref and are valid until next navigation, explains the tradeoffs of different modes, and describes the caching behavior of diff_from_last. This provides comprehensive behavioral understanding.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections for modes and diff_from_last. It is somewhat lengthy but each sentence adds value. Minor redundancy could be trimmed, but overall it is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema (though not shown), the description does not need to detail return values. It covers purpose, modes, and caching behavior adequately. However, it lacks mention of prerequisites, side effects, or what happens if called before navigation, which would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must add meaning. It thoroughly explains both parameters: the mode parameter's three options with their performance and fidelity differences, and the diff_from_last boolean's caching mechanism. This goes well beyond the schema's minimal definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool injects SNAPSHOT_JS and returns a ref-indexed list of interactive elements. It distinguishes itself from siblings like accessibility_snapshot and navigate_and_snapshot by focusing on interactive elements and performance tradeoffs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use each mode (full, fast, viewport) based on performance vs completeness tradeoffs, and explains the diff_from_last option. It implies usage for taking snapshots after navigation but does not explicitly mention when not to use it or list alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cache_clearA

Clear the browser HTTP cache (CDP Network.clearBrowserCache).

Mirrors DevTools → Application → Clear storage → Clear site data (cache).
Does NOT touch cookies, localStorage, or IndexedDB — use dedicated tools
or browser_launch(persistent=False) for a full wipe.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses the specific scope (HTTP cache only) and explicitly lists what is not affected. It lacks mention of prerequisites or error conditions, but for a simple zero-parameter tool, this is highly transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: one sentence for the core action, one for context, and one for exclusions. Every sentence adds value, no fluff. Front-loaded with the primary purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters, no annotations, and an output schema (presumed present), the description is complete. It covers the tool's exact scope, boundaries, and relationships to sibling tools, leaving no ambiguity for agent invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, so schema coverage is 100%. The baseline for 0 params is 4, and the description correctly adds no redundant info beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: clearing the browser HTTP cache via CDP Network.clearBrowserCache. It explicitly distinguishes itself from siblings by noting what it does NOT affect (cookies, localStorage, IndexedDB), providing clear differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit guidance: use this tool for clearing only the HTTP cache; for a full wipe, use dedicated tools or browser_launch(persistent=False). This helps the agent decide when to use this tool vs alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

checkC

Tick a checkbox/radio (idempotent).

ParametersJSON Schema
NameRequiredDescriptionDefault
refNo
selectorNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It only mentions idempotency but fails to disclose behavior on already-checked elements, missing elements, or side effects (e.g., events triggered). Minimal transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with no fluff. However, it may be too concise, omitting necessary details for correct invocation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's two optional parameters and existence of sibling tools like 'click' and 'uncheck', the description lacks information on parameter usage, return values, and when to deploy this tool over alternatives.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description provides no explanation of the two parameters ('ref' and 'selector'). The agent cannot infer how to target the element or what each parameter means.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Tick') and the target resource ('checkbox/radio'), and the idempotency qualifier distinguishes it from sibling tools like 'uncheck'. It is specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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., 'click' or 'uncheck'). The idempotency hint is present but no when-not-to-use or context for selecting between siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

clickC

Click an element by ref (from snapshot) or CSS selector. JS fallback on failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNo
selectorNo
humanizeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It mentions 'JS fallback on failure' but omits critical details: what happens on success (navigation? page load?), whether it scrolls into view, and how 'humanize' parameter affects behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence, but could be restructured to separate targeting modes and behavioral notes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 3 undocumented parameters, no annotations, and many sibling tools, the description is insufficient. It lacks details on parameter interplay, return value (output schema exists but not hinted), and when to use fallback.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It only mentions 'ref' and 'selector' generically, with no explanation of optionality, mutual exclusivity, or the 'humanize' parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Click an element') and the two modes of targeting: by ref from snapshot or by CSS selector. This distinguishes it from sibling tools that click by text, role, or coordinates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 like click_text, click_role, or click_and_wait. It does not explain trade-offs or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

click_and_waitA

⭐ Click + wait for the side-effect to land. Distinguishes a successful action from a silent failure (e.g. form invalid where click() returns success but submit never happened).

Args:
    ref / selector / text: element to click (passed through to existing
        click tools — text uses click_text fuzzy match)
    expect: what to wait for after the click. One of:
        "navigation"     — URL changes
        "url"            — URL matches expect_url_pattern (regex)
        "text"           — page contains expect_text
        "selector"       — expect_selector becomes visible
        "request"        — outgoing request matches expect_request_pattern
        "network_idle"   — no in-flight requests for 500ms
        "auto"           — try navigation→network_idle→nothing
    expect_*: target for the matching expect mode
    timeout: per-mode max wait

Returns JSON {clicked, observed: {what, evidence}, elapsed_ms}.
ParametersJSON Schema
NameRequiredDescriptionDefault
refNo
selectorNo
textNo
expectNoauto
expect_url_patternNo
expect_textNo
expect_selectorNo
expect_request_patternNo
timeoutNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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 behavioral traits: click action, waiting for various conditions, and response JSON structure. It lacks explicit mention of page state changes or destructive potential, but for a click tool the transparency 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise yet comprehensive. It front-loads the core purpose with an emoji, then uses a bullet list with clear labels for each parameter and value. Every sentence adds information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 9 parameters and no annotations, the description covers all necessary details: what the tool does, how to use each parameter, what to expect in the return value, and the behavioral nuances of each expect mode. It is fully self-contained for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, but the description adds rich semantic meaning for every parameter: explains element selection methods (fuzzy match for text), enumerates all expect modes with clear definitions, and describes the expect_* targets and timeout. This fully compensates for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool performs a click and then waits for a side-effect, distinguishing it from a plain click that may silently fail. It uses a specific verb-resource pair and contrasts with 'click()' to emphasize verification of outcomes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use the tool (to confirm a successful action) and contrasts it with silent failure scenarios. It does not explicitly list when not to use or name alternative sibling tools, but the purpose is clear enough for an agent to differentiate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

click_at_cornerA

Click at a corner of element (close X buttons, delete icons, dismiss).

corner: top-left | top-right | bottom-left | bottom-right
offset: inset pixels from corner (default 8px — works for most X buttons)
ParametersJSON Schema
NameRequiredDescriptionDefault
cornerNotop-right
offsetNo
refNo
selectorNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses the corner parameter and offset behavior (inset pixels from corner, default 8px), which is not in the schema. However, it omits error handling behavior (e.g., if element not found) and does not mention any side effects, which would be helpful for a click action tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise: two lines for purpose and explicit use cases, then two lines for parameter 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.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the core behavior and primary parameters, but lacks explanation for the optional 'ref' and 'selector' parameters. Given that the schema has no descriptions (0% coverage) and no annotations, the description should address all parameters to be fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description explains the 'corner' enum and 'offset' integer (with example default). However, it does not document 'ref' and 'selector' parameters, which remain entirely unexplained despite 0% schema description coverage. Only 2 of 4 parameters are clarified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Click at a corner of element' with specific use cases like close X buttons and delete icons. This effectively distinguishes it from sibling tools like 'click' (center click) and 'click_element_offset' (arbitrary offset).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description implies usage for corner-based interactions (dismiss buttons, delete icons) but does not explicitly state when to use this tool versus alternatives like 'click' or 'click_element_offset'. No exclusions or when-not-to-use guidance provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

click_at_imageA

⭐ Find image via template matching, then click its center.

Combines find_by_image + humanize_move + mouse_click. Useful for visual
CAPTCHAs, custom buttons without reliable selectors, or interacting with
canvas-based UIs.
ParametersJSON Schema
NameRequiredDescriptionDefault
template_pathYes
thresholdNo
humanizeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full responsibility. It discloses the basic action sequence but omits important behaviors: error handling if image not found, wait times, scrolling needed, return value, or that humanize_move introduces random delays. The lack of these details is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences, front-loaded with the core action. The emoji provides quick visual context. No extraneous words; every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (template matching + composite click), the description omits parameter details, return value (despite having an output schema), and error conditions. It is not complete enough for an agent to safely invoke without guessing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must add meaning. It only implicitly covers 'template_path' (the image to find) but fails to explain 'threshold' (controls matching sensitivity) or 'humanize' (whether to add human-like randomness). Most parameter semantics are missing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it finds an image via template matching and clicks its center. It uses specific verbs ('Find', 'click') and distinguishes itself from siblings like 'find_by_image' and 'humanize_click' by explicitly stating it combines multiple actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly suggests use cases: 'visual CAPTCHAs, custom buttons without reliable selectors, or interacting with canvas-based UIs.' It does not mention when not to use or directly compare with alternatives, but the context is clear and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

click_element_offsetB

Click inside element at percentage position (not center).

Examples:
  x_percent=8          → checkbox at left edge of label
  x_percent=90         → right-side toggle slider
  y_percent=20         → top portion of a card
ParametersJSON Schema
NameRequiredDescriptionDefault
x_percentNo
y_percentNo
refNo
selectorNo
humanizeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses core behavior (click at percentage position) and hints that it is not center. However, it does not mention scrolling, waiting, or the 'humanize' default behavior, which would be valuable given 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with one sentence plus examples. It front-loads the purpose. However, it lacks parameter explanations, which would improve structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 5 parameters and no annotations, the description is incomplete. It does not explain how to target an element (ref vs selector), the humanize behavior, or the return value (output schema exists but not described).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description fails to explain the five parameters, especially 'ref', 'selector', and 'humanize'. The examples only illustrate x_percent and y_percent values. With 0% schema description coverage, the description should compensate but does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool clicks inside an element at a percentage position, not the center. It distinguishes from sibling tools like 'click' (which likely clicks center) and provides examples that illustrate specific use cases.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use (clicking at a specific offset) by stating 'not center' and giving examples. It does not explicitly list alternatives or when not to use, but the 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.

click_roleA

Click by ARIA role (e.g. button, link, textbox), optional accessible name.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleYes
nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description only explains the targeting method (by ARIA role) but does not disclose behavioral traits such as waiting behavior, handling of multiple matches, or whether it works on hidden elements. With no annotations, the description carries the full burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that immediately conveys the purpose and key parameters. No extraneous words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is adequate for a simple click action but lacks details on error handling (e.g., element not found) and does not leverage the existence of an output schema. Given the many sibling tools, more context on when to prefer this tool would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds significant meaning beyond the bare schema by explaining 'role' as an ARIA role (with examples) and 'name' as an accessible name. This helps the agent understand valid inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool clicks an element identified by its ARIA role, with an optional accessible name. This distinguishes it from sibling tools like 'click' (by selector) and other click variants.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 like 'click' or 'click_text'. It does not mention prerequisites or typical use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

click_textB

Find and click element whose text matches.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
exactNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. The description does not disclose behavioral traits such as whether it scrolls into view, waits for element availability, or triggers navigation. Only the basic search-and-click mechanism is implied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence of 7 words is very concise with no fluff. However, it sacrifices some necessary detail for brevity, earning a high but not perfect score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 2 parameters, no annotations, and an output schema (not shown), the description fails to cover return values, search scope, or post-click behavior. It is insufficient for an agent to use correctly without additional context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds meaning to the 'text' parameter by stating matching is involved, but it does not explain the 'exact' boolean parameter (e.g., whether it controls case sensitivity or substring matching). With 0% schema description coverage, the description partially compensates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Find and click element whose text matches' clearly states the action (find and click) and the resource (element by text). It distinguishes from sibling tools like 'click' (which likely uses selectors) and 'click_role' (by role).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives like 'click', 'click_role', or 'click_and_wait'. No exclusions or context about when this is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

click_turnstileA

Auto-find and click the Cloudflare Turnstile checkbox.

Three-tier detection strategy:
  1. Primary selectors: iframe[src*=challenges.cloudflare.com], [data-sitekey], .cf-turnstile
  2. Secondary: .turnstile, input[name=cf-turnstile-response] → nearest sized container
  3. Fallback (if fallback_template=True): OpenCV template match via verify_cf
     — covers out-of-process iframe cases (e.g. nopecha.com/captcha/turnstile)

Args:
    offset_x: pixels from widget left edge (default 30, calibrated for CF checkbox)
    offset_y: vertical offset (default = container center)
    fallback_template: if selectors fail, try OpenCV template click (default True)

Known to work on: 2captcha.com/demo/cloudflare-turnstile, dash.cloudflare.com login,
nopecha.com/captcha/turnstile (via template fallback).
Does NOT work on: Cloudflare managed-mode interstitials ("Just a moment..." full-page
challenges) — use solve_captcha or storage_state_load for those.
ParametersJSON Schema
NameRequiredDescriptionDefault
offset_xNo
offset_yNo
fallback_templateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It details the three-tier detection strategy, fallback behavior, and limitations comprehensively.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with numbered tiers and parameter descriptions. Slightly long but every sentence adds value. Could be slightly more concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 3 parameters with no schema descriptions and no annotations, the description is thorough: covers purpose, mechanism, usage guidance, parameter details, and limitations. Fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so description must compensate. It explains each parameter's purpose, default, and calibration (e.g., offset_x calibrated for CF checkbox).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it auto-finds and clicks the Cloudflare Turnstile checkbox. Specific verb and resource, distinguishes from sibling click tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when NOT to use (Cloudflare managed-mode interstitials) and provides alternatives (solve_captcha or storage_state_load). Also lists known working sites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

clone_chrome_profileA

Clone an existing Chrome profile into isolated mcp-stealth location.

SAFE: reads source profile without modification, copies to
~/.mcp-stealth/profiles/<target_instance_id>/Default/

Chrome desktop MUST be closed for source profile (we check SingletonLock).
Preserves: cookies, history, bookmarks, saved passwords, extensions state.
Skips (if skip_cache=True): Cache, Code Cache, GPUCache, Media Cache,
Service Worker, IndexedDB (regenerable, saves 500MB+).

Args:
    source_profile: Chrome profile dir name ("Default", "Profile 1", etc).
                    Use list_chrome_profiles() to see options.
    target_instance_id: Name for the cloned instance (becomes folder name).
    skip_cache: Exclude cache dirs for fast + smaller copy (default True).
    overwrite: Delete target if exists before copying (default False).

After clone, launch with:
    spawn_browser(instance_id='<target_instance_id>')
ParametersJSON Schema
NameRequiredDescriptionDefault
source_profileNoDefault
target_instance_idNochrome_clone
skip_cacheNo
overwriteNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully carries the burden of behavioral disclosure. It explains the tool is safe (reads without modification), copies to a specific directory, checks SingletonLock, and details what is preserved or skipped (with cache details). This is comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with headings (SAFE, Args, After clone) and bullet points. It is concise, every sentence adds value, and the key information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (4 parameters, 0 required) and the presence of an output schema (though not shown), the description is complete. It covers the operation, side effects, parameter details, and post-clone actions, leaving no gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description provides detailed explanations for all four parameters. It explains source_profile (use list_chrome_profiles), target_instance_id, skip_cache (excludes large regenerable directories), and overwrite. This adds significant meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it clones an existing Chrome profile into an isolated location. It distinguishes itself from sibling tools like list_chrome_profiles and spawn_browser by explaining the cloning process and its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly mentions prerequisites (Chrome must be closed) and how to use the cloned profile (launch with spawn_browser). It provides a tip to use list_chrome_profiles for source options. However, it does not explicitly state when not to use this tool or what alternatives exist.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

close_all_instancesA

⭐ Close every running browser instance. Useful for cleanup.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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 the action but does not disclose consequences such as unsaved data loss or that all instances will be closed without confirmation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words, front-loading the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple no-parameter tool with an output schema, the description is largely sufficient, though it could mention lack of confirmation or irreversible effects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters (schema coverage 100%), and the description adds no parameter info; baseline of 4 is appropriate for zero-parameter tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Close every running browser instance' with a specific verb and resource, and it distinguishes from siblings like close_instance (singular) and browser_close (current browser).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says 'Useful for cleanup' but does not explicitly state when to use versus alternatives like close_instance or browser_close, lacking explicit context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

close_instanceB

⭐ Close a specific browser instance (frees profile + memory).

ParametersJSON Schema
NameRequiredDescriptionDefault
instance_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses that closing frees profile and memory, indicating a destructive side effect. However, it omits details about irreversibility, error conditions, or required permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise—one sentence plus a parenthetical note. It front-loads the core action, and every word earns its place without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has one parameter and an output schema (not documented), the description is too brief. It lacks information about return value, error handling, and prerequisites (e.g., instance must be open). For a simple tool, this is a significant gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage for parameters is 0%, so the description must compensate. The phrase 'specific browser instance' weakly implies the parameter identifies the instance, but it adds no detail about the expected format, validation, or behavior if the ID is invalid.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Close') and resource ('a specific browser instance'), making the action unmistakable. It distinguishes from siblings like 'close_all_instances' by emphasizing 'specific', implying the need for an instance identifier.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 'browser_close' or 'close_all_instances'. It does not mention prerequisites (e.g., instance must exist) or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

console_clearA

Clear the captured console buffer + call console.clear() in the page.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It transparently states both effects: clearing the captured buffer and calling console.clear() in the page. No contradictions or hidden 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is concise and front-loaded. Every word is necessary, no waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, trivial input schema, and presence of output schema), the description is complete enough. It explains the action and side effects clearly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, and schema coverage is 100% trivially. According to guidelines, baseline is 3 when coverage is high. The description adds no parameter info, which is fine.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action: clearing the captured console buffer and calling console.clear() in the page. It uses a specific verb and resource, distinguishing it from sibling tools like console_get and console_start.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is used to clear the console buffer, which is clear from context. However, it lacks explicit guidance on when not to use it or alternatives, but given the tool's simplicity, this is acceptable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

console_getA

Retrieve captured console messages (chronological: oldest first within the last limit, newest last).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. 'Retrieve' suggests a read-only operation, but there is no explicit statement about non-destructiveness, message persistence after retrieval, or error conditions. The description does not contradict annotations (none exist), but leaves some behavioral traits implied rather than explicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that is front-loaded with the verb and resource, containing no redundant information. Every word earns its place, and the structure is optimal for quick parsing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with one optional parameter and an output schema (exists but not shown). The description covers the key behavioral aspect (chronological order with limit) and is complete for the tool's scope. Minor gaps like error handling or empty state behavior are not critical given the output schema likely documents return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% with no parameter descriptions. The description compensates by explaining the 'limit' parameter's role in controlling how many messages are returned and the ordering (oldest first within last limit, newest last). This adds significant meaning beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Retrieve' and resource 'captured console messages', specifying chronological ordering. It distinguishes from sibling tools like console_clear (delete) and console_start (start capture), making the tool's purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this tool is for reading messages, but does not explicitly provide when-to-use guidance or contrast with alternatives like console_clear or console_start. The chronological ordering detail is useful but insufficient for full usage guidelines.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

console_startA

Begin capturing console messages of active tab.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose behavioral traits like whether previous captures are overwritten, if there is a limit, or if it returns a status.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with no wasted words, front-loading the action and resource effectively.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool and the presence of an output schema (not shown), the description is adequate but lacks context about how it relates to console_get and console_clear, and whether a stop action is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, and schema coverage is 100%. The description adds no extra meaning beyond the action, but a baseline of 4 is appropriate for zero-parameter tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description has a specific verb 'Begin capturing' and a clear resource 'console messages of active tab', which distinguishes it from sibling tools like console_clear and console_get.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives, such as when to start capturing vs retrieving messages with console_get, 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.

coverage_startA

Start collecting JS/CSS code coverage.

Wraps CDP Profiler.startPreciseCoverage + CSS.startRuleUsageTracking.
Call coverage_stop() to get the usage report (bytes used vs unused).
ParametersJSON Schema
NameRequiredDescriptionDefault
jsNo
cssNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description bears the burden of behavioral disclosure. It mentions wrapping CDP methods but does not state whether re-invocation restarts tracking, if it is safe to call multiple times, or what side effects occur (e.g., clearing previous data). The behavioral context is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences, front-loaded with the primary purpose, followed by implementation detail and usage guidance. Every word adds value, and there is no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 booleans, no required params, output schema exists), the description covers the essential workflow. It could mention behavior on repeated calls or whether prior coverage data is discarded, but overall it is sufficient for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the two Boolean parameters (js, css) are self-explanatory from the tool name and description. The description adds no further detail about their meaning beyond indicating that they enable collection for respective types. Baseline score of 3 is appropriate given simplicity and context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Start collecting') and the resource ('JS/CSS code coverage'). It also references underlying CDP methods, distinguishing it from sibling 'coverage_stop'. The tool's purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells the user to call 'coverage_stop()' to retrieve the report, providing a clear usage pattern. While it doesn't exclude other uses, this is sufficient guidance for the paired workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

coverage_stopA

Stop coverage collection and return used/unused breakdown.

Returns per-file summary: bytes used, bytes total, unused %. Sorted by
largest unused byte count (biggest dead-code wins first).
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must fully explain behavior. It describes the action and return value but lacks details on side effects (e.g., whether coverage data is reset, if the tool can be called multiple times, or if it requires prior state). The description is functional 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with front-loaded action and result. Every sentence adds value: first states the purpose, second details output format and sorting. No fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and presence of an output schema, the description provides key output details (per-file summary, sorting). However, it omits prerequisite context (e.g., coverage must be started first) and any state implications. Could be slightly more complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has zero parameters, so baseline is 4. The description adds no parameter information, which is appropriate since there are none. Schema coverage is 100%, so the description does not need to compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool stops coverage collection and returns a used/unused breakdown. It specifies the output format (per-file summary with bytes used, total, and unused percentage) and sorting order (by largest unused byte count). This distinguishes it from sibling tools like coverage_start.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs. alternatives. It does not mention that coverage must be started first (via coverage_start) or any prerequisites. Sibling tools include many other actions, but the description offers no context for appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

describe_pageA

⭐ Compact AI-friendly page summary — replaces accessibility_snapshot for LLM workflows. Returns JSON with the page's intent + interactable surface in ~10× fewer tokens than a full a11y dump.

Args:
    wait_stable: if True, install a MutationObserver and wait until the
        DOM has been quiet for `stable_ms` before snapshotting (max
        `max_wait` seconds). Use on SPA / lazy-rendered pages so the
        LLM sees the final state, not a half-hydrated render. Cheap
        (~50-200ms typical, capped at max_wait).
    max_wait: outer cap for stability wait (default 2.5s)
    stable_ms: required quiet window in ms (default 400)

Output shape:
  {
    "title": "...",
    "url": "...",
    "headings": [{"level":"h1","text":"..."}],
    "fields": [{"label":"...","type":"text|email|...","required":bool,"value":"...","name":"...","id":"..."}],
    "actions": [{"text":"Submit","kind":"button","disabled":false}],
    "errors": ["..."],
    "navigation": ["Dashboard","Settings",...],
    "stability": "stable|timeout|skipped"  (only present if wait_stable=True)
  }

Use this BEFORE smart_fill so the LLM knows which labels exist.
ParametersJSON Schema
NameRequiredDescriptionDefault
wait_stableNo
max_waitNo
stable_msNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite no annotations, the description explains the wait_stable behavior with MutationObserver, default values, and output shape, but omits details about error handling or performance implications.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with separate sections for args and output shape, front-loaded with purpose, and every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (3 parameters, one conditional behavior), the description covers parameter details, output format, and usage context (before smart_fill), making it fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully explains all three parameters, including their purpose, defaults, and behavioral effects.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool produces a compact AI-friendly page summary, replacing accessibility_snapshot for LLM workflows, and distinguishes itself by being more token-efficient.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use this BEFORE smart_fill so the LLM knows which labels exist' and mentions it replaces accessibility_snapshot, but does not provide alternative tools for other use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

detachA

⭐ Release CDP connection to an attached Chrome WITHOUT closing it. Only valid for browsers connected via attach_to_chrome — for browsers spawned by browser_launch/spawn_browser this is equivalent to a no-op (use browser_close instead).

After detach, Chrome keeps running with all tabs intact. You can
re-attach later with attach_to_chrome(port=...).
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses behavior: does not close Chrome, is a no-op for spawned browsers, and Chrome continues running. Also specifies that re-attachment is possible.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two clear sentences front-loading the core action and side effects. Every word adds value without repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and output schema present, the description covers the tool's domain, prerequisites, and alternatives completely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters, so baseline is 4. The description adds no param info, but none is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses specific verb 'Release' and unique resource 'CDP connection to an attached Chrome'. It distinguishes from siblings like attach_to_chrome and browser_close.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use (only for attach_to_chrome connections) and when not to (for spawned browsers, use browser_close). Also mentions re-attach possibility.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

detect_and_bypassA

⭐ One-shot: detect anti-bot wall on current page and apply the best bypass we have. Returns JSON with detection + bypass result.

Bypass routing:
  - Cloudflare Turnstile / interstitial → _auto_verify_cf (DOM + OpenCV)
  - Other walls (DataDome, PerimeterX, Akamai, Imperva, Kasada) →
    return detection + recommended-action list (no auto-bypass since
    those need session reuse / proxies / paid solvers).
  - No wall detected → returns ok with empty bypass.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses that some walls receive automatic bypass while others only return recommendations, and notes requirements for session reuse/proxies/paid solvers. However, it lacks details on prerequisites (e.g., attached browser, loaded page), potential side effects, or failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded with the key action ('One-shot: detect anti-bot wall...'). The bullet list for bypass routing is well-structured and adds clarity without unnecessary words. Very minor redundancy (e.g., 'No wall detected → returns ok with empty bypass' could be inferred from 'detection + bypass result').

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (multiple wall types, different bypass strategies) and the existence of an output schema, the description adequately covers the core behavior. However, it omits important context such as expected page state (e.g., must be navigated to a page with a wall), error handling, and whether the tool is idempotent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the schema provides complete coverage. The description adds no parameter information, which is acceptable since none are needed. Per guidelines, baseline score is 4 for zero-parameter tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool detects anti-bot walls and applies the best bypass in one shot. It specifies supported walls (Cloudflare Turnstile, DataDome, etc.) and how bypass differs, distinguishing it from sibling tools like 'detect_anti_bot' (likely detection only) and 'verify_cf' (focused solely on Cloudflare).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use the tool (on a page with an anti-bot wall) and provides routing details for different wall types. It implicitly covers when not to use (no wall returns ok) but does not explicitly mention alternative sibling tools or when to prefer them over this one-shot approach.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

detect_anti_botA

⭐ Analyze current page + HTTP headers to identify anti-bot system.

Detects: Cloudflare, DataDome, PerimeterX/HUMAN, Akamai Bot Manager,
Kasada, Imperva/Incapsula, F5 Shape, none. Returns system + recommended
bypass strategy from our toolkit.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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 that the tool analyzes the current page and headers, which suggests a non-destructive read operation. However, it does not explicitly confirm no side effects, state changes, or prerequisites, leaving some ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: three sentences, front-loaded with an emoji and clear action. It uses a bullet-like list for detected systems, and every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and the existence of an output schema, the description covers the tool's purpose and return value (system + recommended bypass strategy) adequately. It provides sufficient context for an agent to understand what the tool does and what it returns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, and the schema is empty (100% coverage). According to guidelines, with 0 parameters the baseline is 4. No additional parameter info is needed, and the description does not add any, which is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: analyze current page and HTTP headers to identify anti-bot systems. It lists specific systems (Cloudflare, DataDome, etc.) and mentions returning the identified system plus a recommended bypass strategy. This distinguishes it from sibling tools like detect_and_bypass, which likely also executes bypass.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when needing to identify which anti-bot system is present on a page, and mentions a recommended bypass strategy. While it does not explicitly state when not to use or compare to siblings, the context of sibling tools (e.g., detect_and_bypass) makes the use case clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

detect_content_patternA

Heuristically detect the most likely repeating container on page.

Useful for scraping job listings, product cards, search results. Returns top-3 candidate CSS selectors ranked by child-similarity.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that the tool uses heuristics, returns top-3 candidate selectors ranked by child-similarity, and is intended for scraping. However, it does not explicitly state that it is read-only or describe any side effects. Since no annotations are provided, the description carries the full burden, and it partially achieves transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: three sentences covering purpose, use cases, and output format. Every sentence adds value, and the key information is front-loaded in the first sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters and an output schema exists (though not shown), the description is largely complete. It explains the detection approach, typical uses, and what is returned. It could mention limitations or assumptions (e.g., page must have repeating elements), but the provided information suffices for understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, so the input schema is empty. According to guidelines, 0 parameters yields a baseline score of 4. The description does not need to add parameter semantics as there are none.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Heuristically detect the most likely repeating container on page.' It specifies the resource (page) and the output (CSS selectors). The use cases listed (job listings, product cards, search results) further clarify its purpose. It distinguishes from sibling tools like extract_structured by focusing on detecting repeating containers rather than extracting data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context for when to use it ('Useful for scraping...'), but does not explicitly state when not to use it or mention alternatives among siblings. This implicit guidance is adequate but lacks explicit exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dialog_auto_handleA

⭐ Install a PERSISTENT auto-handler for native browser dialogs. Unlike dialog_handle (one-shot, action baked in at arm time), this one stays armed across many dialogs and reads its config at fire time — call again with new action/types to update without re-arming.

Args:
    action: "accept" (Leave / OK) or "dismiss" (Cancel / Stay)
    enabled: True to arm, False to disable (config preserved)
    types: optional list to scope handling — any of:
           ["alert", "confirm", "prompt", "beforeunload"]
           None (default) = handle all types.
    text: prompt response when action="accept" on prompt() dialogs;
          also basic-auth "user:pass" for HTTP 401.

Common patterns:
    # Form pages with "unsaved changes" guard — auto-leave forever
    dialog_auto_handle(action="accept", types=["beforeunload"])

    # Pages that spam alert() — auto-OK
    dialog_auto_handle(action="accept", types=["alert"])

    # Disable when done
    dialog_auto_handle(enabled=False)

Native dialogs only (Chrome's own card UI). HTML/CSS modal overlays
are regular DOM — use click_text("Cancel") / click_role for those.
ParametersJSON Schema
NameRequiredDescriptionDefault
actionNoaccept
enabledNo
typesNo
textNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations, so description carries full burden. Describes persistence across dialogs, config read at fire time, update without re-arming, and limitation to native dialogs. Missing potential side effects, but behavior is well detailed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with key info, uses bullet points and examples. Slightly long but each sentence adds value. Could be trimmed, but structure is clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and 4 params, description covers usage patterns, limitations (native only), and parameter details. Output schema exists but not needed per rules. Provides enough for agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% so description must explain all 4 params. It does: action (accept/dismiss), enabled (arm/disable), types (scoping list, default all), text (prompt response or basic auth). Adds meaning beyond schema defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it installs a persistent auto-handler for native browser dialogs, using specific verb 'install' and resource 'auto-handler'. It distinguishes from sibling dialog_handle (one-shot vs persistent).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly contrasts with dialog_handle for one-shot use, provides contextual patterns (form unsaved changes, alert spam) and when to disable via enabled=False. Lists alternatives for HTML overlays.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dialog_handleA

Pre-arm handler for next alert/confirm/prompt. Call BEFORE action that triggers it.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNoaccept
textNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It explains the tool is a pre-arm handler, implying it prepares for a dialog, but does not disclose behaviors like what happens if multiple calls are made, if no dialog appears, or if the action parameter is invalid. The description is adequate but lacks depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that efficiently conveys the tool's purpose and usage. Every word earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple and has an output schema, so return values need not be explained. However, the description omits details about parameter semantics (action values, text usage), which are necessary for correct invocation. It is not fully complete given the lack of parameter documentation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%. The description does not explain the meaning or valid values for the 'action' parameter (e.g., accept, dismiss) or the 'text' parameter (for prompt dialogs). It adds minimal value beyond what the schema provides, leaving ambiguity for the agent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: a pre-arm handler for the next alert/confirm/prompt dialog, which is a specific verb+resource combination. It distinguishes itself from sibling tools like dialog_auto_handle by explicitly noting the timing (call before action).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit usage guidance: 'Call BEFORE action that triggers it.' This tells the agent when to invoke the tool. However, it does not mention when not to use it or provide alternatives like dialog_auto_handle, which slightly lowers the score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

drag_and_dropB

Drag from (start_x, start_y) to (end_x, end_y).

ParametersJSON Schema
NameRequiredDescriptionDefault
start_xYes
start_yYes
end_xYes
end_yYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description should disclose behavioral details. It only states the basic action without mentioning side effects, event triggering, or browser requirements. This is insufficient for an agent to understand the tool's impact.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded, consisting of a single sentence. It could be slightly more detailed without losing conciseness, but it is not verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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 an output schema, the description lacks necessary context such as coordinate interpretation, default behavior, or return value. It is incomplete for an agent to use confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description implicitly maps parameters by naming start_x, start_y, end_x, end_y in the text, but it does not explain coordinate system, units, or constraints. Given 0% schema coverage, this adds minimal value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool performs a drag action from one point to another, using specific coordinates. This distinguishes it from sibling tools like click, hover, and mouse_move.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like mouse_move or drag-and-drop with specific elements. There is no mention of prerequisites or context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

emulate_cpuA

Throttle CPU via CDP Emulation.setCPUThrottlingRate.

rate=1 is no throttle; rate=4 makes CPU ~4× slower (matches DevTools default
"4x slowdown"). rate=6 simulates low-end mobile. Pass 1 to reset.
ParametersJSON Schema
NameRequiredDescriptionDefault
rateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It explains the behavioral effect of rate values and that setting rate=1 resets the throttle. It does not discuss potential side effects or permissions, but for a simple emulation tool, this is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two well-structured sentences. The first sentence states the action and mechanism. The second sentence explains rate values. No redundant words; every part adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (single parameter, no required params, output schema exists), the description is complete. It covers all necessary information for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% coverage and only provides type and default. The description adds critical semantics: meaning of rate=1 (no throttle), rate=4 (4x slowdown), rate=6 (low-end mobile), and that 1 resets. This fully compensates for the lack of schema description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool throttles CPU via CDP Emulation.setCPUThrottlingRate. It provides explicit rate values and their effects, distinguishing it from other emulation tools. The verb 'Throttle' and resource 'CPU' are specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear usage context by mapping rate values to real-world scenarios (DevTools default, low-end mobile, reset). It does not explicitly mention when not to use, but the single-parameter nature and lack of sibling CPU tools make usage straightforward.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

emulate_deviceA

Emulate a device via CDP Emulation.setDeviceMetricsOverride + UA override.

Presets: iphone-15, iphone-se, pixel-8, galaxy-s23, ipad, desktop (reset).
Also sets the matching User-Agent string so UA-sniffing backends respond
with the mobile variant.
ParametersJSON Schema
NameRequiredDescriptionDefault
presetNodesktop

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Describes the mechanism (CDP Emulation.setDeviceMetricsOverride + UA override), lists presets including desktop reset, and mentions UA-sniffing backend implications. Good behavioral context beyond the schema, though persistence and scope are not addressed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences front-loading the purpose and mechanism. 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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Sufficient for a simple tool with one parameter and an output schema. Covers core behavior, presets, and side effect (UA override). Minor gap: no mention of session scope or persistence.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description compensates by listing possible preset values (iphone-15, pixel-8, etc.) and their effects, including the reset functionality. Adds meaning beyond the bare schema definition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it emulates a device via CDP commands, lists presets. Distinguishes from sibling tools like emulate_cpu and emulate_network by specifying the resource (device) and mechanism.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage through preset examples but does not explicitly state when to use this tool versus alternatives like emulate_network or emulate_cpu. No when-not or alternative guidance provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

emulate_networkA

Throttle network via CDP Network.emulateNetworkConditions.

Presets match Chrome DevTools device mode (offline/slow-3g/3g/slow-4g/4g/wifi).
Pass preset="no-throttle" to reset. Override individual knobs with
latency_ms / download_bps / upload_bps.
ParametersJSON Schema
NameRequiredDescriptionDefault
presetNo4g
latency_msNo
download_bpsNo
upload_bpsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so description carries full burden. It mentions throttling and CDP source but does not disclose potential side effects like disrupting ongoing requests or persistence of settings. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences: purpose, preset enumeration, and override/reset instructions. Front-loaded, no redundant information, every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be described. Tool has 4 parameters, all covered. Lacks mention of whether settings persist across navigations, but overall sufficient for agent invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so description must compensate. It explains preset values and introduces override knobs (latency_ms, download_bps, upload_bps), adding meaning beyond schema titles. All parameters are addressed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool throttles network via CDP Network.emulateNetworkConditions, and lists presets matching Chrome DevTools. The name aligns well with the verb 'emulate' and resource 'network', distinct from siblings like emulate_cpu or emulate_device.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly lists presets (offline/slow-3g/3g/slow-4g/4g/wifi/no-throttle) and explains how to reset with 'no-throttle' or override with individual parameters. It does not explicitly state when not to use or contrast with other network-related tools, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

evaluateC

Execute arbitrary JS expression in page context. Returns stringified result.

ParametersJSON Schema
NameRequiredDescriptionDefault
expressionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description carries full burden. It states 'Execute arbitrary JS expression' but does not disclose potential side effects, security implications, error handling, or async behavior. Minimal behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no fluff, front-loaded purpose. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for the basic function with one parameter and an output schema, but lacks context on side effects, error handling, and frame context differentiation from siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not add meaning beyond the parameter name 'expression'. No format, length limits, or examples are provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it executes arbitrary JS expressions in page context and returns stringified results. However, it does not distinguish from the sibling tool 'frame_evaluate' which evaluates JS in a frame, lacking differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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., 'frame_evaluate'). No cautions about executing arbitrary code or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

export_harC

Export captured network traffic to HAR-like JSON file.

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full responsibility. It does not disclose side effects (e.g., whether the file is written to disk or returned, if prior captures are cleared, or behavior when filename is null).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no wasted words, but it is too terse and omits important information. It earns its place but could be expanded without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has only one optional parameter and an output schema (not shown), the description fails to explain default behavior or return value. The lack of detail on required context (e.g., network capture active) makes it incomplete for a safe invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter 'filename' is not mentioned in the description. With 0% schema description coverage, the description adds no meaning beyond the schema's minimal definition. The agent is left to guess the effect of null versus a string filename.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the verb 'Export', the resource 'captured network traffic', and the output format 'HAR-like JSON file'. It uniquely identifies the tool's function among siblings with no other export tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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, nor prerequisites like needing to start network capture first. The context is implied but not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

extract_structuredB

Extract structured data from repeating containers.

fields: [{name: "title", selector: ".job-title", attribute: "text|href|src|..."}]
Only direct text nodes of element are captured for "text" (prevents child-field mixing).
ParametersJSON Schema
NameRequiredDescriptionDefault
container_selectorYes
fieldsYes
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses one behavioral trait: for attribute 'text', only direct text nodes are captured, preventing child-field mixing. However, it does not describe other behaviors such as handling of missing selectors, return format (though output schema may cover this), or whether the tool is idempotent. The disclosure is partial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences and an inline example. It is front-loaded with the purpose and includes a practical example. Every sentence serves a clear purpose, and there is no redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has three parameters (one complex) and no annotations, the description is moderately complete. The fields parameter example and behavioral note are helpful. However, it lacks context on container_selector usage, limit behavior, and return value structure (though output schema may compensate). Overall, it covers the core but leaves gaps for an AI agent to interpret.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description is critical. It explains the 'fields' parameter with an example object and clarifies the 'text' attribute behavior. However, it does not explain 'container_selector' (likely a CSS selector, but not stated) or 'limit' (default 100, but no elaboration). The description adds value for the most complex parameter but is incomplete for all three.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool extracts structured data from repeating containers, which is a specific and distinct purpose. The example with fields and selectors reinforces this. However, it does not explicitly differentiate from similar tools like extract_table or scrape_page, though the context of 'repeating containers' provides some distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description does not mention scenarios where this tool is preferred or not, nor does it list sibling tools or exclusion criteria. The example implies usage for repeating HTML structures, but explicit usage direction is absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

extract_tableB

Extract a as JSON rows with optional header keys.

ParametersJSON Schema
NameRequiredDescriptionDefault
selectorNotable
include_headersNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description implies a non-destructive read operation but does not explicitly state it. With no annotations, the description could be more transparent about side effects or error conditions, but it is not misleading.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that conveys the core functionality. It is front-loaded and efficient, though it could include more detail without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with only two parameters and an output schema, the description is mostly complete. However, it omits explanation of the 'selector' parameter and does not clarify that the tool operates on the current page DOM.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description mentions 'optional header keys' which adds meaning to the 'include_headers' parameter beyond the schema. However, the 'selector' parameter is not explained, and with 0% schema coverage, the description only partially compensates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Extract' and the resource '<table> as JSON rows', with the optional header keys feature. It is specific enough to distinguish from siblings like 'extract_structured' or 'scrape_page'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives (e.g., 'extract_structured', 'get_text'). There is no mention of prerequisites 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.

fillC

Fill input/textarea via set_value (fast, works for standard inputs).

ParametersJSON Schema
NameRequiredDescriptionDefault
refNo
selectorNo
valueNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Description mentions 'fast' and 'works for standard inputs' but fails to disclose event triggering, compatibility with non-inputs, or any side effects; annotations absent so burden is on description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very concise single sentence, but lacks necessary detail; not all info is earned as it omits parameter explanations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 3 parameters, no annotations, and an output schema not explained, the description is insufficient for complete agent comprehension.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 0% coverage for parameter descriptions, and the description adds no meaning to ref, selector, or value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fills input/textarea via set_value, but does not distinguish it from sibling tools like fill_form or smart_fill.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives; only implies it's for standard inputs but lacks explicit context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fill_formB

Fill multiple fields then optionally submit.

fields: [{ref: "e1", value: "..."}, {selector: "#email", value: "..."}]
ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsYes
submit_refNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It does not mention side effects, waiting behavior, error handling, or what happens upon submission. Only a parameter example is given, which is insufficient for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences and an example. Every part serves a purpose, with no redundancy or unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that there is an output schema (unspecified) and the tool involves form interaction with potential errors, the description omits important details like return value, error states, and page interaction guarantees. It is too minimal for the task's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description partially compensates by explaining the structure of 'fields' array with examples of 'ref' and 'selector' keys. However, it does not clarify all possible properties (since additionalProperties is true) and does not elaborate on 'submit_ref' beyond its existence.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Fill multiple fields then optionally submit,' with an example showing field objects, making the verb and resource obvious. It distinguishes from siblings like 'fill' (single field) and 'smart_fill' (AI-assisted) through the explicit mention of multiple fields.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool vs alternatives such as 'fill', 'type_text', or 'smart_fill'. There is no mention of prerequisites (e.g., form must be visible) or conditions for submission.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_by_imageA

⭐ Find an image on the current page via OpenCV template matching.

Takes a fresh screenshot, matches against template_path image, returns
(x, y) center of best match. Use for finding visual buttons/icons when
DOM selectors aren't available.

Returns JSON: {"found": true, "x": ..., "y": ..., "score": ..., "template": "..."}
ParametersJSON Schema
NameRequiredDescriptionDefault
template_pathYes
thresholdNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses behavior: takes a fresh screenshot, matches against template_path, returns coordinates. It also mentions the threshold parameter and the return JSON structure. It does not detail failure modes (e.g., no match) but the return JSON includes 'found' boolean, covering that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (4 lines) with a clear structure: purpose, behavior, return format. It uses an emoji and bullet points for readability. No redundant sentences. Slight improvement could be to group parameter details more explicitly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given moderate complexity, output schema included, and good description of parameters and return values, the description is mostly complete. It explains when to use (DOM not available) but does not contrast with sibling tools like click_at_image or vision_locate, which could help.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% (schema only has type and title), so the description must compensate. It explains template_path as the path to the template image and threshold with default 0.85, but does not explicitly define threshold as matching sensitivity or specify path formats. This adds some value but leaves gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'find' and resource 'image on the current page' with method 'OpenCV template matching'. It distinguishes from DOM-based tools by noting use when DOM selectors aren't available, and from sibling tools like click_at_image by focusing on finding coordinates rather than clicking.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states 'Use for finding visual buttons/icons when DOM selectors aren't available.' This provides clear guidance on when to use. However, it does not explicitly mention when not to use or directly reference sibling tools like click_at_image or vision_locate, which are alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fingerprint_rotateA

Override fingerprint vectors for active tab: user_agent, accept_language, platform (Win32/MacIntel/Linux x86_64), timezone (Asia/Jakarta, etc). Applied via CDP. Persists until next tab creation.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_agentNo
accept_languageNo
platformNo
timezoneNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description reveals that the override is applied via CDP and persists until tab creation. It does not disclose side effects, reversibility, or what happens if no parameters are set. The behavior is partially transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences plus a fragment, highly efficient with no extraneous words. It front-loads the key action and then adds implementation details, making it easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Although an output schema exists, the description omits important context: whether parameters are optional, default behavior when all are null, error scenarios, and whether the override is additive or replaces all fingerprints. This leaves gaps for a mutation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, yet the description only lists parameter names with a single example for timezone (Asia/Jakarta). It does not specify formats, allowed values, or constraints for user_agent, accept_language, or platform, leaving the agent to infer from names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool overrides fingerprint vectors for the active tab, listing the specific parameters (user_agent, accept_language, platform, timezone). It distinguishes itself from sibling tools by specifying scope and persistence, so purpose is explicit and unique.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains that the override is applied via CDP and persists until next tab creation. However, it does not provide guidance on when to use this tool versus alternatives, nor does it mention prerequisites or typical use cases like anti-detection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

form_introspectA

⭐ Detailed form analysis in a single call. Returns label, framework binding (react/vue/solid_or_svelte/lit), validation state, and constraints (pattern, min/max length, required) per field.

Args:
    form_selector: CSS selector for a specific form (default: scan
        whole document for visible inputs)
ParametersJSON Schema
NameRequiredDescriptionDefault
form_selectorNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, but the description discloses that it scans for visible inputs by default and returns detailed field information. It implies a read-only operation, which is sufficient transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, front-loaded with a star and purpose, and uses a bullet list for return fields. No unnecessary repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity and the presence of an output schema, the description covers the key aspects (what it returns, how to specify a form). It lacks details on error handling or non-form elements, but is adequate for decision-making.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The sole parameter 'form_selector' is clearly explained as a CSS selector with a default behavior of scanning the whole document. Since schema coverage is 0%, the description provides necessary semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it performs detailed form analysis, returning label, framework binding, validation state, and constraints per field. This distinguishes it from sibling tools like fill_form or extract_structured.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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 vs alternatives. The description implicitly suggests it's for analyzing forms, but doesn't mention exclusions or when to use other tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

frame_evaluateA

Run JS inside an iframe matching URL pattern.

Same-origin frames only: cross-origin iframes (reCAPTCHA bframe, payment
widgets, third-party embeds) block contentWindow.eval and return an error.
ParametersJSON Schema
NameRequiredDescriptionDefault
frame_url_patternYes
expressionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description takes full burden and clearly discloses a key behavioral trait: same-origin only and error on cross-origin. It does not detail other behaviors like return format, but the output schema exists to cover that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no waste. First sentence states action, second provides critical constraint. Highly concise and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 2 parameters and an output schema, the description covers a key limitation but lacks parameter format details and usage context. It is not fully complete for an AI agent to use without additional inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description adds minimal meaning to parameters. 'matching URL pattern' for frame_url_pattern is vague (no format), and 'JS' for expression is generic. No examples or additional guidance provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it runs JS inside an iframe matching a URL pattern. It specifies the verb 'Run' and resource 'iframe', distinguishing it from main-page evaluation tools like 'evaluate' among siblings. However, it does not explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions same-origin restriction and that cross-origin iframes return an error, providing a condition for use. But it does not explicitly compare to sibling tools like 'evaluate' or 'list_frames', leaving the agent to infer usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_attributeC

Get attribute value of element.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
refNo
selectorNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavior. It only states the action without mentioning error handling, return behavior for missing elements, or side effects. The agent gets minimal insight beyond the surface operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise at five words, front-loading the core action. However, it may be too brief, sacrificing necessary details for brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complex browser automation context and many sibling tools, the description lacks critical details like how to target the element and what happens with multiple matches. The agent would need to infer or experiment, reducing completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, requiring the description to explain parameters. The description does not mention any parameter purpose (e.g., how to specify the element via 'ref' or 'selector', or what 'name' refers to). No additional semantics are provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get') and resource ('attribute value of element'), making the basic purpose clear. However, it does not differentiate from sibling tools like 'get_text' or 'get_html', which have similar targeting mechanisms.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives, nor are there any prerequisites or exclusions. The description is generic and does not help an agent decide contextually.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_htmlA

Return innerHTML (or outerHTML) of element or whole document.

ParametersJSON Schema
NameRequiredDescriptionDefault
selectorNo
outerNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears the full burden. It does not disclose behavioral traits such as the effect of null selector (returns whole document), error handling, or any side effects. Essential transparency is lacking.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence, front-loaded with the verb, and contains no unnecessary words. It efficiently communicates the core functionality.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema (not shown but indicated), the description need not detail return values. However, it lacks behavioral details like error handling or parameter defaults, making it slightly incomplete for a tool with zero schema descriptions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It adds meaning by linking 'innerHTML or outerHTML' to the 'outer' parameter and 'element or whole document' to 'selector.' However, it does not fully detail parameter behavior or return format, leaving gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'return' and the specific resources 'innerHTML (or outerHTML) of element or whole document.' It effectively distinguishes from sibling tools like get_text or get_attribute by specifying HTML content.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool (when HTML content is needed) but provides no explicit guidance on when not to use it or alternatives. Given the large number of sibling tools, this lack of differentiation is a notable gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_page_errorsA

Retrieve JS errors caught on active tab.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must convey behavior. It says 'caught on active tab' but doesn't clarify if it returns all errors since navigation, only current ones, or if it is a snapshot. For a parameterless tool, this is acceptable 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with key information. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters and an existing output schema (not shown), the description is adequate for a simple retrieval tool. However, it could mention that it returns an array of error objects with details like message and stack.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so schema coverage is 100% trivially. Description adds no extra meaning beyond 'get errors' but that is sufficient given no params.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the verb 'retrieve' and resource 'JS errors' from the 'active tab'. It distinguishes from sibling tools like console_get which retrieves console logs, and network-related error tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives like console_get or network error tools. The description does not specify context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_textB

Return innerText of element (by selector or ref) or whole document.

ParametersJSON Schema
NameRequiredDescriptionDefault
selectorNo
refNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries full burden. It only states the basic return value (innerText) but does not disclose behavior for missing elements, error handling, or edge cases like null/empty results. Basic but insufficient for safe invocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, very concise and front-loaded. However, it is almost too minimal—could benefit from a bit more detail without losing clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return value explanation is not needed. However, with 0% schema coverage and no annotations, the description lacks completeness on parameter behavior, default actions, and error cases. For a tool with optional parameters, more context is expected.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, requiring the description to explain parameters. It mentions 'selector or ref' but gives no format, constraints, or usage hints. The mutual exclusivity of selector and ref is implied but not explicit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns innerText of an element (by selector or ref) or the whole document. This distinguishes it from siblings like get_html (HTML content) and get_attribute (specific attribute).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by mentioning 'by selector or ref', but does not provide explicit guidance on when to use selector vs ref, or when to prefer this tool over alternatives like evaluate or get_html. No when-not-to-use or fallback advice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_urlA

Return current URL of active tab.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description implies a non-destructive read operation. However, it does not disclose edge cases (e.g., if no active tab exists) or any side effects. Adequate but not detailed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, 7 words, no extraneous information. Perfectly concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 parameters, output schema present), the description is complete. It clearly defines the tool's action and resource.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, and the description confirms no inputs needed. Schema coverage is 100%, so baseline 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Return' and the resource 'current URL of active tab', making it distinct from siblings like 'assert_url_matches' or 'navigate'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 'assert_url_matches' or 'get_text' which might also provide URL info. Missing explicit context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_viewport_sizeA

Return current window dimensions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description alone should disclose behavioral traits. It only states the action without mentioning prerequisites, side effects (none expected), or error conditions. Minimal transparency for a read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that is front-loaded and contains no superfluous words. Every word contributes to the meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and an output schema, the description is minimal but sufficient for a trivial getter. However, it lacks any usage context, making it barely adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, and schema coverage is 100%. The description adds nothing beyond the schema, but the baseline of 4 is appropriate given the simplicity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies 'Return current window dimensions' with a specific verb and resource. It distinguishes itself from the sibling tool 'set_viewport_size' which sets the viewport.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives (e.g., after page load, for responsive checks). The description lacks any direction on context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

go_backA

Go back in history.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided and description lacks behavioral details such as whether it reloads the page, preserves scroll position, or fails if history is empty.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no wasted words; appropriately concise for a parameterless tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate given zero parameters and existence of output schema, but lacks context about preconditions and side effects like page reload or empty history handling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so description adds no param information but baseline is 4 per guidelines; schema coverage is 100%.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool performs a 'back' navigation in history, using a specific verb and resource that distinguishes it from siblings like 'go_forward' and 'navigate'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use or avoid this tool; does not mention alternatives or prerequisites like requiring history to exist.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

go_forwardA

Go forward in history.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. The minimal text 'Go forward in history' does not disclose what happens when there is no forward history, whether the action is non-destructive, or any side effects. This is insufficient for a transparent specification.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, short sentence with no unnecessary words. It is front-loaded and efficient, conveying the essential information without waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters and an output schema exists, the description is adequate but minimal. It does not explain the output or handle edge cases (e.g., no forward history). For a simple navigation tool, this may be sufficient, but it lacks completeness in covering potential states.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so the schema coverage is 100% trivially. While the description does not add parameter-level detail (none needed), it clarifies the tool's action beyond the schema. For zero-parameter tools, the baseline is 4, and the description meets this standard.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Go forward in history' clearly states the verb 'go forward' and the resource 'history'. It distinguishes from sibling tools like 'go_back' (back in history) and 'reload' (refresh current page), making the purpose specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage in browser navigation history, but provides no explicit guidance on when to use this tool versus alternatives like 'go_back' or 'reload'. No exclusions or conditions are mentioned, leaving the agent to infer context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hoverC

Hover over element.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNo
selectorNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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 only states 'Hover over element' without disclosing side effects, event triggering, or behavior on failure. Minimal value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very concise (three words) but at the expense of necessary information. Conciseness is valued, but not at the cost of clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no parameter explanations, the description is severely incomplete for a tool that requires element identification. The output schema is present but not described. Lacks all behavioral and usage context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% (no parameter descriptions in schema). The description adds zero information about the two parameters (ref, selector) – not even their roles or how to use them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it hovers over an element, a standard UI action. However, it does not differentiate from sibling tools like mouse_move or hover-related actions found in similar tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use hover versus click, mouse_move, or other alternatives. No context about prerequisites or conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

http_requestA

HTTP request with TLS-perfect browser fingerprint via curl_cffi. Use for API scraping after browser login — same stealth as real Chrome's JA3/JA4.

Args:
    url, method: target URL and HTTP verb
    impersonate: chrome, chrome124, firefox, safari, edge (default chrome)
    use_browser_cookies: auto-inject cookies from active browser tab
    headers, params: extra headers/query params
    data: raw body string (form-urlencoded or custom)
    json_body: JSON body dict (sets Content-Type automatically)
    timeout, follow_redirects: usual HTTP options
    return_mode: auto (json if parseable else text), json, text, or meta (status+headers only)
ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
methodNoGET
impersonateNochrome
use_browser_cookiesNo
headersNo
paramsNo
dataNo
json_bodyNo
timeoutNo
follow_redirectsNo
return_modeNoauto

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It explains the stealth fingerprinting and cookie injection behavior but does not disclose error handling, rate limiting, or the stateless nature beyond schema defaults.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, with a clear purpose statement followed by a well-structured list of arguments. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of 11 parameters and presence of an output schema, the description thoroughly covers input semantics and purpose, making it complete for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description explains all 11 parameters in detail, including allowed values for impersonate, behavior of use_browser_cookies, and options for return_mode. This adds significant value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool makes HTTP requests with TLS-perfect browser fingerprinting via curl_cffi, explicitly for API scraping after browser login. It distinguishes from sibling tools like http_request_with_session by focusing on stealth and single requests.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description advises 'Use for API scraping after browser login' but does not explicitly contrast with alternatives or mention when not to use it. Guidance is present but could be more precise.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

http_request_with_sessionA

⭐ Authenticated HTTP request that piggybacks on the BROWSER's session.

Combines:
  - cookies from active tab (use_browser_cookies=True in http_request)
  - Authorization header — explicit auth_header, OR auto-extracted
    from network_index (the most recent same-host request captured
    via network_start). Pages that hold bearer tokens in JS memory
    only become reachable after navigate / interaction emits a
    request — call network_start once at session begin.

Args:
    url, method, json_body, data, impersonate, return_mode, timeout:
        same as http_request
    extra_headers: merged on top of auto-detected ones
    auth_header: explicit bearer / basic value, e.g. "Bearer eyJ..."

Returns same shape as http_request.
ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
methodNoGET
json_bodyNo
dataNo
extra_headersNo
auth_headerNo
impersonateNochrome
return_modeNoauto
timeoutNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses that the tool piggybacks on the browser session, combines cookies and authorization headers, and explains how auth extraction works (explicit or from network_index). It mentions the return shape is same as http_request, but does not cover error conditions 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear heading, a bullet list of combined features, and a concise parameter breakdown. Every sentence adds necessary information without redundancy, making it easy to scan and understand.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (9 parameters, 1 required) and the existence of an output schema, the description covers the core authentication behavior and parameter nuances. It references the output shape and setup requirements (network_start), but could be more thorough on potential failure modes or exact cookie handling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, so the description must add meaning. It explains the auth_header and extra_headers parameters in detail, and references that common parameters (url, method, etc.) behave like http_request. This adds significant value beyond the schema, though it defers explanation for shared params.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it is an authenticated HTTP request that uses the browser's session, distinguishing it from the sibling tool http_request by adding session-based auth. The verb 'make' is implied, and the resource is HTTP requests with session context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use this tool (when authentication via browser session is needed) and provides context about combining cookies and auth headers. It hints at alternatives by mentioning 'same as http_request' and the need for network_start, but does not explicitly state 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.

http_session_cookiesA

⭐ Inspect which browser cookies would be sent with a request to URL.

Helpful to verify session sharing works before making requests.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It indicates a read-only inspection ('inspect'), implying no destructive side effects. However, it could more explicitly confirm that no cookies are modified or requests sent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no fluff. The emoji front-loads attention, and every word contributes to clarity. Ideal length for a simple inspection tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema, the description adequately covers the tool's purpose and usage context. It omits details about error states or edge cases, but for a straightforward inspection, it is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description should compensate. It only loosely mentions 'URL' without specifying format constraints (e.g., absolute, protocol required), leaving the agent to infer parameter semantics from context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Inspect which browser cookies would be sent with a request to URL.' It uses a specific verb (inspect) and resource (cookies), and the mention of verifying session sharing distinguishes it from siblings like cookie_list or http_request.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context on when to use the tool: 'Helpful to verify session sharing works before making requests.' It implicitly suggests using it pre-request, but lacks explicit exclusion of alternatives or when-not-to-use scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

humanize_clickC

⭐ Click with Bezier-curve mouse approach + randomized dwell.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNo
selectorNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must fully disclose behavior. It mentions 'Bezier-curve' and 'randomized dwell' to hint at human-like slow movement, but omits key details like whether it triggers events, works on hidden elements, or has a timeout. This is insufficient for an agent to anticipate 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with a star emoji, making it concise and front-loaded. However, it sacrifices clarity and completeness for brevity, earning a middle score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists (not shown) and the tool involves a non-trivial humanized click behavior, the description is inadequate. It fails to cover return values, prerequisites, or the distinction from similar tools, leaving the agent underinformed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description should explain the two parameters (ref and selector). It does not mention them at all, leaving the agent to infer their meaning from common patterns or sibling tools. This is a significant gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Click with Bezier-curve mouse approach + randomized dwell', which specifies the action (click) and a distinguishing technique (Bezier curve) that sets it apart from a plain click. However, it does not explicitly mention the target resource, such as 'web element' or 'UI component', leaving some ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus the many sibling click variants (e.g., click, click_and_wait, click_at_corner). The description lacks any context about preferred scenarios, limitations, or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

humanize_typeC

⭐ Type with Gaussian-distributed keystroke delays.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
mean_delayNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Only mentions Gaussian-distributed delays but lacks details on other behaviors (e.g., keystroke order, special characters, abort behavior). With no annotations, the description fails to fully disclose 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very brief, which is efficient but omits necessary details. It is front-loaded with purpose but lacks completeness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (2 parameters), the description is too sparse. It fails to explain output, parameter role (mean_delay), and context relative to sibling tools like type_text.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and description does not explain parameters. The description adds no meaning beyond the schema's field names and types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool types text with Gaussian-distributed delays, using a specific verb and resource. It distinguishes from sibling tools like type_text (likely unhumanized) and humanize_click.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use humanized typing versus alternatives like type_text. No mention of use cases, prerequisites, or 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.

indexeddb_deleteB

Delete an IndexedDB database by name (scoped to current origin).

ParametersJSON Schema
NameRequiredDescriptionDefault
database_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior2/5

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 the destructive nature (Delete) and scoping, but lacks important behavioral details such as irreversibility, error handling (e.g., database not found), and impact on ongoing operations. For a deletion tool, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise but overly minimal. It is front-loaded but lacks essential details to earn its place as a complete explanation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool and presence of an output schema, the description is adequate but could be improved by mentioning prerequisites (e.g., must be on the correct origin) and suggesting how to get database names (e.g., using indexeddb_list).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds no meaning beyond the schema title 'Database Name'. It does not explain where to obtain the name, whether it includes version, or any constraints. Schema description coverage is 0%, and the description fails to compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (delete), the resource (IndexedDB database), and a key constraint (scoped to current origin). It distinguishes it from siblings like indexeddb_list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for databases on the current origin but does not explicitly state when to use this tool vs alternatives like indexeddb_list or other storage deletion tools. No explicit when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

indexeddb_listA

List IndexedDB databases for the current origin.

Reads via CDP IndexedDB.requestDatabaseNames. Use indexeddb_delete(name)
to drop one. Useful for clearing SPA state (many PWAs store auth / drafts
in IndexedDB rather than localStorage).
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description carries the burden. It discloses the tool uses CDP IndexedDB.requestDatabaseNames and explains its utility. It implies a read-only operation, which 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the primary purpose, efficient and no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and likely a simple output (list of database names), the description is complete. It explains what the tool does and why it's useful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so baseline 4 is appropriate. The description does not need to add parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists IndexedDB databases for the current origin. It differentiates from the sibling tool indexeddb_delete by mentioning it as an alternative for dropping databases.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context for when to use the tool (clearing SPA state, PWAs storing auth/drafts). It does not explicitly state when not to use it, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

inject_init_scriptA

Register a script that runs before page scripts on every navigation of the CURRENT tab. Scope is the active tab/target only — it is NOT auto-applied to other open tabs or to tabs opened later; re-run per tab if needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
scriptYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Discloses key behavioral traits: scoped to current tab, runs on every navigation, not auto-applied to other tabs. Lacks details on removal or persistence, but sufficient for basic understanding.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with core action and scope clarification. No redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so return details are not needed. Covers core functionality, scope, and limitation. Does not mention unregistration or error handling, which is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but description does not elaborate on the 'script' parameter beyond its existence. No format, size limits, or examples provided, adding minimal value over the field name.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Register a script that runs before page scripts on every navigation' with specific verb and resource. Emphasizes per-tab scope, distinguishing from any sibling that might apply globally.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly indicates it's for the current tab only, not auto-applied to others, and needs re-run per tab. Provides clear context on when not to use, though no alternative sibling is named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

inspect_elementC

Return tag, attributes, position, text for an element.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNo
selectorNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must fully disclose behavior. It lists return fields but omits traits like read-only nature, error handling (e.g., element not found), position format, or whether all attributes are returned. The description is too sparse.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise at one sentence, but this brevity sacrifices necessary detail. It is front-loaded with key information, yet incomplete for effective tool use.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of browser element inspection and many sibling tools, the description lacks return format details, optional parameter behavior, and handling of missing elements. It is not complete enough for an agent to use reliably.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, and the description does not explain the role of 'ref' or 'selector' parameters. It adds no meaning beyond the schema field names, leaving the agent to infer usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns tag, attributes, position, and text for an element, which is a specific verb and resource. However, it does not distinguish itself from sibling tools like get_attribute or get_text, which have overlapping purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like get_attribute, get_text, or get_html. The description offers no context for decision-making.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_chrome_profilesA

List all Chrome/Chromium/Edge/Brave profiles found on this system.

Reads browser 'Local State' JSON (read-only). Returns profile name, user email, path, whether in-use (Chrome currently running on it), and whether it exists.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Description discloses read-only behavior (reads JSON), return fields, and that it checks if profile is in-use. Without annotations, it provides good transparency for a list operation, though could mention potential errors if browser not installed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences: first defines purpose, second adds technical detail. Front-loaded and no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and existence of output schema, description fully covers what the tool does and what it returns. Provides enough context for an AI agent to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters, so baseline 4. Description adds no parameter info needed. Schema coverage is 100% naturally.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it lists browser profiles (Chrome/Chromium/Edge/Brave) from system, specifying the data source ('Local State' JSON) and return fields (name, email, path, in-use, existence). This is specific and distinguishes from sibling tools like list_external_chrome which list instances.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 vs alternatives like list_external_chrome or clone_chrome_profile. No mention of prerequisites or exclusions. Context is implied but not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_external_chromeA

List Chrome processes running on this machine, with their CDP debugging port if any. Use before attach_to_chrome to find a target. Returns array of {pid, debugging_port, user_data_dir, cmd}. Chromes without a debugging port show port=null and cannot be attached unless restarted with --remote-debugging-port=.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses behavior: it lists processes, indicates port availability, and notes that chromes without a port cannot be attached without restarting. This covers the key behavioral aspects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the primary action, no unnecessary words, and all information is relevant and useful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of parameters and presence of an output schema, the description adequately explains the return format (array of objects with specific fields), covers edge cases (port=null), and provides a complete understanding of the tool's functionality.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, and schema coverage is 100% trivially. The description does not need to add parameter info; baseline score of 4 applies per rules.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists Chrome processes with CDP debugging ports, specifies the return structure, and mentions its use before attach_to_chrome, effectively distinguishing it from sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states 'Use before attach_to_chrome to find a target' and explains the port=null case with a restart hint, providing clear guidance on when and how to use the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_framesA

List all iframes and their URLs.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must disclose behavioral traits. It only states the action without mentioning side effects (e.g., whether it is read-only, if it requires a fully loaded page, or if it works across iframes recursively).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise: one short sentence with no superfluous words. Achieves maximum efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and an output schema, the description covers the core purpose. However, it could mention that it lists iframes on the current page and whether it includes nested iframes. Missing some operational context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so schema coverage is 100%. The description adds marginal value by stating that URLs are listed. Per guidelines, baseline is 4 for zero parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the verb 'List' and the resource 'iframes', specifying that it returns their URLs. It effectively distinguishes this tool from siblings like 'frame_evaluate' which likely evaluates code in a frame rather than listing all iframes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives such as 'frame_evaluate' or when it should not be used (e.g., no frames present). Missing context about prerequisites or state requirements.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_instancesA

⭐ List all browser instances with status + last-active time. Also reports external (non-MCP) Chrome processes that may conflict with custom --user-data-dir launches.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It clearly states that the tool lists instances with status and last-active time, and reports external processes. No mention of side effects or permissions, but as a read-only list, it is sufficiently transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no unnecessary words. The description is front-loaded with the star emoji which is minor, but overall efficient and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and an output schema exists, the description covers the key outputs: status, last-active time, and external processes. It is complete for a list tool, though it could mention that it helps in selecting instances for attachment operations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, and schema coverage is 100%. The description does not need to add parameter info. Baseline 4 is appropriate as it adds no parameter value but is not required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool lists all browser instances with status and last-active time, and also reports external Chrome processes. This distinguishes it from siblings like list_external_chrome which only lists external processes, and list_chrome_profiles which lists profiles.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by mentioning conflict detection with external processes, but does not explicitly state when to use this over siblings like list_external_chrome or list_chrome_profiles. No exclusions or alternatives are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

localstorage_clearA

Clear all localStorage for current origin.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description transparently states it clears all localStorage for the current origin, but without annotations, it lacks details on whether the action is reversible, requires permissions, or affects other origins. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One concise sentence that is front-loaded with the action and scope. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists (per context signals) and no parameters, the description provides sufficient context about the action and scope. May be slightly lacking in elaborating on the effect, but adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, and the schema coverage is 100%. The description does not need to add parameter info. Baseline score of 4 is appropriate for zero-parameter tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('clear') and resource ('all localStorage for current origin'), making it specific and distinguishable from siblings like localstorage_get, localstorage_set, and sessionstorage_clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool vs alternatives, such as when to clear all localStorage versus deleting specific keys. No exclusions or prerequisites are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

localstorage_getA

Get localStorage — all keys or one specific key.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description must carry the full burden. It does not disclose what happens when a key is missing, error handling, or origin restrictions. The return format may be in the output schema, but the description lacks 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no redundant words. It is front-loaded and directly to the point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool, the description covers the core functionality. However, it lacks details on side effects, permissions, or error states. The presence of an output schema partially compensates, but behavioral transparency is still incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'key' is explained clearly: a null value retrieves all keys, while a string retrieves that specific key. This adds meaning beyond the schema, which only defines the type and default.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and resource 'localStorage', and specifies two modes: all keys or one specific key. This distinguishes it from sibling tools like localstorage_clear and localstorage_set.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for reading localStorage but does not explicitly state when to use this tool over alternatives like sessionstorage_get. No conditions or exclusions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

localstorage_setC

Set a localStorage entry.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
valueYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It fails to mention that setting a key overwrites existing values, modifies browser state, or any security implications. The description is insufficient for a write operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no fluff. However, it could be slightly expanded without harming conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity, the description is barely adequate. It does not explain that the operation is scoped to the current browser instance, nor does it address the presence of an output schema (likely returning success/failure). Sibling tools imply a need for more context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, and the tool description adds no meaning to the parameters. It does not clarify constraints (e.g., value size, format) or that the value is stored as a string.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Set') and the resource ('localStorage entry'), which is specific and distinguishes it from sibling tools like localstorage_get and localstorage_clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as sessionstorage_set or other storage mechanisms. There is no mention of prerequisites or context for use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_heap_snapshotA

Capture a V8 heap snapshot (.heapsnapshot) — drag into DevTools Memory panel.

Large pages produce 50-200MB snapshots. Saved to ~/.mcp-stealth/exports/.

Args:
    filename: output name (default timestamped)
    stable_ms: consider snapshot complete after no new chunks for this many ms
    max_wait: hard cap on wait even if chunks keep arriving
ParametersJSON Schema
NameRequiredDescriptionDefault
filenameNo
stable_msNo
max_waitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses important behaviors such as typical file sizes (50-200MB), save directory, and parameter effects (stable_ms, max_wait). Without annotations, this provides good transparency, though could mention performance impact.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very concise and well-structured: one-liner purpose, then brief context, then parameter explanations. Front-loaded with key information. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's purpose of capturing a heap snapshot, the description covers the outcome (saved to directory), parameters, and behavior. Even with an output schema, the description is complete for agent understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by explaining each parameter: filename (default timestamped), stable_ms (stability condition), and max_wait (hard cap). This adds significant meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool captures a V8 heap snapshot, specifying the file format and usage. It distinguishes from siblings as no other tool performs this specific function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides context about snapshot size and save location but lacks explicit guidance on when to use this tool over alternatives or when not to use it. The usage is implied but not clearly delineated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mouse_click_xyC

Click at raw viewport coordinates.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYes
yYes
buttonNoleft

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It only says 'Click' but doesn't explain if mouse moves first, whether events are fired, or if coordinates are absolute. The button parameter suggests multiple buttons but no details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise single sentence with no waste. However, it could include critical details while remaining succinct.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 3 parameters (2 required), no schema descriptions, and no annotations, the description is insufficient. It omits coordinate system, button options, and output (output schema exists but not mentioned).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, and the description adds no meaning to parameters. 'x', 'y', 'button' are not explained (e.g., coordinate origin, allowed button values). The default 'left' is in schema but not elaborated.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Click at raw viewport coordinates', specifying the verb (click) and resource (viewport coordinates). It distinguishes from sibling tools like 'click', 'click_at_corner', 'click_at_image', etc., which use selectors or other targeting methods.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use coordinate-based clicking vs alternative click tools (e.g., element-based). No context on prerequisites or scenarios where this tool is preferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mouse_driftA

⭐ Simulate idle mouse wandering to pass behavioral ML.

Random Bezier segments across the viewport — mimics a user thinking. Call BEFORE a critical interaction (form submit, button click) to establish 'human' behavior pattern before the deterministic action.

ParametersJSON Schema
NameRequiredDescriptionDefault
duration_secondsNo
segmentsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses use of random Bezier segments and mimics thinking. With no annotations, it partially covers behavior but omits details like whether it's read-only, side effects on mouse position, or if it blocks.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very concise with three sentences that front-load the core purpose. Every sentence adds value; no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and an output schema (not shown), the description is adequate for purpose and usage but fails to document parameters, leaving gaps in completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Description has 0% schema coverage and does not explain the two parameters (duration_seconds, segments). Names are somewhat self-explanatory, but missing explicit mapping from parameters to behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly describes simulating idle mouse wandering to pass behavioral ML, using Bezier segments. Distinguishes itself from sibling tools like mouse_click_xy or humanize_click by focusing on idle movement rather than deliberate actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states to call before critical interactions (form submit, button click) to establish human behavior. Provides clear context but does not compare to alternatives 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.

mouse_moveB

Move cursor to raw coordinates. humanize=True uses Bezier path.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYes
yYes
humanizeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses that humanize=True uses a Bezier path, implying instant movement otherwise, but does not specify coordinate system, out-of-bounds behavior, or whether events are triggered. Basic but incomplete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the core action. Every word earns its place; no redundancy. Ideal conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple mouse movement tool, the description covers the basics but omits key details like coordinate system, instant vs. animated movement (beyond humanize), and any side effects. With no output schema visible, completeness is moderate but adequate for simple cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It adds meaning by labeling x and y as 'raw coordinates' and explaining humanize's effect (Bezier path). While it does not detail ranges or units, it provides essential context for all three parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Move cursor') and the target ('raw coordinates'), with a specific option ('humanize=True uses Bezier path'). It distinguishes from sibling tools like mouse_click_xy by focusing solely on movement, but could be more explicit about coordinate system or behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide guidance on when to use this tool versus alternatives like mouse_drift, hover, or mouse_click_xy. There is no mention of context or exclusions, leaving the agent to infer usage from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mouse_recordA

⭐ Record real mouse movements from the page for later replay.

Injects a listener that captures mousemove events during duration. Move
your mouse naturally in the Chrome window while this runs. The recorded
path can then be played back via mouse_replay() — highest-stealth
behavioral pattern (indistinguishable from human).

Returns: JSON array of {t, x, y} events.
ParametersJSON Schema
NameRequiredDescriptionDefault
duration_secondsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses that it injects a listener, captures mousemove events, and returns a JSON array of {t,x,y}. It also claims 'highest-stealth behavioral pattern (indistinguishable from human),' which adds transparency about its behavioral impact. However, it doesn't mention if the listener is removed after recording or potential side effects on page performance.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, using only three sentences and a bullet for return format. It front-loads the key purpose with a star rating for emphasis. Every sentence adds useful information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (one optional parameter, simple return type), the description covers the main aspects: what it does, how to use it (move mouse naturally), and what it returns. It could mention whether the recording auto-stops or if the listener is cleaned up, but overall it is sufficient for an agent to understand and invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema coverage is 0%, meaning no parameter description in the schema. The description mentions 'during duration,' which implies the duration_seconds parameter controls recording time. While the parameter name is self-explanatory, the description does not elaborate on format, range, or edge cases. This adds minimal value beyond the parameter name.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool records real mouse movements for later replay, distinguishing it from siblings like mouse_replay, mouse_move, etc. It specifies the action (record), resource (mouse movements), and purpose (replay via mouse_replay).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use the tool (to record natural mouse movements) and mentions the alternative mouse_replay for playback. It doesn't explicitly state when not to use it, but the context is clear enough for an agent to infer appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mouse_replayA

⭐ Replay a recorded mouse path (from mouse_record).

Args:
    path_json: JSON array of {t, x, y} from mouse_record
    speed: 1.0 = original speed, 2.0 = 2x faster, 0.5 = slower
ParametersJSON Schema
NameRequiredDescriptionDefault
path_jsonYes
speedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It explains the speed parameter but does not specify how the replay executes (e.g., instantaneous or animated), whether clicks are involved, or any side effects. This is insufficient 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded with a star and purpose. Two sentences plus parameter explanations. No wasted words, but could be slightly more structured (e.g., separating behavior from parameters).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the tool is simple, it lacks mention of return value or behavior when an invalid path is provided. The output schema exists but is not described. For a replay tool, this is adequate but could be more complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds significant meaning beyond the input schema: it explains that path_json is a JSON array of {t, x, y} from mouse_record, and clarifies speed values. Schema description coverage is 0%, so this compensation is excellent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool replays a recorded mouse path, with a specific verb 'Replay' and resource 'recorded mouse path'. It distinguishes itself from sibling tools like mouse_record (record) and mouse_move (single move).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions 'from mouse_record', implying it should be used after recording, but lacks explicit guidance on when not to use it or alternatives. It does not contrast with siblings like mouse_move for single movements.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

network_getA

Retrieve captured network events.

Args:
    limit: max entries returned (chronological: oldest first within the last `limit`, newest last)
    filter_url: substring filter on URL
    include_body: fetch response bodies via CDP Network.getResponseBody
        for each matching entry. Bodies are truncated to max_body_bytes.
        Requires network_start(capture_bodies=True) (default).
    max_body_bytes: cap per-body length (default 10000)
    full: if True, return entries with full headers + body fields
        from network_index (use this once you've called network_start).
        Default False = legacy flat event stream (backward compat).
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
filter_urlNo
include_bodyNo
max_body_bytesNo
fullNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses ordering, filtering, body fetching with requirements, truncation, and mode behavior. However, it does not mention potential side effects like memory usage or rate limits, which are minor omissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description front-loads the purpose with a single line, then lists parameters with clear explanations. It is efficient but could benefit from more structured formatting (e.g., separate sections) to improve scanability. All sentences are valuable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema, the description covers all parameters, prerequisites, and behaviors. It omits error handling or edge cases, but overall it provides sufficient context for an AI agent to use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, and the description compensates by explaining each parameter in detail: chronological ordering for limit, substring filtering for filter_url, requirement for include_body, truncation cap, and full mode distinction. This adds essential meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Retrieve captured network events' with a specific verb and resource, distinguishing it from sibling tools like network_start which initiates capture.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions prerequisites such as calling network_start for full mode and capture_bodies=True for include_body, but lacks explicit when-not-to-use or alternative tools beyond the implied dependency. This provides sufficient context for correct usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

network_startA

Begin capturing network requests + responses with full headers.

Args:
    capture_bodies: if True (default), also indexes by request_id so
        network_get(include_body=True) can fetch response bodies on
        demand via CDP Network.getResponseBody.
ParametersJSON Schema
NameRequiredDescriptionDefault
capture_bodiesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It explains that capture_bodies=True indexes by request_id enabling later body retrieval via network_get, and mentions CDP mechanism. However, it fails to mention how to stop capture, memory implications, or whether it auto-stops, which would be useful for an agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence for purpose followed by a clear Args section. No wasted words; every sentence adds value. It is appropriately sized and front-loaded with the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists (not shown), return values need not be described. However, the description does not indicate what the tool returns after starting capture (e.g., a session ID or success status). Also missing is guidance on how to later stop capture. Still, it provides enough context for basic use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides only name, type, and default (0% coverage). The description adds critical context: capture_bodies=True enables indexing and allows later network_get with include_body=True via CDP. This fully compensates for the schema's lack of descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Begin capturing network requests + responses with full headers,' specifying a concrete action on a specific resource. It distinguishes from siblings like network_get (which retrieves captured data) and export_har (which exports), making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage before network_get but does not explicitly state when to use this tool versus alternatives like console_start or coverage_start. No exclusions or conditions for use are provided, so guidance is implied but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

paste_textA

⭐ Set field value by simulating a real paste event sequence.

Use when fill / type_text don't register on modern frameworks (SolidJS
runes, Svelte 5 runes, some Qwik forms) that ONLY listen for paste
events or beforeinput with inputType:'insertFromPaste'.

Sequence dispatched (mimics a real Cmd-V):
  1. focus
  2. ClipboardEvent('paste', {clipboardData: 'text/plain': text})
  3. InputEvent('beforeinput', {inputType: 'insertFromPaste', data: text})
  4. native value setter (HTMLInputElement / HTMLTextAreaElement)
  5. InputEvent('input', {inputType: 'insertFromPaste', data: text})
  6. Event('change')

Args:
    text: value to paste
    ref: data-mcp-ref from browser_snapshot
    selector: CSS selector
    submit: if True, simulate Enter keypress after paste
ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
refNo
selectorNo
submitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so description carries full burden. It details the exact 6-step event sequence dispatched, including event types, clipboardData, inputType, and native value setter. This is highly transparent and exceeds expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a star emoji, a clear one-line summary, a block explaining usage, a numbered event sequence, and a compact parameter list. Every sentence adds value, no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and moderate complexity (4 parameters, no nested objects, has output schema), the description covers purpose, usage, event sequence, and parameters. It lacks potential error conditions or limitations (e.g., only works on input/textarea elements), but overall it is sufficient for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so description must compensate. The Args list provides brief descriptions: 'text: value to paste', 'ref: data-mcp-ref from browser_snapshot', 'selector: CSS selector', 'submit: if True, simulate Enter keypress after paste'. While helpful, it lacks depth (e.g., no format constraints, precedence between ref and selector). Baseline is 3, and it meets minimally.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states it sets a field value by simulating a real paste event sequence, and explicitly distinguishes itself from fill/type_text by specifying when to use it for frameworks that only listen for paste events or beforeinput with inputType:'insertFromPaste'. This provides a specific verb and resource with clear differentiation from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states 'Use when fill / type_text don't register on modern frameworks (SolidJS runes, Svelte 5 runes, some Qwik forms) that ONLY listen for paste events or beforeinput with inputType:'insertFromPaste'.' This gives clear context and alternatives, meeting the highest standard.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

performance_metricsA

Return Chrome's runtime Performance metrics (Nodes, JSHeap, FPS, etc).

Wraps CDP Performance.getMetrics — use it for snapshots during a test run (before/after interaction) to detect regressions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, but the description discloses it is a wrapper for CDP Performance.getMetrics and intended for snapshots, implying non-destructive read operation. Adds behavioral context beyond the name and schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no redundancy. First sentence states purpose; second adds context and usage hint. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Fully adequate given zero parameters and presence of output schema. Description covers purpose, context, and usage without needing to detail return structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so baseline is 4 per rules. The description does not need to add parameter info.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Return Chrome's runtime Performance metrics' with specific examples (Nodes, JSHeap, FPS). The resource and verb are explicit. Distinguishes from siblings by mentioning CDP Performance.getMetrics and snapshot usage, contrasting with timeline/trace tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly recommends using it for snapshots during test runs to detect regressions. While it doesn't name alternatives, the context of before/after interaction is clear. No explicit when-not, but sufficient for a simple tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

performance_timelineA

Read Navigation/Resource/Paint timing via Performance API.

Returns TTFB, DOMContentLoaded, load, LCP candidate, FCP, resource count, and slowest 5 resources. Fast (no trace capture) — best for smoke tests.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses that the tool reads data (non-destructive) and is fast with no trace capture. It does not mention potential failure cases, but the behavioral traits are adequately transparent for a read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact at two sentences. It front-loads the core action ('Read...') and each sentence adds value: purpose, data source, returned metrics, and performance characteristic. No superfluous text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and an output schema, the description sufficiently covers what the tool returns and its use case. It could mention scenario limitations (e.g., page not loaded), but for a simple read tool it is complete enough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so baseline 4 applies. The description does not need to add parameter details, and the schema coverage is 100%.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it reads timing data via the Performance API and lists specific metrics (TTFB, DOMContentLoaded, etc.). It distinguishes itself from siblings like performance_trace_start/stop by noting 'no trace capture' and positioning itself for smoke tests.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides usage context by stating it is 'best for smoke tests' and implying it is fast. While it doesn't explicitly list when not to use or alternatives, the context is clear enough for an agent to decide.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

performance_trace_startA

Start Chrome DevTools performance trace on the active tab.

Use stop() to save the .json file. Only one trace can be active at a time.

Args:
    categories: comma-separated trace categories. Default covers DevTools'
        Performance panel view:
          "devtools.timeline,v8.execute,disabled-by-default-devtools.timeline,
           disabled-by-default-devtools.timeline.frame,loading,latencyInfo,
           blink.user_timing"
    screenshots: include screenshot frames in trace (bigger file, lets you
        scrub through frames in DevTools Performance panel)
ParametersJSON Schema
NameRequiredDescriptionDefault
categoriesNo
screenshotsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses that the tool starts a trace on the active tab and that only one trace can be active. However, it does not mention prerequisites (e.g., whether DevTools must be attached), potential errors if already running, performance overhead, or side effects. This leaves gaps for safe and correct invocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficient: a short intro, a usage note, and a clear args list. The default categories string is lengthy but necessary. No wasted sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists (not shown), the description correctly omits return values. It covers the tool's action, usage pattern (start/stop), and parameters. Minor gaps: no prerequisites or error handling details, but it is mostly complete for this tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It explains the categories parameter with a default value and lists the trace categories, and describes the screenshots parameter as a boolean for including frames. This adds meaningful context beyond the schema's type and default, though it could clarify that categories is a comma-separated string.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a clear verb+resource: 'Start Chrome DevTools performance trace on the active tab.' It distinguishes itself from sibling tools like performance_trace_stop (paired stop function) and performance_metrics (likely a different tool for metrics). The purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states to use stop() to save the trace and notes that only one trace can be active at a time, providing clear usage context. However, it does not explicitly guide when to use this tool versus alternatives like performance_metrics or performance_timeline, though the start/stop pairing implies it for detailed traces.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

performance_trace_stopA

Stop the active performance trace and save to ~/.mcp-stealth/exports/.

Output is a JSON array compatible with chrome://tracing and
DevTools Performance panel (drag-drop to import).
ParametersJSON Schema
NameRequiredDescriptionDefault
filenameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description explains the output format and save location. It implies a non-destructive stop. No annotations provided, but the description itself is fairly clear about what happens.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the core action. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple stop action with one optional parameter and an output schema, the description covers the main behavior. However, it does not explain the filename parameter or potential errors.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single optional parameter 'filename' is not explained at all in the description. Schema coverage is 0%, and the description adds no meaning beyond 'filename'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Stop the active performance trace' and specifies the destination 'save to ~/.mcp-stealth/exports/', which distinguishes it from sibling tool performance_trace_start.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool or prerequisites (e.g., a trace must be started first). No mention of 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.

press_keyA

Press a single key (Enter, Escape, Tab, ArrowDown, a, etc).

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description accurately describes the action as pressing a single key. No annotations are present, but the description provides enough behavioral context for a simple keyboard operation without misleading 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that immediately conveys the tool's purpose without unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter, the description sufficiently covers what the tool does. The output schema exists, so return value explanation is not required per rules.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides only a 'key' string with no description. The description compensates with examples of valid keys (Enter, Escape, Tab, ArrowDown, a, etc.), giving meaningful guidance beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Press a single key' with concrete examples like Enter, Escape, Tab, ArrowDown, a, etc. It distinguishes itself from siblings like type_text and click through the focus on individual key presses.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

While not explicitly stating when not to use, the description implies it is for single key presses, distinguishing it from multi-key or mouse actions. The examples help the agent understand appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

query_selector_allA

Return count + attrs of all elements matching CSS selector.

ParametersJSON Schema
NameRequiredDescriptionDefault
selectorYes
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries full burden. It states the tool returns count and attrs but does not disclose whether it waits for elements, handles dynamic content, or any performance implications. It is adequate but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no filler. Every word contributes to the meaning. It is front-loaded with the main action and output.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (CSS selector query) and the existence of an output schema, the description is nearly complete. It could mention error conditions or edge cases (e.g., no match) but is sufficient for typical use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, yet the description does not explain the parameters ('selector', 'limit') beyond their implied use. The limit parameter has a default but no clarification of its effect. Description adds minimal value over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Return') and noun ('elements matching CSS selector'), and specifies the output includes count and attrs. This clearly distinguishes it from siblings like get_attribute or extract_structured.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention any prerequisites or limitations. The purpose is clear but lacks contextual usage advice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reloadC

Reload the active tab.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and the description does not disclose behavioral traits such as cache clearing, page load waiting, or scroll position preservation. The description carries full burden but fails to provide transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short and front-loaded, but its conciseness comes at the cost of missing necessary context about behavior and usage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool, the description is minimal and does not cover return values or post-reload behavior. The output schema exists but is not referenced.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters, and schema coverage is 100% (empty). The description does not need to add parameter info. Baseline score of 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: reloading the active tab. It distinguishes from sibling tools like navigate and go_back. However, it could be slightly more specific about cache behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 like navigate or go_back. The description lacks any usage context or exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_pdfC

Save current page as PDF via CDP Page.printToPDF.

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameNo
landscapeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must bear the full burden of behavioral disclosure. It only states the action and method, omitting key details: what happens to the PDF (downloaded? returned?), whether it overwrites, or if it requires permissions. This is insufficient for safe operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence delivers the core purpose and technical detail with zero waste. Every word is necessary and contributes to understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema (which could explain return values), the description lacks context about preconditions, default behavior, and side effects. It is too brief to fully equip an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description provides no explanation of the parameters. 'filename' and 'landscape' are undefined (e.g., what does null filename mean? what is the effect of landscape?). The agent must infer from type and default alone, which is inadequate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: 'Save current page as PDF' and references the specific CDP method 'Page.printToPDF', which distinguishes it from all sibling tools as the only PDF-saving tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives. It does not mention prerequisites (e.g., a page must be loaded) or scenarios where it's appropriate, leaving the agent without context for invocation decisions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scrape_pageA

Clean readable text extraction — drops nav, footer, scripts, styles.

Smart-truncates at paragraph boundary (not mid-word).

ParametersJSON Schema
NameRequiredDescriptionDefault
only_main_contentNo
max_charsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description discloses key behaviors (dropping clutter, paragraph-boundary truncation) but lacks details on page readiness, scrolling, or 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences that front-load the purpose and add essential detail without waste, each line earning its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. The description covers core functionality but omits operational context like whether it waits for page load or works on current DOM.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate; it only indirectly explains max_chars (truncation) and only_main_content (dropping elements), leaving parameter semantics incomplete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Clean readable text extraction' and specifies what it drops (nav, footer, scripts, styles), distinguishing it from related tools like get_text or extract_structured.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for clean text extraction with smart truncation, but does not explicitly list when to use versus alternatives like get_text or extract_structured.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

screenshotA

Screenshot active tab. Saves to ~/.mcp-stealth/screenshots/.

Args:
    filename: output name (default timestamped)
    full_page: stitch entire page height (slower, larger file)
    return_base64: append base64 body to response (useful for vision models)
    format: "auto" (from extension, default), "png" (lossless), or "jpeg" (smaller)
    quality: JPEG quality 1-100 (default 80) — ignored for PNG
    region: clip to {x, y, width, height} — uses CDP Page.captureScreenshot clip
            (skips full-viewport paint, 2-5× faster for small crops)
    max_dimension: if either width or height exceeds this (px), the image is
        resized proportionally via OpenCV INTER_AREA. Default 1920 keeps output
        under the 2000 px per-side limit that LLM image tools (Claude/GPT) enforce
        — prevents "image exceeds dimension limit" failures on long full_page
        captures or hi-DPR device emulation. Pass 0 to disable resizing.
ParametersJSON Schema
NameRequiredDescriptionDefault
filenameNo
full_pageNo
return_base64No
formatNoauto
qualityNo
regionNo
max_dimensionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It explains file saving location, parameter behaviors (e.g., full_page slower, region faster, max_dimension prevents LLM errors). Missing edge cases like failure handling (e.g., no active tab) but still strong.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a summary followed by parameter explanations. It is slightly lengthy but every sentence provides useful information. Could be more concise by removing redundant phrasing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 7 parameters and presence of an output schema, the description covers parameter behavior well but misses some context: no mention of prerequisites (e.g., active browser tab), potential failures, or permission requirements. Adequate but not fully comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description thoroughly explains each parameter with practical details (e.g., default timestamped, JPEG quality impact, OpenCV resizing for max_dimension). Adds significant value beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose ('Screenshot active tab') and details parameters. However, it does not distinguish from siblings like 'browser_snapshot' or 'save_pdf', which could cause confusion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 vs alternatives. It is implied for capturing screenshots, but does not specify prerequisites, limitations, or when to choose other tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scrollA

Scroll page via REAL mouseWheel CDP events (not JS scrollBy).

humanize=True (default): variable chunks 50-150px + micro-pauses + 20%
reading-pause chance — bypasses DataDome/PerimeterX behavioral detection.
humanize=False: instant scroll (faster, less stealthy).

Directions: up | down | top | bottom
ParametersJSON Schema
NameRequiredDescriptionDefault
directionNodown
amountNo
humanizeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It details humanization behavior (varied scroll chunks, micro-pauses, reading pause chance) and the underlying mechanism (CDP events). Missing potential traits like overflow handling or smoothness, but sufficiently transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief, well-structured with bullet points, and front-loaded with the key differentiator (CDP events). Every sentence adds value without repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the description covers the tool's purpose and stealth feature, it does not detail all parameters (amount missing) or return value (output schema exists but not explained). For a tool with 3 parameters, more completeness is warranted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so description must compensate. It mentions direction and humanize booleans but omits the 'amount' parameter entirely. This partially explains parameters but leaves a gap for the amount field.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool scrolls a page using real mouse wheel events, distinguishing it from JS-based scrolling. It specifies the resource (page) and verb (scroll), and implicitly differentiates from sibling 'scroll_to' by emphasizing CDP events for stealth.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context on when to use humanize (for bypassing detection) vs non-humanized (for speed), and lists directions. However, it lacks explicit guidance on when to avoid this tool or compare with alternatives like 'scroll_to'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scroll_toA

Smooth-scroll a specific element into viewport.

Args:
    ref: snapshot ref (e.g. "e7") from browser_snapshot
    selector: CSS selector alternative
    block: "start" | "center" | "end" | "nearest" — vertical alignment
    smooth: CSS smooth scroll (default) vs instant jump

Works even if element is far off-screen (pages of scroll away).
ParametersJSON Schema
NameRequiredDescriptionDefault
refNo
selectorNo
blockNocenter
smoothNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses the smooth-scroll behavior, the smooth parameter controlling smooth vs instant, and the capability to scroll large distances. However, it does not detail behavior when ref and selector conflict, or error handling if element not found.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise: a one-sentence purpose, a bullet-argument list, and a notable capability note. Every sentence adds value with no redundancy or fluff. It is front-loaded with the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 4 parameters, 0 required, and an output schema (assumed complete), the description covers identification, alignment, smoothness, and a key capability. It misses conflict resolution for ref/selector and error scenarios, but is otherwise adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must fully explain parameters. It does so: ref is a snapshot ref from browser_snapshot, selector is a CSS alternative, block lists valid alignment options, and smooth explains the smooth vs instant behavior. This adds critical meaning beyond the schema's type-only definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Smooth-scroll a specific element into viewport.' It specifies the action (scroll), target (element), and adds a distinguishing capability: works even if element is far off-screen. This sets it apart from sibling tools like 'scroll' which are more generic.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use (when an element needs to be scrolled into view, especially if far off-screen), but does not explicitly state when not to use or mention alternatives like 'scroll' or 'click'. It lacks guidance on preferring this over other interaction tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

select_optionC

Select by value or label.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNo
selectorNo
valueNo
labelNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and the description lacks behavioral details such as what happens if the option is not found, if both value and label are specified, or if the dropdown is not present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely short but under-specified; the description is too terse to be helpful, failing to provide necessary context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given four parameters and no annotations, the description is insufficient. It lacks details about parameter relationships, behavior, and output (though output schema exists but is not described).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, and the description does not explain the 'ref' or 'selector' parameters, nor does it provide any meaning beyond 'by value or label'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it selects an option from a dropdown by value or label, but does not differentiate from sibling tools like click or fill that could also interact with options.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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., click, fill) or how to choose between value and label parameters.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

server_statusB

Diagnostic info about the server and browser.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, and the description does not disclose behavioral traits such as side effects, network requests, or data freshness. The agent gains minimal insight into the tool's behavior beyond the basic purpose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence, but it lacks structure such as a summary upfront or bullet points. While efficient, it could be more informative without being verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the zero parameters and existence of an output schema, the description is minimally adequate. However, it does not hint at the specific fields or format of the diagnostic info, which might help the agent interpret results. The output schema presumably covers return values, so no major gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4. The description adds no parameter information, which is acceptable since there are no parameters to describe. Schema coverage is 100% by default.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns 'Diagnostic info about the server and browser,' which is a specific verb+resource combination. However, it does not differentiate from sibling tools like describe_page or get_page_errors, which also return diagnostic-like info.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description does not specify prerequisites or contexts where this tool is appropriate, leaving the agent to infer usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sessionstorage_clearA

Clear all sessionStorage for current origin (parity with localstorage_clear).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavioral traits. It indicates a destructive action ('clear') but does not warn about data loss, irreversibility, or potential impact on other tabs/windows of the same origin. The description lacks transparency beyond the basic operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence of 10 words that efficiently communicates the action, scope, and sibling relationship. No unnecessary words or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 'clear' operation with zero parameters and an output schema (implied), the description provides sufficient context: what it does (clear sessionStorage), scope (current origin), and relation to sibling. It does not explain return values but that is likely covered by the output schema. A more complete description might mention that this affects the current session only, but it's adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, and schema description coverage is 100% (no params to describe). The description does not explicitly state 'takes no arguments', but baseline for 0-param tools is 4. It adds no parameter info, but none is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Clear all sessionStorage for current origin', providing a specific verb and resource. It distinguishes from the sibling tool 'localstorage_clear' by mentioning parity, making its purpose and scope unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes 'parity with localstorage_clear', which implicitly guides the agent to use this tool when sessionStorage needs clearing and to consider the sibling for localStorage. While it does not explicitly state when not to use, it implies the complementary relationship.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sessionstorage_getB

Get sessionStorage — all keys or one.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It only states the action but does not disclose whether the operation is read-only, requires specific permissions, or details behavior when key is missing or invalid.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with a single sentence that front-loads the purpose. Every word is necessary, and there is no wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema (not shown), the description may be sufficient for a simple getter. However, it lacks context on error handling and edge cases, and the schema has no parameter descriptions, so the description only partially compensates.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds meaning to the 'key' parameter by explaining that omitting it retrieves all keys (null default) and a string retrieves a single key. However, it does not elaborate on the format or what the return values look like.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool gets sessionStorage, with the distinction of retrieving all keys or one key. It effectively conveys the core action and resource, and the name differentiates it from sibling tools like localstorage_get.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives (e.g., localstorage_get). The description does not mention when-not to use it or any prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sessionstorage_setC

Set a sessionStorage entry.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
valueYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description does not disclose any behavioral traits beyond the bare action. With no annotations present, it fails to mention side effects (e.g., overwriting existing keys), dependency on an open page, or any state changes. A description should compensate for missing annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (8 words) and front-loaded, but at the cost of valuable information. For a simple tool, it could still include minimal semantics without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema (not shown) and sibling storage tools, the description should clarify that sessionStorage is browser-specific and that setting requires an active page. It also omits any return value explanation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, and the tool description adds no meaning to the 'key' and 'value' parameters. It does not specify expected formats, constraints, or examples, leaving the agent without guidance on valid inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Set') and resource ('sessionStorage entry'), matching the tool's name. However, it does not differentiate it from similar sibling tools like localstorage_set, which could cause confusion for an AI agent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no guidance on when to use this tool versus alternatives such as localstorage_set or sessionstorage_get. No usage context or exclusions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

session_warmupA

Warm up session by navigating naturally before hitting target URL. Anti-bot systems score trust by session history — direct deep-URL hits look suspicious.

Patterns:
  - homepage_first: goto origin → wait → goto target
  - referer_chain: goto origin → find link to target → click
  - natural_browse: homepage → scroll → random click → scroll → target
ParametersJSON Schema
NameRequiredDescriptionDefault
target_urlYes
patternNohomepage_first
dwell_secondsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so description bears full burden. It explains the natural navigation patterns and their purpose, but does not disclose potential side effects (e.g., session state changes, timeouts, or error handling). The description adds some behavioral context but is 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is well-structured with a clear first sentence followed by a bulleted list of patterns. It is concise yet informative, though the pattern list could reference the enum values in the schema to avoid redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema, description does not need to cover return values. However, it omits prerequisites (e.g., existing browser session) and does not explain how dwell_seconds affects behavior. The description covers the 'why' and 'how' patterns but misses some operational details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but description provides no parameter explanations. Though the schema defines parameters with enums and defaults, the description should add guidance like 'dwell_seconds controls wait time between steps' or clarify pattern choices. This omission limits agent understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool's purpose: warming up a session by navigating naturally before hitting a target URL to avoid anti-bot detection. This verb+resource description differentiates it from direct navigation tools like 'navigate'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description provides context on when to use this tool (anti-bot systems penalize direct deep-URL hits) and lists three patterns as usage options. It lacks explicit 'when not to use' or alternatives, but the clear context suffices.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_viewport_sizeC

Resize the browser window.

ParametersJSON Schema
NameRequiredDescriptionDefault
widthYes
heightYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden but only states basic action. It does not disclose side effects (e.g., reflow, tab-specific behavior) or requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence is concise but significantly under-specified, lacking crucial information about parameters and behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema (not shown), the description omits return values, edge cases, and behavioral context, making it inadequate for a tool with two required parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description does not mention any parameters, failing to add meaning beyond the schema's type and required fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Resize the browser window' clearly states the action (resize) and the target (browser window), distinguishing it from sibling tool 'get_viewport_size' which retrieves size.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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, no prerequisites mentioned (e.g., browser must be open), and no exclusion criteria provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

smart_fillA

⭐ Fill form fields by label text (fuzzy match). LLM-friendly alt to fill_form which requires DOM refs.

Args:
    fields: {"Label": "value", ...} — keys match form field labels
        (case-insensitive, fuzzy: exact > prefix > substring > token).
        Labels resolved from <label>, aria-label, placeholder, name.
    submit_label: optional button text to click after filling
        (e.g., "Create", "Sign in"). Fuzzy-matched on action button text.

Behavior:
    - Each field: locates input → focus → clear → type value
    - Returns per-field result + list of available labels if missing
    - On miss: error includes candidates so the LLM can retry with
      the correct label name.
ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsYes
submit_labelNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations, so description fully covers behavior: fuzzy match algorithm (exact > prefix > substring > token), per-field steps, error returns with candidates, available labels on miss.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Efficiently structured with Args and Behavior sections. Every sentence adds value, no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Complete for a complex tool: explains algorithm, error handling, return values (via output schema). No gaps given the task.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but description thoroughly explains fields parameter (keys match labels, case-insensitive, resolution sources) and submit_label. Adds meaning beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it fills form fields by label text with fuzzy matching, explicitly distinguishes from fill_form which requires DOM refs. Verb-resource pair is specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Describes it as an LLM-friendly alternative to fill_form, implying when to use. Lacks explicit when-not or exclusions, 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.

solve_captchaA

Solve a CAPTCHA via CapSolver HTTP API.

kind: turnstile | recaptcha_v2 | recaptcha_v3 | hcaptcha
Needs CAPSOLVER_KEY env var (or pass api_key). Returns solved token.
If inject_selector given, also injects token into that form field
(e.g. input[name='cf-turnstile-response']).
ParametersJSON Schema
NameRequiredDescriptionDefault
kindYes
website_urlYes
website_keyYes
api_keyNo
inject_selectorNo
actionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses that the tool calls an external API, returns a solved token, and can inject the token into a form field via inject_selector. It does not mention rate limits or failure modes, but provides sufficient 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise at two sentences plus a bullet list. It front-loads the primary purpose and uses a clear structure for enumerating kinds. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 6 parameters and an output schema, the description is somewhat complete but lacks explanations for some parameters. It covers the core functionality and injection behavior, but the parameters website_url and website_key are undocumented. The output schema exists, so return value explanation is not needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains the 'kind' enum and mentions api_key and inject_selector, but does not describe the required parameters website_url and website_key, nor the optional action parameter. This leaves significant gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it solves a CAPTCHA via CapSolver HTTP API and lists the supported CAPTCHA kinds (turnstile, recaptcha_v2, recaptcha_v3, hcaptcha). It differentiates from siblings like solve_recaptcha_ai by specifying the CapSolver API and detailing injection behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly mentions the prerequisite: needing CAPSOLVER_KEY env var or passing api_key. It implies usage for solving CAPTCHAs, but does not explicitly state when not to use or compare to alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

solve_recaptcha_aiA

Solve reCAPTCHA v2 image challenge using a vision-enabled LLM.

Supports Anthropic (Claude) OR any OpenAI-compatible API (gpt-4o, gpt-5.x,
Groq llama3.2-vision, local Ollama llava, Together.ai, Fireworks, etc).

⚠️ MODEL MUST BE MULTIMODAL (vision-capable) — text-only models fail silently.
✅ Supported: gpt-4o, gpt-5.x, claude-opus-4-7, llava, llama-3.2-90b-vision-preview
❌ NOT: gpt-3.5-turbo, llama3 (non-vision), claude-3-haiku

Env vars (OpenAI SDK standard — priority checked if args omitted):
    OPENAI_API_KEY + OPENAI_BASE_URL + OPENAI_MODEL  → OpenAI-compat
    ANTHROPIC_API_KEY + ANTHROPIC_MODEL              → Claude
    AI_VISION_* (legacy, DEPRECATED — removed v0.2.0) → backward-compat

Explicit override:
    provider="anthropic" | "openai"
    base_url="https://your-provider.example.com/v1"
    api_key="..."
    model="gpt-4o" | "claude-opus-4-7" | ...

Cost: varies by provider (~$0.005-0.03 per solve).
ParametersJSON Schema
NameRequiredDescriptionDefault
api_keyNo
max_roundsNo
wait_betweenNo
providerNo
base_urlNo
modelNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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 the model must be multimodal, that text-only models fail silently, and gives cost estimates. However, it lacks details on error handling, rate limiting, or what happens on API failure. While informative, it is not fully exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and concise. It opens with the main purpose, then uses bullet points for supported APIs, model requirements, environment variables, explicit overrides, and cost. Every sentence adds value, and information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema, the description appropriately omits return value details. It provides necessary input configuration and constraints. However, it lacks insights into retry behavior, error scenarios, and the implications of the 'max_rounds' and 'wait_between' parameters, which are important for an external API tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 6 parameters with 0% description coverage. The description covers the explicit override parameters (provider, base_url, api_key, model) and mentions environment variables, but does not explain 'max_rounds' or 'wait_between' which likely control retry behavior. Partial compensation but incomplete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: solving reCAPTCHA v2 image challenges using a vision-enabled LLM. It specifies the resource (reCAPTCHA v2) and method (vision LLM), distinguishing it from sibling tools like 'solve_captcha' which may handle other captcha types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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 (for reCAPTCHA v2) and warns that text-only models fail silently. It lists supported and unsupported models, and explains configuration via environment variables or explicit parameters. However, it does not explicitly compare to alternative captcha-solving tools in the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

spawn_browserA

Create a new named browser instance running in parallel with main. Each instance has its own profile, cookies, tabs, logs. Use for multi-account scraping or isolated sessions.

Args:
    instance_id: unique name (e.g., "scraper_1", "acct_alice")
    idle_timeout_seconds: auto-close after idle (0 = never, default 600s)
    profile_dir: override profile path (default: ~/.mcp-stealth/profiles/<id>/)
    other args: same as browser_launch

Use switch_instance(id) to route subsequent tool calls to this instance.
ParametersJSON Schema
NameRequiredDescriptionDefault
instance_idYes
urlNoabout:blank
headlessNo
proxyNo
user_agentNo
window_widthNo
window_heightNo
persistentNo
langNoen-US
extra_argsNo
storage_state_pathNo
idle_timeout_secondsNo
profile_dirNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, description carries full burden. It discloses that each instance has own profile, cookies, tabs, logs, and mentions idle timeout auto-close. However, it does not explain behavior if instance_id already exists, resource implications, or error handling. Adds some value beyond schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is extremely concise: two paragraphs, bullet list for parameter details. Each sentence adds value. Front-loaded with purpose and use case. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 13 parameters, many with defaults, and output schema exists, description covers key aspects: creation, lifecycle, isolation, routing via switch_instance. Minor gaps: does not mention headless default or behavior on duplicate instance_id, but overall complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so description must add meaning. It explains three key parameters (instance_id, idle_timeout_seconds, profile_dir) with examples and defaults. For remaining parameters, it defers to 'same as browser_launch', which is helpful but not fully independent. Moderate compensation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb 'create' and resource 'new named browser instance', explicitly distinguishes from main browser. It provides use case: multi-account scraping or isolated sessions, which differentiates from sibling tools like browser_launch.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit context: 'Use for multi-account scraping or isolated sessions.' Also guides subsequent usage with 'Use switch_instance(id) to route subsequent tool calls to this instance.' Does not explicitly state when not to use or compare directly to 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.

storage_diffA

⭐ Compare current state vs an earlier storage_snapshot. Returns JSON showing what changed (added/removed/modified per area + url change).

Pattern:
  storage_snapshot("before")
  <do an action e.g. click login>
  storage_diff("before")  → returns what the action actually changed
ParametersJSON Schema
NameRequiredDescriptionDefault
nameNodefault

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description covers the comparison behavior and output format. Does not mention side effects, but as a read-only comparison, 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short paragraphs; first explains purpose, second gives a clear usage pattern. Front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has an output schema (not shown), so return format is covered. Missing parameter explanation, but overall sufficient for the tool's simplicity and context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter 'name' with schema coverage 0%; description does not explain what the 'name' parameter refers to. The pattern uses 'before' but doesn't clarify parameter purpose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool compares current state vs an earlier storage_snapshot and returns JSON of changes. Uses specific verb 'compare' and resource 'storage_snapshot'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a usage pattern showing when to use (after snapshot and action), but doesn't 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.

storage_snapshotA

⭐ Capture cookies + localStorage + sessionStorage + URL into named slot for later diffing. Use BEFORE an action you want to inspect.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNodefault

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that the tool captures specific storage types and URL, but does not mention potential side effects (e.g., overwriting existing snapshots) or prerequisites like requiring an active page. Since no annotations are provided, the description carries the full burden and is adequate but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences concisely convey the action, rationale, and usage timing. The critical information is front-loaded in the first sentence. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool pairs well with 'storage_diff' as suggested. It does not address naming conflicts, but given the simplicity and accessible sibling tools, the description is nearly complete for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter 'name' has no description in the schema (0% coverage). The description indirectly explains its purpose ('named slot'), but does not clarify allowed values, default behavior, or uniqueness constraints. The parameter adds minimal meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Capture cookies + localStorage + sessionStorage + URL into named slot for later diffing.' The verb 'Capture' and resource 'storage state + URL' are explicit, and the sibling tool 'storage_diff' indicates a distinct purpose for snapshotting vs. diffing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The instruction 'Use BEFORE an action you want to inspect' provides explicit timing advice. While it doesn't mention when not to use, it effectively distinguishes this from the sibling 'storage_diff' (use after action).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

storage_state_loadA

⭐ Load cookies + localStorage from a saved JSON file.

Call BEFORE navigating to protected site so session is ready.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Describes loading state into browser, implying mutation, but doesn't detail overwrite behavior, error handling, or prerequisite of prior save.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with an important indicator ('⭐'). No extraneous content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple tool with one parameter and an output schema, the description covers purpose and usage timing adequately. Minor gap in parameter details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain the file_path parameter (format, expected content). The parameter name is self-evident, but additional context would aid invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states it loads cookies and localStorage from a JSON file, using specific verbs and resource. It distinguishes from sibling storage_state_save.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear timing guidance: 'Call BEFORE navigating to protected site so session is ready.' No explicit when-not or alternatives, but context is sufficient for typical use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

storage_state_saveC

⭐ Save cookies + localStorage of current origin to JSON.

DIFFERENTIATOR: Per research, session-reuse is THE most reliable way to
bypass Cloudflare Turnstile — it never triggers if session valid.
Login manually once → save state → reuse forever until expiry.
ParametersJSON Schema
NameRequiredDescriptionDefault
filenameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It does not explain what happens when filename is null, whether files are overwritten, or where the JSON file is saved. The focus on the bypass narrative leaves important behavioral details unclear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded with the core purpose. The DIFFERENTIATOR section adds length but provides valuable guidance. Overall, it is concise with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not explain return values. However, it fails to clarify the behavior of the single parameter (filename) or the file saving mechanism. For a simple tool, this is incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, meaning the schema provides no human-readable explanation for the filename parameter. The description does not compensate; it does not mention the filename at all, leaving the agent unsure of its purpose or default behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence clearly states the tool saves cookies and localStorage to JSON (specific verb and resource). However, the description is somewhat distracted by the Cloudflare bypass narrative, and does not explicitly differentiate from sibling tools like storage_snapshot.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The DIFFERENTIATOR section provides a strong use case (bypassing Cloudflare Turnstile) but does not give explicit guidance on when not to use this tool, nor does it mention alternative tools (e.g., cookie_export, localstorage_get) that might be used for partial state saving.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

switch_instanceA

⭐ Make instance_id the active one for subsequent tool calls.

The previous current instance continues running in the background,
cookies/tabs preserved. Swap back anytime.
ParametersJSON Schema
NameRequiredDescriptionDefault
instance_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description discloses that the previous instance continues running and data is preserved, which is essential behavioral context. Missing details on auth or side effects, but adequate for the tool's simplicity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with a star emoji, no wasted words. Every sentence contributes meaningful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Simple tool with one parameter; description covers switching behavior and persistence. Has an output schema (not shown) but not needed. Complete for agent understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has no description for 'instance_id' (0% coverage). The description does not explain what instance_id is or how to obtain it, relying solely on the property name. Does not add meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it makes an instance the active one for subsequent calls, specifying the verb 'make' and resource 'instance'. It distinguishes from siblings like 'close_instance' or 'list_instances'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains that the previous instance continues running in the background with cookies/tabs preserved and can be swapped back. It implies when to use (switch context without losing state) but does not explicitly state 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.

tab_closeB

Close tab at index (defaults to active).

ParametersJSON Schema
NameRequiredDescriptionDefault
indexNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and the description only states the basic operation. It does not disclose behavior for invalid indices, whether the action is destructive, or if there are any side effects like unsaved data warnings.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence, very concise. It could include more detail without harming conciseness, but it is appropriately front-loaded and avoids redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and an output schema that is not visible in the provided data, the description is too minimal. It lacks information about return values, error handling, or prerequisites, making it incomplete for a tool that performs a destructive action.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description adds some meaning by explaining the default behavior ('defaults to active'). However, it does not clarify index semantics (0-based? negative? out-of-bounds handling?). Adequate but not thorough.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (close), the resource (tab), and the optional index parameter with a default to active tab. This distinguishes it from sibling tools like tab_focus, tab_list, or tab_new.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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., when to close a specific tab vs close all or switch). The description is purely declarative without usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tab_focusA

⭐ Bring the active tab's browser window to the OS foreground.

Programmatic CDP navigation does not raise Chrome to the front, so
on a desktop where the user has their own Chrome already open you
may see only the original window even though MCP successfully
drove a different window/tab. Call this when you want to *see*
what MCP is doing.

Common reasons MCP's window is hidden:
  - Per-PID profile fallback: another Chrome already held
    ~/.mcp-stealth/profile/, so MCP launched into
    ~/.mcp-stealth/profile-pid<N>/ — that's a SEPARATE Chrome window.
    Run server_status to confirm (profile_dir field).
  - OAuth popup opened a new tab/window MCP now drives.
  - macOS Spaces / minimized window / behind other apps.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses that the tool brings the window to the foreground and explains why it's needed, including specific reasons for hidden windows. It does not mention side effects or failure cases, but the behavior is straightforward.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, well-structured with a star emoji, and uses bullet points for common reasons. Every sentence adds value, and the main action is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and an output schema, the description fully explains the tool's purpose, usage scenarios, and rationale. It is complete for a simple focus operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, so the baseline is 4 as per instructions. The description does not add parameter-specific information, but none is needed. The context about when to use the tool adds value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool brings the active tab's browser window to the OS foreground, with a specific verb+resource. It explains the need due to programmatic CDP limitations, distinguishing from other sibling tools like tab switching or navigation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to call ('when you want to *see* what MCP is doing') and lists common scenarios where the window might be hidden. However, it does not explicitly mention when not to use or suggest alternatives, though the 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_listA

List all open tabs with index, URL, title.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, but the description clearly indicates a read-only list operation with no side effects. It covers the essential behavior, though additional context like whether it refreshes or caches could be helpful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With zero parameters and an output schema available, the description is sufficient for the agent to use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters are defined, so the description does not need to explain them. The schema coverage is 100% trivially.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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 with index, URL, and title, distinguishing it from sibling tools that perform actions like closing or focusing tabs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this tool is used to get an overview of open tabs. No explicit guidance on when not to use it, but no alternative listing tool exists among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tab_newB

Open a new tab and make it active.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoabout:blank

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description bears full responsibility for behavioral disclosure. It does not mention side effects (e.g., the previous tab remains open), error conditions, or permissions. The effect of the optional url parameter is left implicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that avoids verbosity. However, it could be slightly more informative (e.g., mentioning the URL parameter) without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple nature of the tool and the presence of an output schema, the description is minimally adequate. However, it does not clarify how this tool fits among siblings, leaving some contextual gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has one parameter (url with default 'about:blank') and 0% schema description coverage. The description does not explain the parameter's purpose or default behavior, adding no value beyond what the schema's property title provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Open a new tab and make it active' clearly states the verb (open) and resource (new tab), and specifies the outcome (make it active). This distinguishes it from sibling tools like tab_list (list tabs) and tab_focus (focus an existing tab).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 tab_focus or tab_select. It does not mention prerequisites 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.

tab_selectA

Switch to tab at given index (from tab_list).

ParametersJSON Schema
NameRequiredDescriptionDefault
indexYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It only states 'switch to tab' without disclosing behavior when the index is out of range, any side effects, or the return value. This is insufficient for full transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that directly conveys the tool's purpose without any wasted words. It is front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, clear action) and the presence of an output schema (not shown), the description is nearly complete. It could be improved by mentioning the return value or behavior for invalid indices, but it suffices for most use cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description adds value by linking the index to 'tab_list', but does not specify the range, zero-based indexing, or error handling. It partially compensates for the schema's lack of description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('switch to tab'), the resource ('tab'), and the required parameter ('at given index'). It references the sibling tool 'tab_list' for context, distinguishing it from other tab-related tools like tab_focus or tab_close.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies proper usage by mentioning 'from tab_list', suggesting the tool should be used after obtaining the tab index. While it doesn't explicitly state when not to use it or provide alternatives, the context is clear for a simple tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

type_textA

Type into focused element (keystroke-by-keystroke). Use humanize for Gaussian delays.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
humanizeNo
mean_delayNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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 keystroke-by-keystroke behavior and suggests humanization for delays, but lacks details on prerequisites (e.g., element must be focused), error handling, or whether it clears existing content. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no fluff. Every word adds value. Front-loaded with the primary purpose. Ideal conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has an output schema (unseen), so return values are covered. The description mentions 'focused element' as a precondition, but does not explain what happens if not focused, or edge cases like content length limits. Given complexity (3 params), it is minimally complete but has gaps in usage context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It adds meaning by explaining 'text' (what to type), 'humanize' (enables Gaussian delays), but does not explain 'mean_delay' or the exact behavior of humanize beyond delays. Partial compensation; baseline is not met fully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: 'Type into focused element (keystroke-by-keystroke).' This distinguishes it from sibling tools like paste_text or fill which may type in bulk. The verb and resource are specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides some usage context by mentioning 'Use humanize for Gaussian delays,' implying when to enable that parameter. However, it does not explicitly guide when to choose this tool over alternatives like paste_text or humanize_type. No when-not or alternative tool names are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

uncheckC

Untick a checkbox.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNo
selectorNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description provides minimal behavioral insight. It does not disclose side effects, error handling, or prerequisites. Without annotations, the description should offer more context about what happens when the tool executes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

While the description is very short, it sacrifices completeness. It does not earn its place as it provides only the bare minimum, leaving critical gaps in understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of UI automation and the large sibling set, the description is too sparse. It fails to convey important details such as what 'untick' means in practical terms, return values, or error conditions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description contains no parameter information. Schema coverage is 0%, and parameter titles 'Ref' and 'Selector' are vague. The agent is left guessing how to use these fields to locate the checkbox.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the action (untick) and target (checkbox) clearly. However, it lacks differentiation from sibling tools like 'check' and doesn't specify the context (e.g., web UI), which could lead to ambiguity in tool selection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool vs alternatives. The sibling list includes 'check' and many other UI interaction tools, but the description offers no situational advice or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_fileC

Upload a file via .

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes
refNo
selectorNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, and the description fails to disclose any behavioral traits like side effects, permissions needed, or return value. It only states the action without context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise (one sentence) but at the cost of missing essential details. It lacks structure and does not earn its place by providing adequate information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the existence of three parameters and an output schema, the description is woefully incomplete. It does not explain how to use parameters, what the tool returns, or any behavioral context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, meaning no parameters are explained in the description. The fields file_path, ref, and selector have no semantic guidance provided, leaving the agent to infer their purposes.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'upload a file' and the mechanism 'via <input type=file>', which is distinct from sibling tools like fill or click. However, it does not elaborate on the tool's specific role in the context of file uploads.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives, such as fill for text inputs or click for buttons. No prerequisites or context are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_cfA

⭐ Use nodriver's built-in Cloudflare challenge verification.

Uses OpenCV template matching to find the Turnstile checkbox on a screenshot
and click it. template_image is a path to a cropped image of the checkbox;
without it, the bundled English default is used.

Works on simple CF interstitials. For managed-mode Turnstile (ChatGPT-level),
combine with storage_state or solve_captcha.
ParametersJSON Schema
NameRequiredDescriptionDefault
template_imageNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses behavior: uses OpenCV template matching to locate and click the checkbox, uses a default image if none provided. It also notes limitations (simple CF only), providing transparency beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (four sentences), front-loads the main purpose, then details the method, parameter, and usage guidance. No unnecessary information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (CF challenge verification), the description covers the mechanism, parameter, limitations, and companion tools. The presence of an output schema handles return values, so completeness is high.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter, template_image, is described in context: it's a path to a cropped image, with the fallback to an English default. This adds value beyond the schema, which has 0% coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool verifies Cloudflare challenges using nodriver's built-in method, with specific details about template matching and clicking Turnstile. It distinguishes from siblings like click_turnstile by mentioning simple vs managed-mode, making its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use (simple CF interstitials) and when not (managed-mode Turnstile), with recommendations to combine with storage_state or solve_captcha for advanced cases. The template_image parameter is also explained.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vision_locateA

⭐ Find an element by natural-language description using a vision LLM.

Uses the same provider as solve_recaptcha_ai (OPENAI_* / ANTHROPIC_* env).
Reuses solve_recaptcha_ai's vision plumbing so any vision-capable model
works (gpt-4o, gpt-5.x, claude, llava, llama-3.2-vision).

Args:
    description: NL description, e.g. "the red Create button at bottom right"
    click: if True, also dispatches a CDP mouse_click at the located point
    api_key/base_url/model/provider: explicit overrides (else from env)

Returns JSON: {"found":true/false, "x":int, "y":int, "confidence":"high|medium|low"}.
Use when CSS selectors are unreliable (visual-only differentiator, dynamic IDs).
ParametersJSON Schema
NameRequiredDescriptionDefault
descriptionYes
clickNo
api_keyNo
base_urlNo
modelNo
providerNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite no annotations, the description fully discloses behavior: it uses vision LLM, can optionally click via CDP, and returns JSON with found, x, y, confidence. It also notes provider dependency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with emojis, bullet-like argument list, and clear return format. Every sentence is informative and concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists (specified as JSON format), the description explains the return. It covers all 6 parameters, the use case, and behavioral details, making it complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description explains each parameter: 'description' as NL, 'click' as boolean, and optional overrides. It adds meaning beyond the schema's titles and types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Find an element by natural-language description using a vision LLM', specifying the verb, resource, and method. It differentiates from siblings like 'click' and 'find_by_image' by emphasizing NL description and vision LLM.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description advises using when CSS selectors are unreliable and mentions it reuses solve_recaptcha_ai's plumbing, providing context. However, it lacks explicit when-not-to-use or detailed alternatives among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wait_forC

Wait until selector exists or text appears on page.

ParametersJSON Schema
NameRequiredDescriptionDefault
selectorNo
textNo
timeoutNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description should reveal more behavioral details. It only states the waiting condition but omits what happens on timeout, whether it throws an error, or what the output schema returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no wasted words. It could benefit from slight structuring (e.g., listing parameters) to improve scannability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema and three parameters with zero annotation coverage, the description is too sparse. It fails to explain return values, default behavior, or how it differs from similar sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, yet the description adds no semantic value beyond parameter names. It does not explain how 'selector' and 'text' interact (e.g., both required? either one?) or the timeout parameter's unit or behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool waits for a selector to exist or text to appear, distinguishing it from other wait tools like wait_for_navigation (which waits for navigation). However, it could be more precise about the relationship between selector and text when both are provided.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs siblings such as wait_for_navigation, wait_for_network_idle, or click_and_wait. Agents lack context for decision-making.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wait_for_navigationC

Wait until the page finishes loading.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; the description does not disclose what happens on timeout, if an error is thrown, or any 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that is front-loaded and wastes no words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema and a single parameter, the description lacks details on return value, error conditions, and behavioral specifics needed for a complete understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description does not explain the 'timeout' parameter beyond what the schema provides (type and default). Schema description coverage is 0%, so the description should compensate but fails to do so.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool waits for the page to finish loading, using a specific verb and resource. It distinguishes from sibling tools like 'wait_for' or 'wait_for_network_idle' by focusing on navigation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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, no mention of prerequisites 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.

wait_for_network_idleA

Wait until no network request has been in-flight for idle_ms.

More robust than wait_for(selector) for JS-heavy SPAs. Implementation polls
performance.getEntriesByType('resource') + a custom fetch/XHR tracker
injected once per tab.
ParametersJSON Schema
NameRequiredDescriptionDefault
idle_msNo
timeoutNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description bears full burden. It reveals the polling mechanism and injection of a fetch/XHR tracker per tab. However, it does not disclose potential side effects like performance impact or infinite polling scenarios.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose. Every sentence provides value: the first defines the tool, the second adds implementation detail and usage context. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and presence of an output schema, the description covers purpose, usage context, and implementation. However, the lack of parameter explanation leaves a gap in completeness, especially with no schema coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, and the description fails to explain the parameters. Only 'idle_ms' is mentioned in the description, not its meaning or default, and 'timeout' is completely omitted. The description adds no value over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool waits for network idle, with specific verb 'wait' and resource 'network idle'. It distinguishes from sibling 'wait_for' by claiming robustness for JS-heavy SPAs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says this is more robust than wait_for(selector) for JS-heavy SPAs, guiding when to use it. However, it does not specify when not to use it or mention alternatives beyond wait_for.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wait_for_requestA

⭐ Block until a network request matching url_pattern is observed. Replaces the setTimeout(2000)+poll anti-pattern.

Args:
    url_pattern: substring match
    method: optional HTTP verb filter (GET/POST/...)
    timeout: max seconds to wait
    require_response: also wait for the response phase (default True)

Returns JSON of the matching entry (url/method/status/request_headers/
response_headers).
ParametersJSON Schema
NameRequiredDescriptionDefault
url_patternYes
methodNo
timeoutNo
require_responseNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description discloses that the tool blocks, waits for a timeout, and optionally requires a response. It explains the return JSON format. However, it does not mention that the tool is non-destructive or clarify behavior on timeout, slightly limiting transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficient: one sentence for purpose, one for anti-pattern replacement, then a clear list of arguments and return format. 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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (4 parameters, no annotations) and the presence of an output schema (though not shown), the description adequately explains all parameters and the return structure. It could mention timeout behavior on failure, but overall it is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description fully explains each parameter: 'url_pattern: substring match', 'method: optional HTTP verb filter', 'timeout: max seconds to wait', and 'require_response: also wait for the response phase (default True)'. This adds significant meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Block until a network request matching url_pattern is observed', using a specific verb and resource. It also mentions replacing an anti-pattern, adding context. This distinguishes it from sibling tools like 'wait_for_response' which may wait for any response.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says it 'Replaces the setTimeout(2000)+poll anti-pattern', giving usage context, but does not explicitly state when not to use it or compare to similar sibling tools like 'wait_for_navigation' or 'wait_for_url'. The guidance is implied but not comprehensive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wait_for_responseB

Wait for a network response whose URL matches regex.

ParametersJSON Schema
NameRequiredDescriptionDefault
url_patternYes
timeoutNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, description must disclose behavioral traits. It does not mention blocking nature, timeout handling, what happens on no match, or return value (despite output schema existing). Minimal 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no wasted words. Front-loaded with action and key condition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a conditional wait tool (blocking, timeout, matching logic), the description is too sparse. It omits crucial details like whether it returns the matched response, what happens on timeout, and how regex matching works exactly. Sibling tools suggest many wait variants, but no differentiation is provided.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds 'URL matches regex' context to url_pattern, which is helpful beyond the bare schema. However, the timeout parameter (with default 15) is completely undocumented, and schema coverage is 0%.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (wait), resource (network response), and condition (URL matches regex). It distinguishes from siblings like wait_for_request (waits for request) and wait_for_navigation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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., when to wait for request instead). No mention of preconditions, timeout behavior, or 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.

wait_for_urlC

Wait until URL matches a regex pattern.

ParametersJSON Schema
NameRequiredDescriptionDefault
patternYes
timeoutNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden but only states basic behavior. It does not disclose timeout behavior, whether polling occurs, or what happens on failure (e.g., error vs. return value). Key details like matching scope (current page URL) are implied but not explicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence, no wasted words. However, it could be slightly expanded to cover key details without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no annotations, 2 parameters, and an output schema, the description is incomplete. It fails to explain the return value, error handling, or provide context for the sibling tools it competes with.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must explain parameters. It only mentions 'URL matches a regex pattern' but does not describe the 'pattern' format or the 'timeout' unit/behavior. Parameter names are somewhat self-explanatory, but the description adds no additional meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool waits for a URL to match a regex pattern, which is a specific action on a specific resource. It distinguishes from sibling tools like 'assert_url_matches' (assertion) and 'wait_for_navigation' (navigation event), making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'wait_for' or 'wait_for_navigation'. The description does not mention 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.

web_vitalsA

Collect Core Web Vitals (LCP, CLS, INP, FCP, TTFB) via web-vitals v4.

Injects Google's official web-vitals library from CDN, listens for each
metric, returns after all expected metrics fire or timeout elapses.

Best practice: call after the page has been interacted with (scrolled,
clicked) so INP and CLS have real signal.
ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that it injects Google's official web-vitals library from CDN, listens for each metric, and returns after all expected metrics fire or timeout. This is transparent for a read-like operation; no annotations exist to contradict.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences: purpose, mechanism, best practice. 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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (5 metrics, library injection) and presence of an output schema, the description adequately covers usage and behavior. Could mention output format briefly, but output schema likely handles that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage. The description mentions 'returns after all expected metrics fire or timeout elapses', clarifying the timeout parameter's role. This adds some value but could be more explicit about units or range.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it collects Core Web Vitals (LCP, CLS, INP, FCP, TTFB) via web-vitals v4, injecting a library and listening for metrics. This is specific and distinguishes it from sibling tools like performance_metrics which are more general.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a best practice: call after page interaction for INP and CLS signal. This guides usage context, but does not explicitly state when not to use or suggest alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

workflow_runA

⭐ Execute a list of tool steps sequentially. Resumable — pass start_at=N to skip the first N steps.

Each step: {"tool": "<name>", "args": {...}, "label": "optional"}

Args:
    steps: list of step dicts
    start_at: index to begin from (for resume after a fix)
    stop_on_error: abort on first failure (default True). If False,
        continue and collect all results.

Returns JSON:
  {
    "completed": [
      {"index": 0, "tool": "navigate", "ok": true, "result": "..."},
      ...
    ],
    "failed_at": 3,                # index of failure (omitted on success)
    "failure_context": {...},      # last step's input + error (for LLM debug)
    "resume_with": "workflow_run(steps=..., start_at=4)"  # hint
  }

Allowed tools (curated for sequencing): navigate, reload, go_back/forward,
click, click_text, click_role, fill, type_text, press_key, select_option,
check, uncheck, wait_for*, screenshot, scroll, scroll_to, smart_fill,
vision_locate, assert_*, storage_*, cookie_import, storage_state_load,
evaluate, mouse_click_xy.
ParametersJSON Schema
NameRequiredDescriptionDefault
stepsYes
start_atNo
stop_on_errorNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It describes sequential execution, resumability, start_at, stop_on_error behavior, and detailed return format with resume hint. Covers all key behavioral aspects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with emoji, bullet points, and code blocks. Front-loaded with main purpose. Every sentence is informative, no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given complexity and lack of annotations, description is complete: covers input, behavior, allowed tools, return format, and resume hint. Output schema details are provided inline, so no gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, description adds significant value by explaining step format (dictionary with tool, args, label) and clarifying start_at and stop_on_error semantics. Schema already has types and defaults, but description provides needed context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it executes a list of tool steps sequentially, with resumability. It distinguishes from siblings by listing allowed tools for sequencing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains when to use (sequential execution of allowed tools) and how to resume with start_at. Does not explicitly state when not to use, but allowed tools list provides implicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

B3.2/5.0
Disambiguation3/5

With 138 tools, many have overlapping purposes (e.g., 10+ click tools). Although each has distinct use cases, the sheer volume forces an agent to carefully differentiate similar tools, creating ambiguity.

Naming Consistency3/5

Most tools use snake_case with a verb_noun pattern, but there are outliers like bare verbs (click, fill, check) and compound names (click_and_wait, click_at_corner). The convention is moderately consistent but not strict.

Tool Count2/5

138 tools is excessive for almost any domain. While the server covers a wide range of stealth browser automation features, many tools are highly specialized and could be consolidated, making the surface feel bloated.

Completeness5/5

The tool set is exceptionally comprehensive, covering launch, attach, navigation, interaction, forms, network, storage, performance, captcha, accessibility, and workflow orchestration. It's hard to find any missing operations for browser automation.

Maintenance

ActivityMaintained
ResponsivenessSyncing

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to perform undetectable browser automation that bypasses Cloudflare, antibots, and social media blocks. Provides 105 tools for element extraction, network debugging, and real-world web scraping with a 98.7% success rate on protected sites.
    1,883
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables undetectable web scraping and browser automation for AI agents with 84 tools including stealth navigation, element extraction, network interception, and auto cookie consent dismissal. Bypasses anti-bot systems like Cloudflare and DataDome while providing LLM-ready markdown output and full Chrome DevTools Protocol access.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Undetectable browser automation for AI agents that bypasses Cloudflare, antibot systems, and social media blocks using real browser instances with 97 tools across 11 sections.
    MIT

Latest Blog Posts

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/RobithYusuf/mcp-stealth-chrome'

If you have feedback or need assistance with the MCP directory API, please join our Discord server