Skip to main content
Glama
RobithYusuf

MCP Camoufox

by RobithYusuf

MCP Camoufox

npm version npm downloads License: MIT Node.js

The most feature-rich stealth browser MCP server. 133 tools for full browser control powered by Camoufox — a Firefox fork with C++ level anti-detection that bypasses Cloudflare, bot detection, and anti-automation.

One command. No Python. No manual setup. Everything auto-installs.

claude mcp add camoufox -- npx -y mcp-camoufox@latest

What Can It Do?

  • Login to Google, ChatGPT, GitHub — without getting blocked

  • Fill forms, click buttons, type text, upload files

  • Manage cookies, localStorage, sessions across visits

  • Take screenshots, export PDFs, capture network traffic

  • Work with multiple tabs, iframes, dialogs

  • Execute JavaScript, inspect elements, scroll pages

  • Scrape structured data (job listings, products) with auto-detected selectors

  • All while being undetectable by anti-bot systems

Related MCP server: CloakMCP

Comparison

MCP Server

Tools

Stealth

npx Install

Persistent Session

Chrome DevTools MCP

30+

No

Built-in

Yes

whit3rabbit/camoufox-mcp

1

Yes

Yes

No

redf0x1/camofox-mcp

47

Yes

Yes

Yes

Sekinal/camoufox-mcp

49

Yes

No (clone)

Yes

Playwright CLI

60+

No

Yes

Yes

mcp-camoufox

133

Yes

Yes

Yes

Competitor figures checked 19 Aug 2026: camofox-mcp counted by running tools/list against v1.15.0 from npm (it is npx-installable — an earlier version of this table wrongly said otherwise); the others are taken from their own READMEs.

Proven on Real Sites

Site

Challenge

Result

2captcha.com/demo/cloudflare-turnstile

Cloudflare Turnstile widget

"Success!" via click_turnstile() tool (proof)

bot.sannysoft.com

Firefox fingerprint tests

✅ All green (proof)

browserscan.net/bot-detection

WebDriver/UA/CDP/Navigator

✅ All categories "Normal" (proof)

🎯 Cloudflare Turnstile → Success via click_turnstile()

click_turnstile() auto-detects the widget via 6 selector fallback (iframe[src*=challenges.cloudflare.com], [data-sitekey], .cf-turnstile, …), computes checkbox position (offset_x=30 from widget left), and clicks with a 3-step Bezier-like approach — combined with Camoufox's native humanize + disable_coop for cross-origin iframe click.

Scope: works on Interactive Turnstile (visible iframe widget). Managed Challenge interstitials ("Just a moment...") render the widget in shadow DOM — not supported here; use sister project mcp-stealth-chrome (Chrome+CDP) for those. Real-world bypass success also depends on IP reputation and browser fingerprint — code alone doesn't guarantee it.

🧪 bot.sannysoft.com → Firefox Fingerprint Pass

User Agent reports Firefox/135.0, WebDriver missing, WebDriver Advanced passed, Permissions prompt, Plugins length 5 passed, Languages en-US,en, WebGL Intel HD Graphics — all green. ("Chrome: missing" is expected — Camoufox spoofs Firefox, not Chrome.)

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

WebDriver, User-Agent, CDP, Navigator — every detection category returns "Normal". Camoufox's C++-level Firefox patches leave zero automation signals.

Setup

One command for Claude Code:

claude mcp add camoufox -- npx -y mcp-camoufox@latest

Every other client takes the same server block — only the config file differs:

{
  "mcpServers": {
    "camoufox": {
      "command": "npx",
      "args": ["-y", "mcp-camoufox@latest"]
    }
  }
}

Client

Config file

Claude Code

claude mcp add camoufox --scope user -- npx -y mcp-camoufox@latest (drop --scope user for project-only)

Claude Desktop

macOS ~/Library/Application Support/Claude/claude_desktop_config.json · Windows %APPDATA%\Claude\claude_desktop_config.json · Linux ~/.config/Claude/claude_desktop_config.json

Cursor

~/.cursor/mcp.json (global) or .cursor/mcp.json (project)

Windsurf

~/.windsurf/mcp.json or .windsurf/mcp.json — uses "servers" instead of "mcpServers"

VS Code (Continue / Cline / Kilo)

~/.continue/config.json or .vscode/mcp.json

Factory (Droid)

~/.factory/mcp.json or .factory/mcp.json, with "type": "stdio" — or droid mcp add camoufox "npx -y mcp-camoufox@latest"

Antigravity

~/.gemini/antigravity/mcp_config.json (global only)

Two clients need a different shape:

// OpenCode — ~/.config/opencode/opencode.json ("local", not "stdio"; command is one array)
{ "mcp": { "camoufox": { "type": "local", "command": ["npx", "-y", "mcp-camoufox@latest"], "enabled": true } } }

// Trae — ~/.trae/mcp.json (mcpServers is an ARRAY)
{ "mcpServers": [ { "name": "camoufox", "command": ["npx", "-y", "mcp-camoufox@latest"] } ] }

Requirements

Node.js 18+ is the only prerequisite (node --version). The Camoufox browser binary (~80 MB) downloads itself on first launch — nothing else to install.

On Windows the same one-liner works; there is no standalone .exe because this is a Node package. The browser lands in %LOCALAPPDATA%\camoufox, profile/screenshots/sessions in %USERPROFILE%\.camoufox-mcp\, and output paths accept either C:\path\file.json or C:/path/file.json.

Requirement

Version

Check

Node.js

18+

node --version

That's all. Camoufox browser binary (~80MB) downloads automatically on first launch.

All 133 Tools

Grouped by area. → Full reference, every tool and parameter

Category

Tools

For example

Browser Lifecycle

4

browser_launch, browser_close, reset_profile

Navigation

4

navigate, go_back, go_forward

DOM & Content

7

browser_snapshot, screenshot, get_text

Element Interaction

12

click, click_text, click_role

Keyboard

2

type_text, press_key

Mouse XY

4

mouse_click_xy, mouse_move, click_turnstile

Wait

7

wait_for, wait_for_navigation, wait_for_url

Tabs

4

tab_list, tab_new, tab_select

Cookies

3

cookie_list, cookie_set, cookie_delete

Local Storage

3

localstorage_get, localstorage_set, localstorage_clear

Session Storage

3

sessionstorage_get, sessionstorage_set, sessionstorage_clear

JavaScript

2

evaluate, inject_init_script

Element Inspection

5

inspect_element, get_attribute, query_selector_all

Frames

2

list_frames, frame_evaluate

Batch Operations

6

batch_actions, fill_form, login_classic

Viewport

2

get_viewport_size, set_viewport_size

Scroll

2

scroll, scroll_to

Dialog

2

dialog_handle, dialog_auto_handle

Accessibility

1

accessibility_snapshot

Console & Network

9

console_start, console_get, network_start

Compound (reduce round-trips)

4

wait_and_snapshot, back_and_snapshot, reload_and_snapshot

Smart Selectors (skip snapshot)

3

find_by_text, find_by_label, find_by_placeholder

Session Portability

7

cookie_export, cookie_import, cookie_export_file

Humanize / Anti-Bot

5

humanize_click, humanize_type, mouse_drift

Session Warmup & Detection

2

session_warmup, detect_anti_bot

Assertions

4

assert_element_visible, assert_text_present, assert_url_matches

Workflow Helpers

3

click_and_wait, wait_for_network_idle, describe_page

Scraping & Extraction

4

detect_content_pattern, extract_structured, extract_table

Browserless HTTP

5

http_request, http_session_cookies, scrape_markdown

Storage Inspection

4

storage_snapshot, storage_diff, indexeddb_list

Debug

6

server_status, get_page_errors, export_har

Site Automation

2

chatgpt_generate_image, chatgpt_generate_batch

32 categories, 133 tools. The full table lives in docs/TOOLS.md so this page stays readable — nothing was dropped, and a script checks both against the running server's tool registry.

Examples

Read a page without launching anything. The browser costs seconds and ~400 MB; most fetches don't need a DOM. smart_fetch only starts one if the response looks anti-bot blocked.

scrape_markdown(url="https://example.com/docs")     # clean markdown, no browser
smart_fetch(url="https://shop.example.com/item/42") # escalates only if blocked
http_request(url="https://api.example.com/v1/me")   # reuses the browser's cookies

Log in, then hit the API cheaply. Log in once with the browser, then stay browserless.

browser_launch(url="https://app.example.com/login")
smart_fill(fields_json='{"Email":"me@x.com","Password":"secret"}', submit_label="Sign in")
wait_for_change()                                   # returns when the page really reacts
http_request(url="https://app.example.com/api/orders")   # same session, no browser work

Fill a form without a snapshot. smart_fill matches by label; form_introspect tells you what a form wants and why it is rejecting a submit.

form_introspect()                                   # labels, types, required, validation state
smart_fill(fields_json='{"Customer name":"Rina","E-mail address":"rina@x.com"}')

Find out why a click did nothing — before spending the click.

assert_clickable(selector="#submit")
# FAIL: covered by div.overlay — that element would receive the click

Run a whole sequence in one call. Resumable: a failure tells you the index to restart from.

workflow_run(steps=[
  {tool: "navigate", args: {url: "https://example.com"}},
  {tool: "smart_fill", args: {fields_json: '{"Search":"camoufox"}'}},
  {tool: "click_text", args: {text: "Search", within: "@dialog"}},
  {tool: "wait_for_change", args: {}}
])

Search through an engine you control (self-hosted SearXNG, or Brave/Tavily/Exa with a key).

search(query="firefox tls fingerprint", endpoint="http://127.0.0.1:8899")
scrape_markdown(url="<a url from the results>")

How It Works

AI Agent (Claude, Cursor, Windsurf, VS Code)
    |
    |  MCP Protocol (stdio JSON-RPC)
    v
mcp-camoufox (Node.js)
    |
    |  Playwright API (Juggler protocol, NOT CDP)
    v
Camoufox (Patched Firefox binary)
    |
    |  C++ anti-fingerprint patches
    v
Website (Cloudflare, bot detection — bypassed)

Why stealth works

  • Juggler protocol instead of CDP — sites detecting Chrome DevTools Protocol cannot detect Camoufox

  • C++ level patches — fingerprint spoofing at browser engine level, not JavaScript injection

  • GeoIP auto-detection — timezone, locale, geolocation match your real IP

  • Human-like behavior — optional humanize mode for realistic mouse movements

Why sessions persist

Browser profile stored at ~/.camoufox-mcp/profile/. Cookies, localStorage, IndexedDB survive across sessions. Login once, stay logged in.

Why refs work better

browser_snapshot tags elements with data-mcp-ref attributes. This is:

  • More token-efficient than sending full HTML

  • More reliable than CSS selectors that break when sites update

  • Clickable via click(ref="e5") — no selector gymnastics

Data Storage

Path

Contents

~/.camoufox-mcp/profile/

Browser profile (cookies, localStorage, cache)

~/.camoufox-mcp/screenshots/

Screenshots, PDFs, HAR exports

Reset everything: rm -rf ~/.camoufox-mcp/ — or call the reset_profile tool (browser must be closed first).

Switching between accounts on the same domain

The default profile persists across browser_close calls, so the next login on the same domain inherits cookies + session — sometimes redirecting to the wrong account. Two options:

  • **browser_launch(fresh_profile=true)** — uses a temp profile dir that's removed on browser_close. Best for one-off logins.

  • **reset_profile** (browser must be closed) — wipes the shared profile entirely.

Troubleshooting

Problem

Fix

"Browser not running"

Call browser_launch first

Click blocked by overlay

A synthetic pointer-event fallback fires and the response warns you (). If the widget still ignores it, dismiss the blocker (press_key("Escape")) or use mouse_click_xy.

Clicked the wrong "Cancel"/"Save"

click_text now fails with a candidate list instead of guessing. Use within="@dialog" to stay inside the open modal, or index=N.

Click on a Radix/Headless UI/MUI option did nothing

The real click was blocked and the old fallback used a bare el.click(), which those libraries ignore. Fixed — the fallback now replays the full pointer sequence. Upgrade if you're on ≤0.7.2.

Login gone after browser_close

cookie_set without expires_days creates a session cookie, which no browser writes to disk. Pass expires_days=30, or use storage_state_save/auth_capture. browser_close now tells you how many cookies were dropped.

Stale refs after navigation

Call browser_snapshot again — refs regenerate each time

Window too large

browser_launch(width=1024, height=768)

navigate or tab_new times out after 30s, once in a while

Camoufox sporadically never commits a navigation (~1-2%). tab_new now detects it and retries on a fresh tab automatically; for navigate, call it again. This is upstream, not the 5th-tab bug that 0.9.11 fixed — that one broke every navigation after five tabs and is gone.

Widening the browser window leaves empty space instead of reflowing the page

Playwright pins a fixed viewport, and a fixed viewport never follows the OS window — dragging the frame bigger just adds blank area. Call set_viewport_size(w,h) after resizing, or launch with no_viewport=true to let the content track the window live. Since 0.10.3, browser_launch(width,height) also sizes the viewport to match, so a custom launch size no longer starts with a band of empty space.

Viewport smaller than the window (~80px)

That gap is browser chrome, not a bug. set_viewport_size(w,h) sets the exact viewport; browser_launch(no_viewport=true) lets the content fill the real window — but then the viewport can exceed the spoofed screen, which is an anti-bot tell (the launch reply warns when it happens).

First launch slow

Downloading Camoufox binary (~80MB). Happens once.

Huge snapshot output

Normal for big pages. Use get_text or evaluate instead.

iframe not accessible

Use list_frames + frame_evaluate

CAPTCHA appears

Cannot auto-solve. Use headless=false and solve manually.

Login lands on wrong account

Profile carry-over. Use fresh_profile=true on launch or reset_profile.

Need a PDF

save_pdf can't work on Firefox/Camoufox. Use screenshot(full_page=true).

browser_launch fails with Browser.setDefaultViewport ... isMobile

You're on mcp-camoufox <0.9.3, which let npm resolve playwright-core 1.62.x. Upgrade to 0.9.3+ — it pins playwright-core <1.61.0.

npm audit flags adm-zip in your project

It comes from camoufox-js, which pins adm-zip ^0.5.16. Our own overrides can't reach your tree (npm applies overrides only from the root project), so add "overrides": { "adm-zip": "0.6.0" } to YOUR package.json if your scanner requires it.

Field value looks concatenated

Fixed — fill/fill_form/batch_actions/login_classic now clear email/number inputs before typing. Upgrade if you're on ≤0.7.2.

humanize_click did nothing

Fixed — it now scrolls the element into view and errors if the element is outside the viewport.

navigate, tab_new or reload hangs ~30s and times out

Camoufox stops delivering the load/domcontentloaded events after the 5th page in a context, so every navigation waited out its full timeout on a page that had in fact loaded. Opening five tabs broke navigation for the rest of the session. Fixed in 0.9.11 — navigation now commits and polls document.readyState instead. Upgrade if you're on ≤0.9.10.

A tab opened after dialog_handle froze on a confirm()

The one-shot handler armed only the tabs that were open at the time, but told the persistent handler to stand down globally — so the dialog reached no handler, and a registered listener suppresses Playwright's auto-dismiss. Fixed in 0.9.11: tabs opened later are armed too.

MCP server silently dies

If you ran pkill -f camoufox, you killed the MCP node process too (its argv contains "camoufox"). Target the binary specifically — e.g. pkill -f "Camoufox.app/Contents/MacOS" — or use pkill -f camoufox-js.

License

MIT

Available Tools

133 tools
accessibility_snapshotA

Get accessibility tree snapshot — compact view of page structure for LLM understanding.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It does disclose that the tool returns a compact snapshot rather than a raw tree, implying a read-only action. It does not explicitly confirm non-mutation or describe the snapshot format, but for a simple snapshot tool this is minimally 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?

A single front-loaded sentence with no filler; the key operation and output qualifier come first. Every word 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?

For a zero-parameter tool with no output schema, the description gives the essential outcome and purpose. It is slightly thin on what 'compact view' means concretely and on whether it applies to the current page, but it is largely complete for this 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?

The input schema has zero parameters and 100% description coverage, so there is no parameter burden for the description to carry. The baseline for zero-parameter tools is 4, and nothing in the description misleads about 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?

The description uses a specific verb and resource ('Get accessibility tree snapshot') and adds a distinctive qualifier ('compact view of page structure for LLM understanding'). This clearly distinguishes it from sibling snapshot tools like browser_snapshot or wait_and_snapshot by naming the accessibility tree as the resource.

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 phrase 'compact view... for LLM understanding' implies this is for obtaining a lightweight, LLM-oriented structured snapshot rather than a full DOM/screenshot. However, it does not explicitly name sibling alternatives or 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.

assert_clickableA

Hit-test an element WITHOUT clicking: would a real click actually land on it? Answers "why did my click do nothing?" before you spend the click. Reports the element that would intercept the click when something covers it.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNo
selectorNo

TDQS

A3.8/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 behavioral disclosure burden. It clearly states that no click occurs, that it hit-tests, and that it reports an intercepting element when something covers the target. This is meaningful non-obvious behavior beyond the tool name.

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 key distinction, and every sentence adds value. There is no filler or repetition of the tool name.

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 the description covers purpose and core behavior, but it is incomplete for correct invocation because an agent cannot tell how to populate ref or selector. With no output schema, the description also does not fully describe the result shape beyond 'reports the element that would intercept'.

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 schema has two parameters, ref and selector, with 0% schema description coverage, and the description adds no information about either. It never explains ref vs selector, whether they are alternatives, required, or how they locate the element. The description does not compensate for the empty schema at all.

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 precise verb-resource combination: 'Hit-test an element WITHOUT clicking' and clarifies the intent by asking 'would a real click actually land on it?' This distinguishes the tool from siblings like click, click_text, and click_role while also differentiating it from visibility assertions by focusing on hit-testing rather than visibility.

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 provides clear usage context: use it to answer 'why did my click do nothing?' before spending a real click. This implies the right moment to invoke it and contrasts it with click tools, though it does not explicitly name alternative tools or 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.

assert_element_visibleA

Assert element exists and is visible. Returns success/fail (no throw).

ParametersJSON Schema
NameRequiredDescriptionDefault
selectorYes

TDQS

A4/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 disclosure burden, and it does disclose an important behavioral trait: it returns success/fail rather than throwing. It also indicates both existence and visibility are required. It could add detail on waiting/retry behavior, but for a simple assertion this is meaningful 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 two short sentences, front-loads the core action, and every clause adds value. There is no redundant framing or boilerplate.

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 one-parameter assertion tool, the description is close to sufficient: it states the action and the non-throwing result. It is incomplete only because selector syntax and timing behavior are left unstated, and there are no annotations or output schema to fill those 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?

Schema description coverage is 0%, and the description does not explain the selector parameter's expected format (e.g., CSS selector vs XPath). The only implicit connection is that the element is identified by the 'selector' argument; that is too thin to compensate for the low 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 states a clear verb ('Assert') and resource ('element') with specific criteria: exists and is visible. The phrase 'Returns success/fail (no throw)' clarifies that this is a boolean-style assertion, which separates it from element inspection/retrieval tools like inspect_element or query_selector_all.

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 assertion phrasing makes its intended use obvious: verify an element is both present and visible. It does not explicitly name alternatives or exclusions such as assert_clickable or assert_text_present, so it misses full when-to-use guidance, 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.

assert_text_presentA

Assert text is present anywhere on page (case-sensitive substring).

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes

TDQS

A3.7/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 of behavioral disclosure. It usefully states the substring behavior and case sensitivity, but it does not disclose what happens on failure (e.g., whether it throws, returns false, or waits) or whether hidden or off-screen text is included, which are important for an assertion 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 a single, front-loaded sentence with zero filler. Every word contributes to understanding the tool's scope and matching behavior, making it highly efficient.

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 one-parameter tool, the description is mostly sufficient to invoke it correctly. However, the absence of any statement about failure behavior or return value, combined with no output schema and no annotations, leaves a notable gap for an assertion tool where failure semantics are central to the caller's control flow.

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 single parameter 'text' is named clearly and the description clarifies that it is the case-sensitive substring being asserted. Since schema description coverage is 0%, the description compensates somewhat by explaining the meaning of the parameter through the tool's purpose, though it adds no additional details such as trimming, encoding, or special characters.

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 identifies the action (assert), the target resource (text on the page), and the exact matching semantics (case-sensitive substring, anywhere on page). It distinguishes itself from sibling assertions like assert_element_visible and assert_url_matches by specifying text content rather than element state or URL.

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 it: whenever you need to verify that a specific substring appears anywhere on the current page. However, it does not explicitly mention alternatives, exclusions, or when to prefer sibling tools such as assert_element_visible or find_by_text, leaving the routing decision partly to the agent.

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

assert_url_matchesC

Assert current URL matches pattern (substring or regex).

ParametersJSON Schema
NameRequiredDescriptionDefault
regexNo
patternYes

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 the full burden, but it only discloses the matching modes (substring or regex). It does not say what happens when the assertion fails, whether the tool waits or retries, or how the result is reported to the agent.

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 one tightly worded sentence with no filler, and the core purpose is front-loaded. It is appropriately concise, though it sacrifices behavioral 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?

For a simple two-parameter tool with no output schema or annotations, the description is not fully complete. An agent still lacks information about failure behavior and return values, which is critical for an assertion 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?

Schema description coverage is 0%, so the description must explain the parameters. It adds useful meaning by clarifying that pattern can be a substring or regex depending on the regex flag, but it does not specify the default mode/substring semantics, regex syntax, or case sensitivity.

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 uses a specific verb ('Assert') with a clear resource ('current URL') and defines what matching means ('substring or regex'). This makes it distinguishable from retrieval tools like get_url and waiting tools like wait_for_url, though it does not name those alternatives.

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 given about when to use this assertion versus alternatives such as wait_for_url or get_url. The verb 'Assert' implies immediate verification, but the description never states this or provides any exclusions or preconditions.

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

auth_captureA

Save current session as named auth state (e.g. logged-in user). Convenience wrapper: storage_state_save to ~/.camoufox-mcp/sessions/.json

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesSession name (e.g. 'github-bob', 'shopify-mystore')

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 of behavioral disclosure. It reveals that the tool writes the current session's auth state to a named JSON file at a specific path, which is a concrete side effect. It does not mention overwrite behavior or security implications of stored auth state, but for a save-related convenience wrapper the key behavior is adequately disclosed.

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 compact sentences with no filler. The core action is front-loaded, followed by the target path and an illustrative example, and every clause contributes useful 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?

For a single-parameter tool with no output schema and no nested objects, this description is nearly complete. It names the underlying storage_state_save operation and the exact output location, though it does not spell out what 'auth state' includes or what happens if the destination file already exists.

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 schema already documents the 'name' parameter with examples, and the description adds meaningful context by showing exactly how the parameter is used: it becomes the filename in ~/.camoufox-mcp/sessions/<name>.json. This goes beyond the schema's static description and clarifies the parameter's real effect.

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 a specific action ('Save current session as named auth state') with a clear resource (current session) and output (named auth state). It also gives an example ('logged-in user') and distinguishes itself by naming storage_state_save as the underlying wrapper, so an agent can tell it apart from related session/save 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?

The description explicitly references storage_state_save and shows the default target path, giving an agent a clear sense of when this convenience wrapper is appropriate. It does not explicitly state exclusions, such as 'use storage_state_save for custom paths,' but the wrapper relationship strongly implies the usage context.

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

back_and_snapshotB

Navigate back + return snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only says what happens at a high level, but provides no details about waiting for navigation, failure handling, whether it preserves or changes session state, or what format the snapshot takes.

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 compact and front-loaded with no filler or redundancy. It earns its place, though its brevity does leave some behavioral gaps unaddressed.

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 no-parameter tool, the description is minimally adequate, but the absence of an output schema means the agent cannot know what a 'snapshot' actually contains. It also does not clarify how this tool relates to the many sibling navigation-and-snapshot combinations.

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 and the input schema confirms this with full coverage. There is nothing for the description to add about parameter meaning, so the baseline of 4 is appropriate.

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 clear action and result: navigate the browser back and return a snapshot. It distinguishes itself from go_back alone and browser_snapshot alone by combining both, though it does not explicitly differentiate itself from other snapshot-combo siblings like navigate_and_snapshot or reload_and_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?

Usage is implied by the verb phrase: use this when you want to go back in history and capture the resulting page state. However, it does not explain when to prefer this over chaining go_back with browser_snapshot, or over navigate_and_snapshot, nor does it mention limitations or preconditions.

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

batch_actionsC

Execute multiple actions in one call. Each action: {type, ref?, value?, text?, key?, url?}.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionsYesList of actions to execute sequentially

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 must carry the behavioral disclosure burden. It mentions that actions are executed in one call, but it does not explain ordering guarantees, partial failure behavior, atomicity, return values, or what happens if one action fails. These are important unknowns for a batch execution tool.

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 behavior. However, it includes an unlisted url field and omits timeout, so it is concise but not fully accurate.

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 output schema and no annotations, the description is incomplete. It lacks information about supported action types, execution semantics, failure handling, and what the caller should expect after invoking the batch.

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 schema already documents the actions parameter and its properties in detail, so the description adds little semantic value. It also lists 'url?' as an optional action field even though url is not present in the schema, and it omits the timeout field that is present, which could mislead an agent.

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 that the tool executes multiple actions in a single call, which identifies the verb and resource. It does not explicitly contrast itself with the many sibling single-action tools, so it stops short of full sibling 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?

There is no guidance on when to use batch_actions instead of individual action tools such as click, fill, type_text, press_key, or wait_for. The batching benefit is implied by the name and description, but no explicit when-to-use 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.

browser_closeA

Close the browser. Cookies are preserved in the persistent profile (~/.camoufox-mcp/profile). If the launch used fresh_profile=true, the temp profile is removed.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 of behavioral disclosure. It usefully explains that cookies persist in a specified profile path and that a fresh-profile launch removes the temporary profile. This goes beyond the bare verb 'close' and gives the agent crucial context about state persistence and destructive 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 deliver the core action first, then the persistence caveats. No unnecessary filler. 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?

Given the tool's simplicity, zero parameters, and absence of an output schema, the description covers all essential aspects: what it closes, what is preserved, and what is removed under fresh-profile mode. An agent has enough information to invoke and anticipate side effects 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?

The tool has zero parameters, so there is no parameter information for the description to add beyond the schema. With 0 params, the baseline of 4 applies. The description appropriately focuses on behavioral effects instead of 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 opens with a specific verb and resource: 'Close the browser.' This clearly distinguishes it from sibling tools like tab_close (which closes only a tab), browser_launch (which starts the browser), and browser_recover (which attempts recovery). The scope 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 Guidelines3/5

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

The intended use is implied: call this when you want to end the browser session. However, it provides no explicit guidance about when this should be preferred over alternatives like reset_profile or browser_recover, nor any 'when not to use' statement. The context is clear but the routing guidance is absent.

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

browser_launchA

Launch Camoufox stealth browser and navigate to URL. Browser persists between calls. By default cookies/localStorage persist in ~/.camoufox-mcp/profile. Set fresh_profile=true to start with a clean temp profile (auto-cleaned on browser_close) — useful when switching between accounts on the same domain.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoURL to navigate toabout:blank
geoipNoAuto-detect timezone from IP
widthNoWINDOW width (0 = default 1280). The viewport matches this width and is 80px shorter than the window height (browser chrome) — use set_viewport_size to set a viewport independently of the window.
heightNoWINDOW height (0 = default 800). See width.
localeNoBrowser localeen-US
headlessNoRun without visible window
humanizeNoHuman-like mouse movements
no_viewportNoLet the content area follow the real OS window instead of a fixed viewport (Playwright viewport:null). WARNING: this drops the window-size cap, so the viewport can end up LARGER than the spoofed screen — a window wider than its own screen is an easy anti-bot tell. Prefer set_viewport_size unless you need a full-window canvas.
fresh_profileNoStart with a clean temp profile (no carry-over cookies/cache). Temp dir is removed when browser_close is called. Use when switching between accounts on the same domain to avoid login session collisions.

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 key behaviors beyond the schema: browser persistence, default profile path (~/.camoufox-mcp/profile), and auto-cleaning of temp profiles on browser_close. It does not mention side effects like visible windows when headless=false, but that is covered in the schema. Overall, it adds meaningful 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 efficient and front-loaded: the first sentence states the action, the second explains persistence, and the third covers the fresh-profile option. Every sentence earns its place with no redundancy or 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?

The description covers the main behavioral aspects needed to use the tool correctly: persistence, profile handling, and a key use case for fresh_profile. The schema covers all 9 parameters in detail, so the description doesn't need to repeat them. A minor gap is ambiguity about calling browser_launch again when a browser already exists, but overall it is sufficiently 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 description coverage is 100% and each parameter is already well-documented, so the baseline is 3. The description adds minor extra context (e.g., the default profile path and account-switching use case) but does not significantly expand on the parameter meanings beyond what the schema 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 states a specific verb and resource: 'Launch Camoufox stealth browser and navigate to URL.' It clearly defines the tool's core purpose and distinguishes it from navigation/other sibling tools by being the launcher. The phrase 'Browser persists between calls' further clarifies its role as the session initiator.

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 context on when to use the tool: it launches a browser and persists between calls, implying it should be used once at the start of a session. It also provides practical guidance on when to set fresh_profile=true (switching between accounts on the same domain). It does not explicitly name alternatives or state when-not-to-use, but the context is strong.

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

browser_recoverA

Escape hatch when the browser is wedged and browser_close can't complete: force-drops the connection and resets server state so browser_launch works again. Also reports a profile lock held by another Camoufox process, which is the usual cause of 'A copy of Camoufox is already open'.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 behavioral burden. It discloses that the tool force-drops the connection, resets server state, and reports profile-lock diagnostics. It does not fully spell out side effects such as whether all browser state/session is lost, but it is honest about the reset nature.

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 deliver the trigger condition, the action taken, the expected outcome, and a common underlying cause. The most important information is front-loaded, and there is no filler 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 zero-parameter escape-hatch tool with no output schema, the description covers when to use it, what it does, and what to expect afterward. It is slightly vague about what 'resets server state' entails in terms of data loss and does not differentiate from the sibling reset_profile tool, but it is otherwise sufficient.

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 and an empty input schema, so there is no parameter semantics to convey. The baseline for zero-parameter tools is 4, and the description appropriately spends no space on 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 names a specific recovery operation ('force-drops the connection and resets server state') tied to a clear precondition: the browser is wedged and browser_close cannot complete. It also distinguishes itself from browser_launch and browser_close by explaining how it enables relaunching.

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 states when to use the tool: as an escape hatch when browser_close fails and the browser is wedged, with the goal of making browser_launch work again. It does not explicitly contrast with related tools like reset_profile, so it stops short of full alternative guidance.

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

browser_snapshotA

Get visible interactive elements with ref IDs. Use refs with click/fill. Always call after navigation. On large pages (Outlook, dashboards) the response can be truncated — narrow with roles=["button","textbox"] or paginate with offset/limit. Refs stay stable regardless of filters (every visible element is still numbered).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax elements to return (0 = no cap).
rolesNoOnly show elements matching these tags/roles/types, e.g. ["button","link","textbox","tab"]. Empty = all.
offsetNoSkip the first N matched elements (pagination).

TDQS

A4.1/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 disclosure burden. It usefully reveals that large-page responses can be truncated, that refs stay stable regardless of filters, and that visible elements remain numbered. This is meaningful behavioral context, though it does not describe output shape or explicitly state side-effect-free behavior.

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 four tight sentences, each earning its place. The core purpose is front-loaded, followed by usage guidance, a caveat about large pages, and a clarification about ref stability. There is no fluff or repetition of schema details.

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 three optional, well-documented parameters and no output schema, the description covers the essential operational context: when to call it, how refs relate to click/fill, truncation risk, and mitigation strategies. It is not fully exhaustive about return shape, but it is complete enough for effective 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 description coverage is 100%, so the baseline is 3, but the description adds value beyond the schema by explaining how parameters are used together: narrowing with roles, paginating with offset/limit, and the stability of ref numbering under filtering. This elevates it above the baseline.

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 opens with a specific verb and resource: 'Get visible interactive elements with ref IDs.' This clearly states what the tool does and is not a tautology. However, it does not explicitly distinguish itself from sibling tools such as accessibility_snapshot or describe_page, so it falls short of a 5.

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 practical usage context: 'Always call after navigation' and 'Use refs with click/fill.' It also explains how to handle large pages by narrowing with roles or paginating with offset/limit. It does not name alternatives or explicitly state when not to use the tool, so it stops short of a 5.

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

chatgpt_generate_batchA

Generate MANY images on chatgpt.com IN PARALLEL (one tab per job, fire-all-then-collect) and save each to disk. Submits every job first WITHOUT waiting, then waits for all generations concurrently — far faster than sequential. For a CONSISTENT feed set, pass shared_image_paths (e.g. [logo] and/or a style-reference image like a previously-generated hero) uploaded to EVERY tab, plus style_suffix (a shared style spec) appended to every prompt. Requires an authenticated chatgpt.com session (import cookies first). Returns per-job results (saved path / ok / bytes / error).

ParametersJSON Schema
NameRequiredDescriptionDefault
jobsYesPer-image jobs: each has a prompt and an output PNG path.
stagger_msNoDelay between submitting each tab (avoids UI/anti-bot races).
timeout_msNoMax ms to wait for each image to finish.
style_suffixNoShared style spec text appended to every prompt (exact colors, typography, layout, mood) for consistency.
shared_image_pathsNoReference images uploaded to EVERY tab (e.g. [logoPath, styleRefPath]) — key for visual consistency.

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 carries the full behavioral disclosure burden. It explains the fire-all-then-collect parallel strategy, the fact that it saves to disk, that an authenticated session is required, and the per-job result structure. This is substantial and accurate behavioral 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 front-loaded with the core action and parallel behavior, then covers consistency, authentication, and return values. There is some redundancy between 'IN PARALLEL', 'one tab per job, fire-all-then-collect', and 'Submits every job first WITHOUT waiting', but each sentence still contributes useful detail.

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 complex batch tool with no annotations and no output schema, the description is complete: it covers authentication prerequisites, parallel execution semantics, consistency-related parameters, and return values. An agent has enough information to invoke the tool correctly and understand what will happen.

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 100%, so the baseline is 3. The description adds meaningful semantics beyond the schema by explaining that `shared_image_paths` are uploaded to EVERY tab and `style_suffix` is appended to every prompt for consistency. It also clarifies `jobs` as per-image jobs with prompts and output paths.

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 a specific action ('Generate MANY images on chatgpt.com IN PARALLEL') with a clear resource (chatgpt.com) and outcome (save each to disk). It also differentiates itself from the single-image sibling `chatgpt_generate_image` through the emphasis on batching and parallelism.

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 context for when to use it: generating many images in parallel and saving results to disk. It provides conditional guidance for consistent feeds using `shared_image_paths` and `style_suffix`, plus a prerequisite ('Requires an authenticated chatgpt.com session'). It does not explicitly name alternatives or state when not to use it, but the use case is clear enough.

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

chatgpt_generate_imageA

Generate or edit an image on chatgpt.com end-to-end and save it to disk in ONE call. Opens a fresh chat, optionally uploads reference images (e.g. a brand logo), submits the prompt, waits for the generated image to finish, then writes the result PNG to output_path. Requires an authenticated chatgpt.com session (import cookies first via cookie_import). Returns the saved path and pixel dimensions. Note: chatgpt image generation is slow (~60-120s) — set timeout_ms accordingly.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesText prompt for image generation/editing.
timeout_msNoMax ms to wait for the generated image.
image_pathsNoOptional reference image file paths to upload before prompting (e.g. a logo).
output_pathYesAbsolute path to write the resulting PNG.

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly explains side effects: opens a fresh chat, optionally uploads reference images, submits the prompt, waits for completion, and writes a PNG to disk. It also discloses authentication requirements and a realistic performance caveat (~60-120s), giving the agent important operational 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 and front-loaded with the core purpose, followed by the workflow, prerequisites, return value, and performance warning. Every sentence adds useful information; there is no filler or 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 tool's moderate complexity, the absence of annotations, and the absence of an output schema, the description is remarkably complete. It covers behavior, prerequisites, return data (saved path and pixel dimensions), and a critical timeout consideration. An agent has enough context to invoke it 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 100%, so the schema already documents all four parameters. The description adds some color, such as reference images being used for inputs like a brand logo and output being a PNG at output_path, but it does not provide substantial meaning beyond what the input schema already states.

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 identifies the tool's purpose: generate or edit an image on chatgpt.com, save it to disk in one call. It uses specific verbs and resources, and describes the full pipeline. However, it does not explicitly distinguish itself from the sibling chatgpt_generate_batch, so an agent must infer which one to choose based on 'ONE call' wording.

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 context: requires an authenticated chatgpt.com session, instructs to import cookies first via cookie_import, and warns to set timeout_ms because generation is slow. It does not explicitly state when to use this tool versus chatgpt_generate_batch or other image-related tools, so it stops short of full when/when-not guidance.

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

checkC

Check checkbox or radio button.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYes

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 the full burden of behavioral disclosure. It only states the action and target; it does not explain behavior for already-checked elements, disabled elements, whether the action dispatches native events, or whether it forces checking a radio button.

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 and front-loaded, with no wasted words. It earns its place but is minimal to the point of omitting useful operational detail.

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?

The tool is simple, but the description leaves critical context undefined: what 'ref' accepts, whether it can be used on radio buttons and checkboxes both, and how it differs from 'uncheck'. Without annotations or an output schema, the description alone is not enough for reliable 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 sole required parameter 'ref' has 0% schema description coverage, and the description does not explain what 'ref' refers to. An agent cannot tell whether it is a selector, element ID, or snapshot reference from this definition alone.

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 ('Check') and the target resource ('checkbox or radio button'), so an agent can infer what the tool does. It is distinguishable from 'uncheck' by the opposite action, though it does not explicitly differentiate itself from generic 'click' or selection tools.

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?

Usage is implied by the verb: use this tool when you want to check a checkbox or radio button. However, there is no guidance about when to prefer this over 'click', 'click_role', or 'select_option', and no mention of prerequisites like element visibility or enabled state.

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

clickA

Click element by ref ID from browser_snapshot. Auto JS-fallback for overlays.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYesElement ref (e.g. 'e5')
buttonNoleft
dblclickNo

TDQS

A3.6/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 of behavioral disclosure. It does add a useful behavioral detail: 'Auto JS-fallback for overlays.' However, it does not mention side effects such as navigation, dialog handling, waiting behavior, or return values, which are relevant for a mutation-like action.

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 short, front-loaded sentences with no filler. The primary action and a key behavioral fallback are stated efficiently, making it easy for an agent to parse quickly.

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 click tool, the description covers the core input (ref from snapshot) and one behavioral detail, but it omits explanation of optional parameters, possible side effects, and return behavior. Without annotations or an output schema, this is adequate but not fully complete for robust tool selection and invocation.

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 only 33%, with only 'ref' documented in the schema. The description adds nothing about the 'button' or 'dblclick' parameters, which are left to their enum/default values and names. With low schema 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 verb ('Click'), the resource ('element by ref ID'), and the source ('from browser_snapshot'). This directly distinguishes it from siblings like click_text, click_role, and mouse_click_xy, which use different selection mechanisms.

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 the prerequisite of having a ref from a browser_snapshot, but it does not explicitly state when to prefer this tool over alternatives like click_text, click_role, or mouse_click_xy, nor does it provide any when-not-to-use guidance. The usage context is clear but the comparison to siblings is left to inference.

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

click_and_snapshotA

Click element by ref + wait + return snapshot. Perfect for buttons that trigger navigation/dialog.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYesElement ref from browser_snapshot
wait_msNoWait after click before snapshot

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 behavioral disclosure burden. It transparently describes the sequence: click, wait, then return a snapshot. It also signals the likely side effect that clicks may trigger navigation or dialogs. It does not detail failure behavior or edge cases, but the core behavior is clearly disclosed.

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 front-loads the operational behavior and then adds the target use case. There is no filler or redundant content.

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 tool with two parameters, full schema coverage, and no output schema, the description is sufficiently complete. It explains the operation, the return value ('snapshot'), and the intended scenario. Nothing essential is missing for an agent to decide when and how to call it.

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 100%, so the schema already documents both parameters. The description reinforces that 'ref' is used for clicking and 'wait' happens before snapshot, but it does not add significant new meaning beyond the schema's own parameter 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 states a specific compound action: 'Click element by ref + wait + return snapshot.' It clearly identifies the resource (element by ref), the action (click), and the follow-up behavior (wait and snapshot). It also distinguishes itself from sibling click tools by mentioning the snapshot return and the navigation/dialog 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 provides clear usage context: 'Perfect for buttons that trigger navigation/dialog.' This tells the agent when the tool is appropriate. However, it does not explicitly mention when not to use it or name alternatives like click_and_wait or browser_snapshot.

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 element then wait for navigation or selector. Atomic — fewer roundtrips than separate click + wait_for.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNo
selectorNo
timeout_msNo
wait_for_urlNoURL substring to wait for after click
wait_for_selectorNoSelector to wait for after click

TDQS

A3.7/5.0
Behavior3/5

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

The description discloses the key behavior: the tool clicks, then waits, and the operation is atomic. However, it leaves unspecified what happens when both wait_for_url and wait_for_selector are provided, what a timeout does, how navigation is detected, and what the response looks like on success or failure. With no annotations, this is only moderate 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?

Two short sentences with no filler. The action sequence is front-loaded and the atomicity benefit is stated in a tight second sentence, making the description 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?

For a five-parameter operation with no annotations and no output schema, this description is too thin. An agent cannot determine how to provide the click target, how the wait conditions interact, or what constitutes a successful call, so the tool is not fully callable from the description alone.

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 only 40%, with ref, selector, and timeout_ms undocumented. The description does not clarify how to specify the click target via ref versus selector, how timeout_ms behaves, or whether wait_for_url and wait_for_selector are mutually exclusive. It loosely maps 'navigation or selector' to parameters but fails to compensate 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 states a specific compound action: 'Click element then wait for navigation or selector.' This clearly distinguishes the tool from plain click, wait_for, and wait_for_navigation by naming its core sequence and the two wait targets.

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?

Atomic — fewer roundtrips than separate click + wait_for' explicitly positions the tool as the combined alternative to two separate calls. It gives enough context for an agent to prefer it when both actions are needed, though it does not enumerate when not to use it or compare with click_and_snapshot.

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 a corner of an element — close/X buttons, delete icons and dismiss controls usually live there, not in the centre.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNo
cornerNotop-right
offsetNoInset in pixels from the corner.
selectorNo

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the burden of explaining the action, and it does say this performs a click at an element corner rather than the centre. However, it does not disclose details such as how coordinates are computed, whether the element is scrolled into view, or what happens if the element cannot be 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 a single, front-loaded sentence with no wasted words. It conveys the action, the target location, and the typical use case efficiently.

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 there are no annotations, no output schema, low schema coverage, and many sibling click-related tools, this description is not complete enough. An agent still lacks guidance on required fields, whether `ref` or `selector` must be used, return behavior, and how this differs from tools like `click_element_offset` or `humanize_click`.

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 low, with only `offset` having a schema description. The tool description does not explain how to specify the target element via `ref` or `selector`, nor does it clarify the relationship between `corner`, `offset`, and the click position. It adds purpose-level context but fails to compensate for the undocumented 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?

The description states a specific action ('Click a corner of an element') and immediately clarifies the intended use case with close/X buttons, delete icons, and dismiss controls. It explicitly contrasts with centre clicks, which distinguishes it from the sibling `click` tool 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 Guidelines4/5

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

The description gives clear context about when this tool is appropriate: clicking corner-positioned controls like close buttons and dismiss icons. It does not explicitly name alternatives or state when not to use it, so it falls just short of full guidance.

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 at a percentage position inside an element instead of its centre — for wide labels whose real checkbox sits at the left edge, sliders, or split buttons.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNo
selectorNo
x_percentNo0 = left edge, 100 = right edge
y_percentNo0 = top edge, 100 = bottom edge

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 behavioral burden. It explains the coordinate model (percentage position inside an element) and contrasts with center-clicking. However, it does not disclose how the element is targeted (ref vs selector), whether scrolling or waiting occurs, or what happens for invalid percentages.

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 efficient sentence that front-loads the purpose and immediately gives relevant use cases. Every clause adds value with no redundant filler.

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?

The tool has four parameters with no required fields, no annotations, and no output schema, so the description must do more to make invocation unambiguous. It fails to explain the relationship and expected usage of ref versus selector, and does not cover edge behavior for coordinates. This makes correct selection and invocation less certain for an autonomous agent.

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 only 50%, and the description does not clarify the two undocumented parameters ref and selector. It adds conceptual meaning to x_percent and y_percent but relies on schema text for the boundary definitions. This leaves ambiguity about how to specify the target element.

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: clicking at a percentage position inside an element rather than its center. It also gives concrete examples (wide labels, sliders, split buttons) that convey the intended use case. However, it does not explicitly distinguish itself from related sibling tools like click_at_corner or mouse_click_xy.

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 usage context with real-world examples such as wide labels and sliders, which helps an agent know when this tool is appropriate. It lacks explicit exclusion guidance or named alternatives, but the context is sufficient for most cases.

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

click_roleA

Click element by ARIA role and name. Same ambiguity guard as click_text: several matches → candidate list, not a guess.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoAccessible name
roleYesARIA role (button, link, textbox, etc.)
indexNoWhich match to click when several match (0-based). -1 = require a unique match.
withinNoLimit the search: "@dialog", "ref:e5", or a CSS selector.

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It usefully discloses that multiple matches produce a candidate list rather than an arbitrary click. However, it does not describe behavior for unique matches, no matches, or what happens after a successful click, which are relevant for a mutating action.

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 tight sentences with no filler. The main action and targeting mechanism come first, and the ambiguity guard is explained concisely by referencing click_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?

The tool is relatively simple and the schema covers all parameters, but there are no annotations and no output schema. The description covers the key ambiguity behavior yet omits edge-case behavior and post-click expectations, leaving the definition only partially complete for an agent with no other 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 coverage is 100%, so the input schema already documents all four parameters. The description adds no extra meaning beyond confirming that role and name are the targeting criteria and that ambiguity is handled via the candidate-list 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 states a specific action ('Click element') with a clear targeting mechanism ('by ARIA role and name'). It also references the sibling click_text and signals how this tool differs, helping an agent select it over 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 implies when to use this tool: when the element is identified by ARIA role and accessible name. It references click_text for the ambiguity guard but does not explicitly say when to prefer click_role over click_text or other click variants, nor does it state exclusions.

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

click_textA

Click element by visible text. If the text matches several elements it FAILS with a numbered candidate list instead of silently clicking the first one — narrow with within ("@dialog", a CSS selector, or "ref:e5") or pick one with index.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesVisible text
exactNo
indexNoWhich match to click when several match (0-based). -1 = require a unique match.
withinNoLimit the search: "@dialog" = topmost modal, "ref:e5" = inside a snapshot ref, or any CSS selector.

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 the behavioral disclosure burden, and it does disclose the important non-obvious trait: ambiguous matches cause an explicit failure with a numbered candidate list rather than a silent first click. It also explains the narrowing options. It doesn't cover exact-match behavior or post-click waiting, but the core behavior is transparent.

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

Conciseness5/5

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

The description is a single dense sentence that front-loads the primary action, then adds the highest-value behavioral caveat and disambiguation instructions. Every clause earns its place; no repetition of schema fields.

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 click-by-text tool with no output schema, the description covers the essential operation, failure mode, and how to resolve ambiguity. The remaining gaps are minor: exact matching semantics and the success return value, neither of which is fatal to correct invocation.

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 75%, and the description adds useful practical examples for `within` and clarifies index semantics (0-based, -1 requires unique match). However, the `exact` parameter has no schema description and is never explained in the tool description, leaving a notable semantic gap about whether matching is exact or substring-based.

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 opening sentence "Click element by visible text" names the exact verb, resource, and locator strategy, setting it apart from siblings like click_role, click, and find_by_text. The rest of the description clarifies scope without muddying the core purpose.

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 context for using click_text (clicking by visible text) is implied by the first sentence, and the ambiguity-failure note gives practical guidance on narrowing or choosing among matches. However, it never explicitly says when to prefer this over click, click_role, or find_by_text, nor does it 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.

click_turnstileA

Auto-solve Cloudflare Interactive Turnstile checkbox. Locates the widget via in-page selectors AND the Playwright frame API (handles closed shadow roots that document.querySelector misses), polls for render, skips if already solved, then does a humanized real-mouse click with retries + small nudge, verifying the cf-turnstile-response token after each attempt. Managed Challenge full-page interstitials still need mcp-stealth-chrome.

ParametersJSON Schema
NameRequiredDescriptionDefault
offset_xNoPixels from widget left edge to the checkbox (calibrated for CF checkbox)
offset_yNoVertical offset from widget top (default = height/2)
max_attemptsNoMax click attempts (small vertical nudge between tries) until token appears
wait_render_msNoWait before first detection to let widget render

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 carries the full burden, and it is exceptionally detailed: it discloses shadow-root handling via the frame API, render polling, skip-if-solved behavior, humanized real-mouse clicking with retries and nudges, and per-attempt token verification. This gives an agent a realistic model of what the tool does.

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 core purpose, followed by mechanism and a final limitation note. Every sentence earns its place and the structure is easy to parse.

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 complex anti-bot interaction with no annotations or output schema, the description covers behavior, retries, verification, and limitations well. It is only slightly incomplete in not specifying the explicit return or failure behavior when max_attempts is exhausted or the widget is never found.

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 100%, so the schema already documents all 4 optional parameters. The description adds some conceptual color, such as polling for render and retrying with a nudge, but it does not add material detail beyond what the parameter descriptions already provide.

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 first sentence states a specific verb+resource: 'Auto-solve Cloudflare Interactive Turnstile checkbox.' The rest of the description explains the exact mechanism, and the Cloudflare Turnstile focus clearly differentiates it from generic sibling tools like click, click_text, 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 Guidelines5/5

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

Explicitly gives a usage boundary: 'Managed Challenge full-page interstitials still need mcp-stealth-chrome,' telling agents when this tool is not sufficient and naming the alternative. It also notes the tool skips if already solved, which helps an agent decide when to call it.

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

console_getB

Get captured console messages.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 carries the full burden of behavioral disclosure. It indicates a read-like operation but does not explain what the returned messages contain, whether capture must be active, or whether calling it clears or preserves the captured log.

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 filler. Every word earns its place, and there is nothing redundant or extraneous.

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?

The description is too thin to be fully actionable. It does not explain the relationship to console_start, the expected return format, or behavior in edge cases such as an empty capture buffer. An agent could call this tool without knowing whether it depends on prior state.

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 there is no parameter-level semantic burden on the description. The schema coverage is effectively 100%, and no additional parameter explanation is needed.

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 operation ('Get') and the resource ('captured console messages'), making the tool's purpose immediately understandable. It is distinguishable from sibling console_start by the get-vs-start verb, though it does not explicitly mention that sibling.

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 about when to call this tool versus related tools such as console_start. The description does not mention prerequisites like needing to start capture first, or what happens if no console messages have been captured.

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

console_startA

Start capturing console messages from all tabs.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 must carry full behavioral disclosure. It mentions the scope ('all tabs') but does not state side effects, whether capturing is idempotent, whether previous messages are cleared, or whether console_get is required to retrieve the captured messages. This leaves important behavioral 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 a single sentence that is immediately actionable and front-loaded with the verb. No filler or redundant wording.

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 zero-parameter start command, the core action is stated, but the description leaves uncertainty about the return value, how to stop capturing, and the need to pair with console_get. Given no output schema and no annotations, a little more context 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 tool has zero parameters, so the schema coverage is trivially 100% and there is nothing for the description to add about parameters. The 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 uses a specific verb and resource: 'Start capturing console messages from all tabs.' This clearly distinguishes the starting action from related tools like console_get, which likely retrieves captured messages, and network_start, which starts a different kind of capture.

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 given about when to invoke this tool versus alternatives, what prerequisites exist, or how it relates to console_get. The description simply states what it does without explaining the intended workflow 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.

describe_pageA

Compact LLM-friendly page summary (title, heading, key buttons, forms). Cheaper than browser_snapshot for agent context. Also returns intent — a classified hint of what kind of page this is (login_email, login_password, otp_input, captcha, stay_signed_in, protect_account, error_page, consent, two_factor, account_disabled, content, unknown) — so the agent can branch with one read.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/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 and does disclose the essential behavior: it returns a compact summary plus an enumerated `intent` classification. It does not explicitly state that the page is not modified, but the read-only nature is strongly implied by 'describe' and 'summary'.

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 and front-loaded with the core value proposition. The intent enum is useful and earns its place, and the comparative cost note is one short clause. No filler exists.

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 zero-parameter read-only utility, the description explains what the tool returns, the key fields covered, the intent taxonomy, and how it fits into agent workflows. There is no output schema, so this fills the needed gap without requiring further documentation.

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 and schema coverage is 100%, so there is nothing for the description to add about arguments. The baseline of 4 applies because parameter semantics are simply not a concern for this tool.

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 opens with a specific outcome: 'Compact LLM-friendly page summary (title, heading, key buttons, forms)' and then identifies a unique differentiator, the classified `intent` field. This clearly distinguishes the tool from browser_snapshot and other snapshot-like siblings.

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 positions the tool against browser_snapshot ('Cheaper than browser_snapshot for agent context') and explains when it is valuable ('agent can branch with one read'). It does not spell out exclusions or say when a full snapshot is necessary, so it falls just short of fully explicit when-not guidance.

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

detect_anti_botA

Heuristic detection of anti-bot vendor on current page (Cloudflare, DataDome, Akamai, PerimeterX, Imperva).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

The word 'heuristic' usefully signals non-deterministic, inference-based results, and the vendor list clarifies detection scope. However, with no annotations provided, the description carries the full transparency burden and does not disclose return semantics (vendor name vs. null), whether analysis is passive, or failure behavior.

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 15-word sentence with zero filler. The scoping phrase 'on current page' is front-loaded, and the vendor examples are packed efficiently into the trailing parenthetical.

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 invocation — an agent knows there are no arguments and what the tool checks. But with no output schema and no annotations, the missing return-value semantics leaves the agent unable to interpret the result or act on it confidently.

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 takes zero parameters and schema coverage is 100%, so there is nothing for the description to add about inputs. The baseline 4 for zero-parameter tools applies; no param documentation gap exists.

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 a specific action — 'detection of anti-bot vendor' — on a specific resource, 'current page', and names concrete target vendors (Cloudflare, DataDome, Akamai, PerimeterX, Imperva). This distinguishes it from siblings like detect_content_pattern and fingerprint_audit without needing to inspect their schemas.

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. It does not mention, for example, using it before choosing click_turnstile or to diagnose blocked navigation, nor does it name any sibling as a fallback or exclusion. An agent must infer the use case entirely.

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

detect_content_patternA

Auto-detect repeated content patterns (cards, listings, rows) and suggest CSS selectors. Run this BEFORE extract_structured to find the right selectors.

ParametersJSON Schema
NameRequiredDescriptionDefault
min_itemsNoMinimum repeated items to detect as pattern

TDQS

A3.9/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 carry the full behavioral burden. It only says 'Auto-detect' and 'suggest CSS selectors', which is essentially the tool's purpose. It does not disclose whether the operation is read-only, what the returned output format is, whether the page is modified, or how the detection works.

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 core purpose and followed by an explicit usage directive. There is zero wasted wording, and each 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?

The tool is simple with one optional parameter and no output schema, so the description need not be exhaustive. However, because there is no output schema and no annotations, the lack of any detail about the format or structure of the suggested selectors leaves an agent guessing about the return value.

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 100%, and the min_items parameter is already documented in the schema. The description does not mention min_items or add any extra meaning beyond the schema, so the baseline of 3 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 states a specific verb ('detect'), resource ('repeated content patterns'), and outcome ('suggest CSS selectors'), with concrete examples (cards, listings, rows). It also names the related tool extract_structured, which distinguishes it 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?

The instruction 'Run this BEFORE extract_structured to find the right selectors' provides an explicit temporal condition and names the alternative tool. An agent can decide when to invoke this tool without further inference.

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 dialog handler that stays armed across every dialog and every tab (dialog_handle is one-shot). Reads its action at fire time, so you can change it without re-arming. Set enabled=false to remove it.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNoaccept
enabledNo
prompt_textNoText to submit for prompt() dialogs.

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It covers persistence across tabs, one-shot versus persistent semantics, fire-time reading of the action, and removal behavior. This is unusually transparent for an install-style 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?

Three tight sentences with no wasted words. The most important distinguishing fact ('PERSISTENT') is front-loaded, and each sentence adds a distinct piece of information: persistence scope, dynamic action reads, and removal.

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 tool with three simple parameters and no output schema, the description plus input schema fully covers how to install, configure, and remove the handler. There are no significant gaps that would prevent an agent from using 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?

Schema description coverage is only 33%, but the description adds meaningful semantics for enabled ('set enabled=false to remove it') and action ('reads its action at fire time'). The prompt_text parameter is already documented in the schema, though the description does not explain its interaction with the action 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 opens with a specific verb ('Install') and resource ('PERSISTENT dialog handler'), then immediately distinguishes it from the one-shot sibling dialog_handle. The scope ('every dialog and every tab') makes its purpose unmistakable.

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 explicitly contrasts with dialog_handle ('dialog_handle is one-shot') and explains when this persistent variant is appropriate. It also states exactly how to remove the handler with enabled=false, giving clear lifecycle guidance.

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

dialog_handleA

Set handler for the next alert/confirm/prompt on ANY open tab (first dialog wins, handler then clears).

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNoaccept
prompt_textNo

TDQS

A3.9/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 behavioral burden and discloses three important traits: it applies across tabs, only the first dialog is handled, and the handler clears itself afterward. This is strong transparency, though it stops short of explaining side effects on the page or how a successful handling is reported.

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, front-loaded sentence packs the action, scope, and lifecycle behavior into the essential details with no filler. The parenthetical adds critical behavioral rules without bloating the description.

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?

The tool has no output schema or annotations, and with 0% parameter coverage the description should make the two parameters and their semantics clear, which it does not. It describes the handler lifecycle well but leaves prompt_text undefined and says nothing about return values or invocation results, so an agent cannot fully predict the call.

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 needed to explain action and prompt_text but does not mention either. The action enum and defaults are visible in the schema, but the meaning of prompt_text and when it applies (e.g., only when accepting a prompt) is left completely unspecified.

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 ('Set') and resource ('handler for the next alert/confirm/prompt') and adds global scope ('ANY open tab'), which clearly differentiates this one-shot manual handler concept from a generic auto-handler sibling. It tells an agent exactly what the tool does.

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 gives clear context: this is for the next dialog on any open tab, so an agent knows when to call it before an action that might trigger a dialog. It does not explicitly name alternatives like dialog_auto_handle or provide when-not-to-use guidance, but there are no misleading exclusions.

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 one element to another.

ParametersJSON Schema
NameRequiredDescriptionDefault
source_refYesRef of element to drag
target_refYesRef of drop target

TDQS

B3.1/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 the full burden of behavioral disclosure. It only says 'drag from one element to another' and does not reveal whether this simulates mouse events, dispatchs HTML5 drag/drop events, waits for animations, or has any 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.

Conciseness5/5

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

The description is a single short sentence with no filler words. The action is front-loaded and every word 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?

For a simple two-parameter tool with fully documented schema, this is a minimum viable description. It is missing behavioral depth and usage guidance, but an agent familiar with drag-and-drop semantics can infer the basic call. It does not explain when to choose this over siblings or what event behavior to expect.

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 input schema already documents both parameters with 100% coverage, so the descrioption does not need to compensate for missing schema information. It adds no extra meaning beyond the fact that the action moves between two elements, which is the baseline expected when schema is complete.

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 ('Drag') and the resources involved ('from one element to another'), which maps cleanly to source_ref and target_ref. It distinguishes the tool from sibling click/hover actions by the drag semantics, though it does not explicitly mention any sibling or edge case.

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 gives no guidance on when to use this tool versus alternatives such as hover, click, mouse_move, or mouse_click_xy. There are no prerequisites, exclusions, or timing considerations, so an agent gets no help choosing this over the many sibling input-simulation tools.

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

evaluateC

Execute JavaScript in page context.

ParametersJSON Schema
NameRequiredDescriptionDefault
expressionYesJS expression

TDQS

C2.9/5.0
Behavior2/5

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

Annotations are entirely absent, so the description carries the full burden of behavioral disclosure. It only states that JavaScript is executed, with no mention of return values, promise handling, side effects, navigation risks, or error behavior—critical gaps for an evaluation tool.

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, front-loaded sentence with no filler or repetition. It is concise, though the brevity does sacrifice some behavioral detail, which is better judged under 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?

Even though the tool has only one parameter, there is no output schema and no annotations, so the description must explain what the expression returns and warn about execution side effects. It provides neither, leaving an agent under-informed about the actual result and risks of invoking 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?

Schema coverage is 100%, and the only parameter 'expression' already has a 'JS expression' description. The tool description adds no new parameter-level meaning beyond what the schema already provides, so the baseline score of 3 is appropriate.

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 action ('Execute JavaScript') and a clear resource/scope ('in page context'). This makes the tool's core function evident and subtly distinguishes it from sibling 'frame_evaluate', though it does not explicitly name or contrast with that alternative.

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 given about when to prefer this tool over alternatives. The phrase 'in page context' hints at main-frame usage, but there is no explicit mention of when not to use it or when to use frame_evaluate or other scripting-related tools.

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

export_curlA

Rebuild a captured request as a runnable curl command, so you can replay or share an API call without re-deriving its headers. Needs network_start(capture_bodies=true) — headers are not recorded otherwise.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoOr pick by the id shown in network_get.
redactNoReplace Cookie/Authorization values with placeholders.
url_containsNoPick the most recent captured request whose URL contains this.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden and does disclose a real behavioral dependency: headers are only available if network_start(capture_bodies=true) was used. It also implies a non-mutating export action, though it leaves the exact return format and whether the command is executed implicit.

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 core action, and no filler. The prerequisite/clarification earns its place by preventing a common call failure.

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 3-optional-parameter, no-output-schema tool, the description explains the purpose and the one essential precondition. It could be more explicit about what the tool returns, but 'as a runnable curl command' plus full schema param docs makes correct instruction reasonably achievable.

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 100%, so baseline 3 applies. The description adds no parameter-level meaning beyond what the schema already provides for id, redact, and url_contains.

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+resource pair: 'Rebuild a captured request as a runnable curl command'. Its stated goal of replaying or sharing an API call 'without re-deriving its headers' makes the function distinct from siblings like network_get, export_har, and http_request even without naming them.

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 gives a clear precondition and explicit when-to-use: 'Needs network_start(capture_bodies=true)' and replay/share scenario. However, it does not name any alternative tools or state when not to use it, so it stops short of full routing guidance.

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

export_harA

Export captured network traffic as a HAR 1.2 file (openable in DevTools/other HAR viewers). Requires network_start first; headers and bodies are only included when network_start(capture_bodies=true) was used.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNo
limitNoMax (most recent) requests to include.

TDQS

A3.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 behavioral disclosure burden. It discloses the dependency on network_start and the conditional inclusion of headers and bodies based on capture_bodies. This is meaningful context, though it does not describe what happens if network_start was not called or the exact output behavior.

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 compact sentence that front-loads the core purpose and immediately follows with the essential prerequisite and data-completeness caveat. Every clause adds value, 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?

The description covers the core workflow requirement and output format, which is good for a fairly simple tool. However, the path parameter is undocumented and the return value/file destination is not explained, which matters because path is optional with an empty default. This leaves an important gap for correct invocation.

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 adds no parameter-level semantics. The limit parameter is documented in the schema, but the path parameter has no description in either the schema or the tool description, leaving the meaning of the default empty path ambiguous. With only 50% schema coverage, the description needed to compensate but did not.

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: exporting captured network traffic as a HAR 1.2 file, with the output being openable in DevTools and other HAR viewers. This is a specific verb plus resource, and the HAR format differentiates it from sibling tools like export_curl, though it does not explicitly name alternative 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?

The description gives an explicit prerequisite: network_start must be called first. It also clarifies when bodies/headers will be present, tying usage to a specific capture configuration. It does not explicitly state when not to use this tool or mention alternatives, so it stops short of a 5.

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

extract_structuredA

Extract structured data from repeated elements (cards, rows, listings). Auto-deduplicates, filters empty items, extracts direct text only. Use detect_content_pattern first to find correct selectors.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax items to extract
fieldsYesFields to extract from each item
deduplicate_byNoField name to deduplicate by (empty = auto)
direct_text_onlyNoExtract only direct text of matched element, not children text (prevents field mixing)
container_selectorYesCSS selector for each repeated item. Use detect_content_pattern to find this.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations present, the description carries the behavioral burden, and it delivers: it discloses auto-deduplication, empty-item filtering, and direct-text-only extraction. These are meaningful behaviors beyond what the input schema alone implies, though it could still clarify what happens on zero matches or how the output is shaped.

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 with no filler: the core action is front-loaded, key behaviors are listed compactly, and the prerequisite tool usage is placed at the end. Every clause 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?

The rich schema covers all parameters, and the description adds the critical prerequisite (detect_content_pattern) plus key data-shaping behaviors. It does not explicitly describe the return format or no-match behavior, and there is no output schema, so it stops just short of 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?

Schema description coverage is 100%, so the schema already documents all five parameters and their defaults. The description reinforces direct-text and deduplication behavior but does not add new parameter-level meaning beyond what the schema 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 states a specific verb ('Extract'), a clear resource ('structured data from repeated elements'), and gives concrete examples ('cards, rows, listings'). This makes it easy to distinguish from generic scraping tools like scrape_page or extract_table without needing to inspect schemas.

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 agent to run detect_content_pattern first to find the correct selectors, which is actionable guidance. It does not enumerate when to avoid this tool in favor of extract_table or scrape_page, but the scope ('repeated elements') provides enough context for most selection decisions.

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

extract_tableC

Extract data from an HTML table as JSON array.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows
selectorNoCSS selector for the tabletable

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the output format and gives no information about table selection behavior, how multiple tables are handled, how limit affects rows, whether headers are included, or what happens when no table matches.

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 that clearly front-loads the main purpose. It contains no wasted words, though it is so brief that it misses opportunities to convey important usage and behavior details.

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 output schema and no annotations, the description leaves out important operational details such as how limit interacts with row extraction, whether it targets the first matching table, what the JSON array entries look like, and what error or empty behavior occurs when no table is found. More context is needed for reliable invocation.

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 already documents both parameters with descriptions and defaults: limit is 'Max rows' and selector is 'CSS selector for the table'. The description adds little beyond restating the HTML table context, so it meets the baseline for high schema coverage without adding significant semantic 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 states a specific action ('Extract data'), a specific resource ('HTML table'), and a clear output format ('JSON array'). It is distinguishable from broader siblings like get_text or get_html by focusing on structured table extraction, though it does not explicitly name any sibling alternatives.

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 gives no guidance on when to use this tool versus alternatives such as query_selector_all, get_text, or extract_structured. It also does not clarify whether it operates on the current page, a URL, or a provided HTML source, leaving usage context ambiguous.

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

fillA

Fill input/textarea by ref ID. Always replaces existing content (email/number inputs are cleared explicitly first — Firefox's select-all is a no-op on those, which would otherwise append).

ParametersJSON Schema
NameRequiredDescriptionDefault
refYesElement ref
valueYesText to fill

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden and does well by disclosing the replace-always behavior and the Firefox-specific select-all workaround. It is a non-obvious behavioral detail that agents need to avoid surprising append behavior.

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 tight sentences front-load the main purpose and then add a valuable edge-case detail. Every clause earns its place; there is no filler 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 two-parameter mutation with no annotations or output schema, the description covers the critical behavior (replacement and the Firefox nuance). It leaves minor unknowns such as return value or event dispatch, but these are not essential for a straightforward fill 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?

Schema coverage is 100%, so a baseline of 3 applies. The description adds useful semantic context: ref is a ref ID targeting input/textarea elements, and value is used as replacement text, which goes beyond the schema's bare 'Element ref' and 'Text to fill'.

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 ('Fill') with a resource ('input/textarea') and a targeting method ('by ref ID'), making the core action clear. It does not explicitly differentiate from related siblings like type_text or smart_fill, so it falls short of a 5.

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?

It conveys an important usage trait: the tool always replaces existing content rather than appending. However, it provides no explicit guidance on when to choose this tool over siblings such as type_text, smart_fill, or fill_form.

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

fill_formC

Fill multiple form fields and optionally submit.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsYes
submit_refNoRef of submit button to click after filling

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that submission is optional, but does not explain that field refs come from a snapshot, what happens after submit (e.g., navigation or waiting), or whether filling triggers 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, front-loaded sentence with no filler. Every word contributes to the core operation, which is appropriate for a relatively simple tool.

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?

The description is too thin for a mutation tool with no annotations and no output schema. It omits necessary context such as obtaining refs from a snapshot, whether submission may cause navigation, and how this compares with other form-related tools.

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 modest context by saying 'multiple form fields' and 'optionally submit', which maps to the 'fields' and 'submit_ref' parameters. However, the schema already documents 'ref', 'value', and 'submit_ref', and the description does not meaningfully deepen the understanding of either parameter.

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 and resource: filling form fields, with an optional submit action. It is clear, but it does not explicitly differentiate itself from siblings such as 'fill', 'smart_fill', or 'form_introspect', relying on the word 'multiple' to imply scope.

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 given about when to prefer this tool over alternatives like 'fill', 'smart_fill', or 'type_text'. The description only implies use for multiple fields, with no exclusions, prerequisites, or alternative-selection criteria.

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

find_by_labelA

Find input element by its label text (). Returns ref + how many matched.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelYesLabel text (e.g. 'Email', 'Password')
withinNoLimit the search: "@dialog", "ref:e5", or a CSS selector.

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 the disclosure burden. It does disclose that the operation returns both a ref and a match count, which is useful behavioral information. However, it omits what happens on zero matches (e.g., null ref vs. empty result) and gives no details on matching semantics (exact vs. partial, case sensitivity).

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 front-loads the action and target, then states the return. Every element is informative with no redundancy or filler.

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 output schema, the description adequately states the return value ('ref + how many matched'). The schema covers both parameters. The main gaps are the lack of usage guidance and zero-match behavior, but for a simple find tool with one required parameter, the information is largely sufficient.

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 100%, so the schema already documents both 'label' and 'within' with examples and allowed patterns. The description adds only a parenthetical mention of '<label>' to clarify the label type, which is a minor addition beyond the schema. No further parameter guidance 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 a specific verb ('Find') and a clear resource ('input element') with an explicit matching mechanism ('by its label text (<label>)'). It also states the return value ('ref + how many matched'), which distinguishes it as a lookup rather than a mutation. While it doesn't name sibling tools, the label-text criterion is specific enough to distinguish from find_by_text and find_by_placeholder.

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 a use case (locating an input by its label) but provides no explicit guidance on when to choose this tool over alternatives like find_by_placeholder or find_by_text. No exclusions, prerequisites, or alternative recommendations are given, leaving the agent to infer routing from the name and label reference.

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

find_by_placeholderB

Find input by placeholder text. Returns ref + how many matched.

ParametersJSON Schema
NameRequiredDescriptionDefault
withinNoLimit the search: "@dialog", "ref:e5", or a CSS selector.
placeholderYes

TDQS

B3.1/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 of behavioral disclosure. It states that it returns a ref and match count, but does not clarify whether the operation is read-only, how matching works (exact, partial, case-sensitive), or what happens when no matches or multiple matches are 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 a single streamlined sentence that front-loads the purpose and then specifies the return value. There is no filler, repetition, or unnecessary detail.

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 two-parameter lookup tool, the description covers the core function and return shape adequately, and the schema handles the within parameter. However, with no output schema and no annotation coverage, missing details such as no-match behavior and matching semantics leave minor but real gaps.

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 50%, with placeholder lacking a schema description and within having one. The description partially compensates for placeholder by identifying it as the search text, but adds no detail about matching behavior or formatting. The within parameter is already covered by the 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 a specific action ('Find input by placeholder text') and resource, and briefly mentions the return value. It does not explicitly distinguish itself from sibling tools like find_by_text or find_by_label, but the placeholder-specific focus makes the purpose reasonably 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?

There is no guidance on when to use this tool versus alternatives such as find_by_text or find_by_label. The description implies it is for locating inputs via placeholder text, but it provides no exclusions, prerequisites, or alternative routing.

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

find_by_textA

Find elements by visible text — returns EVERY match (total + a ref and ancestor path per candidate), so you can tell whether the one you want is really the one you'd click. Skip browser_snapshot when you know the text.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesVisible text to search for
exactNo
limitNoMax candidates to describe.
withinNoLimit the search: "@dialog", "ref:e5", or a CSS selector.

TDQS

A4.1/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 behavioral disclosure burden. It reveals that the tool returns every match, a total count, and per-candidate refs/ancestor paths. It could clarify the relationship between 'every match' and the schema's limit parameter, but it does communicate the core behavior.

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 tightly worded sentences with no filler. The main behavior is front-loaded, the return-value detail earns its place, and the usage guidance is appended efficiently.

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 compensates for the missing output schema by outlining the return shape, and the schema covers parameter details. However, the claim of returning 'EVERY match' conflicts with the limit parameter's 'Max candidates to describe,' leaving ambiguity about how many candidates are actually detailed.

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 little meaning for exact, limit, or within beyond what the input schema already provides. With 75% schema description coverage, the schema does most of the parameter-documentation work; the description mainly reinforces the text 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?

States a specific operation, 'Find elements by visible text,' and names the resource. The mention of returning total matches plus refs and ancestor paths clearly distinguishes it from generic get_text or browser_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?

'Skip browser_snapshot when you know the text' is an explicit routing rule to a sibling tool. It also implies the intended use case: verifying which matched element you would actually click. It does not enumerate other alternatives, but the guidance is clear.

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

fingerprint_auditA

Report the fingerprint a site actually sees from this browser, and flag internal contradictions — the mismatches that get an automated browser detected are far more revealing than any single value. Read-only: it inspects, it does not change anything.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/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 behavioral burden, and it does so explicitly: 'Read-only: it inspects, it does not change anything.' It also discloses the inspection scope (site-observed rather than local) and that it actively flags contradictions, going beyond a minimal side-effect statement.

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 filler: the core behavior leads, the detection rationale follows, and the read-only guarantee closes. Every clause 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?

For a parameterless read-only tool this is largely complete: an agent knows what to invoke and what to expect conceptually. However, there is no output schema and the description does not characterize the shape of the reported fingerprint or the flagged contradictions, leaving some interpretation to the agent.

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 is empty, so there are no parameter meanings to clarify; baseline 4 applies. The description still adds context by clarifying the implicit subject ('this browser' and 'a site') even though there are no 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?

The first sentence names a specific action ('Report') and a precise resource ('the fingerprint a site actually sees from this browser'), then adds a distinguishing behavior ('flag internal contradictions') that separates it from generic fingerprint or anti-bot tools. This is not a tautology and gives an agent a concrete target.

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 gives clear context for when this tool is valuable: when the exposure is not a single fingerprint value but the inconsistencies across values that trigger bot detection. It does not name alternative tools or state when not to use it, so it stops short of a 5.

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

form_introspectA

Analyse a form in one call: per field the label, type, current value, required/pattern/length constraints, validation state, and the JS framework it is bound to. Tells you what to fill and why a submit is being rejected without guessing from a snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
form_selectorNoCSS selector for the form. Empty = first form, or all top-level fields if the page has none.

TDQS

A4.3/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 behavioral burden. 'Analyse a form' and the list of read-only attributes (current value, validation state) make the non-destructive intent clear, and 'Tells you what to fill' explicitly stops short of filling. It does not explicitly state 'read-only' or document failure modes, but the behavioral profile is well conveyed.

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 first names the operation and all key output dimensions, the second gives the practical value. Every clause earns its place, and the structure is front-loaded with the core behavior.

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 single-parameter, no-output-schema tool, the description is complete: it specifies what the tool analyzes, what per-field results are returned, and when an agent should reach for it. The input schema handles the empty-selector edge case, so there are no significant gaps for correct selection and invocation.

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 input schema fully documents the single form_selector parameter, including its default value and the empty-selector behavior. The description adds no additional parameter-specific syntax or constraints, so it does not need to compensate; baseline 3 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 names the exact resource ('a form') and a specific inspection verb ('Analyse'), then enumerates the per-field data returned: label, type, current value, constraints, validation state, and framework. This clearly frames the tool as read-only form analysis, distinguishing it from snapshot tools and fill 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?

The description gives two concrete use triggers: knowing what to fill and diagnosing why a submit is rejected. It also implies a when-not by contrasting with snapshot-based guessing. It does not explicitly name fill_form or smart_fill as the alternatives for actually filling, so it falls just short of fully explicit routing.

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

frame_evaluateB

Execute JavaScript inside a specific frame/iframe.

ParametersJSON Schema
NameRequiredDescriptionDefault
expressionYes
frame_nameNoFrame name (empty = by index)
frame_indexNoFrame index from list_frames

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 carries the full behavioral disclosure burden. It only states the core action and does not disclose return values, side effects of executing arbitrary JavaScript, error behavior, or how frame selection resolves when frame_name is empty. This 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 a single sentence with no filler and is appropriately front-loaded. It communicates the core purpose immediately without redundant phrasing.

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?

The tool has no annotations and no output schema, so the description needs to compensate by explaining return behavior and side effects. It does not specify whether the result of the JavaScript expression is returned, how frame selection works beyond schema defaults, or any execution caveats.

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 67%, with frame_name and frame_index documented in the schema, but the required expression parameter has no schema description. The description adds that the operation targets a frame but does not explain what the expression should return or how it is evaluated.

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 clear verb and resource: 'Execute JavaScript' inside a 'specific frame/iframe.' This distinguishes it from the generic sibling 'evaluate' by narrowing scope to frames, though it does not explicitly name the alternative.

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 when a JavaScript expression must run in a frame rather than the main page, but it does not explicitly state when to use this tool versus 'evaluate' or how to decide between frame_name and frame_index. Usage context is present but not fully articulated.

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

get_attributeB

Get a specific attribute value from an element.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYes
attributeYes

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 of behavioral disclosure. It only says 'get a specific attribute value,' with no information about behavior when the attribute is missing, whether the element must exist, whether any waiting occurs, or what the return value looks like.

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 filler and the key action is front-loaded. Every word contributes to stating the tool's purpose.

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 two required string parameters, no annotations, no output schema, and a 0% schema description coverage, this description is too thin. An agent cannot confidently construct a valid call without knowing how to define ref or what to expect back for missing attributes.

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 implicitly maps 'attribute' to an attribute name and 'ref' to an element, but it does not explain what form ref takes, what attribute names are expected, or any constraints on the values. This adds only minimal meaning beyond the bare 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 names a specific verb and resource: retrieve a specific attribute value from an element. The phrase 'attribute value' clearly distinguishes this from sibling getters like get_text, get_html, and get_url, so an agent can tell what it does.

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 given about when to use this tool versus alternatives such as get_text, get_html, inspect_element, or evaluate. The description states what it does but not when it is the right choice or when it is not.

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

get_htmlC

Get HTML content from page or element.

ParametersJSON Schema
NameRequiredDescriptionDefault
outerNo
selectorNobody

TDQS

C2.6/5.0
Behavior2/5

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

There are no annotations, so the description carries the behavior disclosure burden. It communicates a read operation but does not describe what kind of HTML is returned, whether the selector targets the first or all matching elements, or what the 'outer' behavior affects. An agent lacks key behavioral context beyond the tool name.

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 with no redundant wording or filler. It is front-loaded and easily parsed, though its brevity comes at the cost of detail covered by other dimensions.

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?

No output schema, no annotations, and 0% schema description coverage mean the tool requires a richer description. An agent cannot confidently determine what 'outer=false' returns, whether the default selector 'body' returns only the body element's HTML, or how this compares to related extraction 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 description coverage is 0%, and the description does not explain either parameter. 'outer' is particularly ambiguous without explanation, and the description adds no meaning to 'selector' beyond the property name.

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 clear action and resource: getting HTML content from either the page or a selected element. It is specific enough to understand the tool's basic function, though it does not distinguish it from similarly named siblings such as get_text or get_attribute.

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 about when to use this tool instead of alternatives like browser_snapshot, get_text, inspect_element, or scrape_markdown. The description gives no context, prerequisites, or exclusions.

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

get_page_errorsA

Get uncaught JavaScript errors + unhandled promise rejections from the current page. Captured by a hook installed at browser_launch, so the buffer resets on every navigation (read it before navigating away). Max 100 entries per page load.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full disclosure burden and meets it: it reveals the capture mechanism ('hook installed at browser_launch'), the lifecycle behavior (buffer resets on every navigation), and the capacity limit (max 100 entries per page load). These are non-obvious behaviors an agent cannot infer from the name or 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?

Three sentences, each earning its place: what is returned, how and when it is captured with the reset caveat, and the entry cap. The main purpose is front-loaded with zero filler.

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 zero-parameter, no-output-schema diagnostic tool, this is complete. It states the payload, the capture mechanism, the reset pitfall, and the size limit—everything an agent needs to call it correctly and interpret results. No critical information is missing.

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 rubric baseline is 4. The description adds value by describing what the returned payload contains (uncaught errors, unhandled promise rejections, up to 100 entries), which helps an agent interpret results even in the absence of an output 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 states a specific verb and resource: 'Get uncaught JavaScript errors + unhandled promise rejections from the current page.' The content is precisely scoped ('current page') and the payload specificity (uncaught errors vs. console logs) distinguishes it from the closest sibling, console_get, even without naming it.

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?

Clear temporal guidance is given: 'buffer resets on every navigation (read it before navigating away),' which tells the agent exactly when to call the tool relative to navigation events. It stops short of a 5 because it does not explicitly name alternatives or 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.

get_textC

Get visible text from page or element.

ParametersJSON Schema
NameRequiredDescriptionDefault
selectorNobody

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description must carry the behavioral disclosure burden, but it only describes the core operation. It does not explain whether hidden text is excluded, what happens when no element matches, whether it waits for content, or what the return value looks like.

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 filler. The core action and object are front-loaded, making it immediately scannable.

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 no output schema, the description is too thin to be fully actionable. An agent still needs to infer the return format, selector semantics, and behavior on missing elements. The simple interface reduces the burden slightly, but important operational details remain absent.

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 schema has 0% description coverage for the 'selector' parameter, and the description only vaguely connects it to 'element'. It does not explain that the selector is likely a CSS selector, whether it targets the first match or all matches, or how the default 'body' maps to the whole page.

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 clear action and resource: retrieving visible text from either the whole page or a selected element. The phrase 'visible text' helps distinguish it from sibling tools like get_html and get_attribute, though it does not explicitly name those alternatives.

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 about when to prefer this tool over related tools such as get_html, evaluate, find_by_text, or scrape_page. The usage context is only implied by the action name and description.

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

get_urlA

Get current URL and title.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/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 burden of explaining behavior, and it does state that the tool returns the current URL and title, clearly implying a read-only operation. However, it gives no details on output format, error conditions (e.g., no page loaded), or whether it operates on the active tab versus the whole browser context. This is adequate but lacks richer 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 extremely concise—six words—and fully front-loaded. Every word contributes meaning, and there is no redundant phrasing or unnecessary filler.

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 parameterless getter tool with no output schema, the description provides enough information for an agent to understand what it does: it fetches the current URL and title. It does not explain return formatting or edge cases, but given the tool's simplicity, these are minor gaps rather than critical omissions.

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 description does not need to clarify parameter meanings. The baseline of 4 is appropriate because there is no parameter documentation gap to compensate for.

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 specifies the action ('Get') and the resource ('current URL and title'), making the primary function unambiguous. However, it does not explicitly distinguish itself from sibling tools like get_text, get_html, or get_viewport_size, relying on the resource name to imply the 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 about when to use this tool versus alternatives such as wait_for_url, navigate, or get_text. The description implies usage for retrieving the active page's location and title, but there are no explicit context cues, exclusions, or comparisons to siblings.

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

get_viewport_sizeA

Get current viewport dimensions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/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 of explaining behavior. It correctly implies a read-only operation ('get') with no side effects and highlights that the value is 'current,' but it does not describe the return shape, units, or possible variations. This is a moderate gap, though the simple getter nature reduces the risk.

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 five words long, contains no filler or redundant phrasing, and places the core action and resource right at the front. Every word earns its place for the information being conveyed.

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 low complexity and zero parameters, the description is mostly sufficient for selecting and invoking the tool. However, there is no output schema and the description does not specify the exact return format (e.g., an object with width/height, a string, or pixel units), which leaves some ambiguity about how to interpret the result.

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 and 100% schema coverage, so the baseline is 4. The description's 'current' reinforces that no input is needed because the tool reads live state, adding a small amount of meaning beyond the empty 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 states a specific verb ('Get') and a specific resource ('current viewport dimensions'), making the tool's function immediately clear. It also distinguishes itself from the sibling set_viewport_size through the get/set pairing, so an agent can tell them apart without inspecting schemas.

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 say when to use this tool versus alternatives, but the purpose is straightforward enough that an agent can infer 'use this when you need the current viewport dimensions.' There is no stated exclusion or comparison with other inspection tools like evaluate or browser_snapshot, so the guidance is only implied.

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

go_backB

Navigate back in history.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure, and it is very thin. It does not state that this performs a single-step browser back, whether it waits for navigation to complete, what happens if there is no history, or whether any page state is returned.

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 filler. It is immediately readable and the core purpose is 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?

For a zero-parameter tool this is nearly sufficient, but it lacks important behavioral context: whether it mimics the browser back button exactly, what it returns, and how it differs from back_and_snapshot. Because there is no output schema or annotation support, the description should have added a bit more detail.

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 schema coverage is 100%, so there is nothing for the description to add about parameters. The baseline of 4 applies because the schema fully documents the empty parameter set.

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: 'Navigate back in history,' which distinguishes it from go_forward. However, it does not explicitly differentiate it from other navigation-related siblings like navigate or back_and_snapshot, and it leaves 'history' somewhat vague.

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 intended use is implied: call this when you want to return to a previous page in the browser session history. There is no explicit when-not-to-use guidance or comparison with alternatives like go_forward, navigate, or back_and_snapshot.

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

go_forwardB

Navigate forward in history.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

There are no annotations, so the description carries full responsibility for behavioral disclosure. It states the basic behavior but says nothing about side effects, whether it waits for page load, what happens if there is no forward history, or error behavior. This is 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 one short sentence with no filler and the core action is front-loaded. However, it is under-specified relative to the number of sibling navigation tools, making it concise but not optimally informative.

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 zero-parameter tool, this is adequate at a surface level, but it lacks behavioral and usage context. It doesn't mention prerequisites like an existing forward history entry, nor does it help the agent choose among go_back, go_forward, and navigate.

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 and the schema is empty, so there is no parameter documentation burden. The description does not need to add parameter detail; the baseline for a zero-parameter tool is appropriate.

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 clear action ('navigate') and a specific resource/scope ('forward in history'). It distinguishes from go_back by the word 'forward', but it doesn't explicitly explain what 'history' means in the browser context or contrast it with siblings 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 Guidelines2/5

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

No guidance is given about when to use this tool versus alternatives such as go_back, navigate, or reload. The only hint is the word 'forward', which implies post-go_back usage, but this is not made explicit. An agent would have to infer the appropriate context.

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

hoverB

Hover over element by ref ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYes

TDQS

B3.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 full transparency burden. It clearly says the action is a hover over an element, but it does not disclose side effects like triggering mouseover events, failure behavior, or whether the pointer remains there. This is adequate but minimal for a low-risk action.

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 that names the action, the target, and the parameter role. Every word earns its place and there is no filler.

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?

Even though the tool is simple with one required parameter, the description leaves important gaps: how to get a ref ID, whether the element must be in view, and what the outcome or return value is. With no annotations and no output schema, the description should provide more context for reliable invocation.

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%, and the description's phrase 'by ref ID' is the only explanation for the required ref parameter; it clarifies that ref is an element reference identifier. However, it does not explain where to obtain the ref or what format is expected, so compensation is only partial.

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 action, 'hover over element by ref ID', which gives a clear verb and target resource. It is distinguishable from siblings such as mouse_move, but it does not explicitly call out the distinction, so it falls short of a 5.

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 gives no guidance on when to prefer hover over alternatives like click, click_text, or mouse_move, and it does not state prerequisites such as whether the element must be visible. Usage context must be inferred entirely from the one-line description.

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 WITHOUT a browser, using a real Firefox TLS/HTTP2 fingerprint (impit). By default it reuses the live browser's cookies for that URL, so you can log in with the browser and then hit the site's API cheaply. Far faster and lighter than navigating — use it for APIs, JSON, and any page that doesn't need JS.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
bodyNoRaw request body (JSON string, form-encoded, …)
proxyNoProxy URL, e.g. http://user:pass@host:port
methodNoGET
max_charsNoMax response body characters returned.
timeout_msNo
impersonateNoTLS fingerprint to present. firefox matches the Camoufox browser.firefox
headers_jsonNoExtra headers as JSON, e.g. {"Accept":"application/json"}
use_browser_cookiesNo

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 burden of behavioral disclosure, and it does substantial work: it explains that the request runs outside a browser, uses a real Firefox TLS/HTTP2 fingerprint, reuses the live browser's cookies by default, and avoids JavaScript execution. These are meaningful execution-model traits beyond what the schema encodes. It leaves some behaviors implicit, such as redirect handling and remote side effects of non-GET methods, but the core behavioral profile is well disclosed.

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, each carrying distinct weight: identity, cookie behavior, and use case. It front-loads the most important distinction ('WITHOUT a browser') and keeps the explanation tight. No filler or redundant restatement of parameter names. The description is model-efficient and well structured.

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 selection criteria well but, given there is no output schema and no annotations, it omits important call-completion details: what the response shape is, whether status/headers are returned, redirect behavior, and whether a live browser session must already exist for cookie reuse. The tool has 9 parameters and no structured return contract, so the description is adequate but not fully complete for an agent invoking it correctly end-to-end.

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 56%, so the schema already documents several parameters. The description adds relevant semantic context for use_browser_cookies by explaining cookie reuse, and it hints at the intended body/URL usage ('APIs, JSON'). However, it does not meaningfully explain method, timeout, url, or how parameters interact (e.g., when body is needed with a method). It adds some value beyond the schema but does not fully compensate for the undocumented 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?

The description opens with a concrete, distinguishing statement: 'HTTP request WITHOUT a browser' and adds a specific fingerprint detail ('real Firefox TLS/HTTP2 fingerprint'). It then names the intended resource class: 'APIs, JSON, and any page that doesn't need JS.' This makes the tool's purpose unmistakable and clearly separates it from browser-navigation siblings like navigate or smart_fetch.

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 when-to-use guidance: 'use it for APIs, JSON, and any page that doesn't need JS' and contrasts it with navigating, saying it is 'far faster and lighter than navigating.' It doesn't explicitly name alternative tools or state when not to use it, so it stops short of a full routing guide, but the context is strong enough for an agent to choose correctly in most cases.

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

http_session_cookiesA

Show which browser cookies would be sent with an HTTP request to this URL. Use it to confirm session sharing before relying on http_request.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

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 the behavioral burden. It makes the read-only, hypothetical nature explicit ('Show... would be sent') and implies URL-scoped cookie matching. It does not describe output format or edge cases, but the safety profile is clear.

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 behavior and followed by the practical usage guidance. 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?

This is a simple one-parameter, read-only inspection tool with no output schema or nested objects. The description covers what it does, when to use it, and what URL input is expected, which is sufficient for correct invocation.

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 for the undocumented `url` parameter. It only restates 'this URL' without adding format, scheme, or matching rules. The description adds little beyond the property name itself.

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 ('Show') and resource ('browser cookies') and defines the exact scope: cookies that would be sent with an HTTP request to a given URL. This clearly distinguishes it from generic cookie-listing tools and from http_request itself.

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 states an explicit before/after decision rule: use it to confirm session sharing before relying on http_request. This gives the agent a concrete trigger and names the relevant sibling tool in context.

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

humanize_clickA

Click element with humanized mouse approach (3-step Bezier-like curve before click). Use for anti-bot pages.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNoElement ref from snapshot
selectorNoCSS selector

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden, and it does disclose the distinctive trait: a 3-step Bezier-like curve before the click. It also signals the humanized nature, which implies movement or delay that standard clicks lack. It does not detail side effects, but for a click tool that is largely inherent.

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 filler; the key behavior and use case are front-loaded. Every phrase contributes, making it easy to scan.

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 small two-parameter click tool, the description covers what it does, how it behaves, and when to use it. It omits return-value details, but no output schema exists and the result of a click is generally understood. The only notable gap is not clarifying parameter precedence, but that does not undermine the overall 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 description coverage is 100%, so the baseline is 3; the description adds no parameter-specific detail. It does not clarify whether ref and selector are alternatives or whether one is required, but the schema already documents each field. This is adequate but leaves the required-args ambiguity unresolved.

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 and resource ('Click element') and specifies the distinguishing behavior: a humanized mouse approach with a 3-step Bezier-like curve. It also names the intended use case (anti-bot pages), which separates it from generic click tools. This makes 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 Guidelines4/5

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

The description explicitly says 'Use for anti-bot pages,' which tells the agent when this tool is appropriate. It does not name alternatives or state exclusions, but the targeted context is clear enough to route away from standard click tools.

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

humanize_typeB

Type text with Gaussian-distributed delays between keystrokes (mean ~80ms, sigma ~30ms). Mimics human typing rhythm.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNo
textYesText to type
selectorNo
mean_delay_msNo

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral disclosure burden. It transparently describes the delay distribution and the human-rhythm intent, which is the core behavior. But it does not clarify how the tool selects the target element (active element vs selector vs ref), whether it clears existing content, or any side effects, leaving gaps 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 compact and front-loaded: the core action and timing behavior appear in the first sentence, and the human-rhythm intent in the second. Every sentence adds value with no filler.

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 four parameters, no output schema, and no annotations, the description leaves important invocation context unexplained — notably how the target element is resolved and whether the delay parameters are configurable beyond the stated default. An agent could call it, but it could also misuse it by assuming the active element is always targeted.

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 only 25% — only 'text' is explained. The description adds that delays are Gaussian with mean ~80ms, which aligns with the 'mean_delay_ms' default, but it does not explain the 'ref', 'selector', or the adjustable nature of 'mean_ddelay_ms'. It only partially compensates for the low schema coverage.

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 ('Type'), a resource ('text'), and a differentiating behavioral detail (Gaussian-delayed keystrokes). It is clear but does not explicitly distinguish from the sibling 'type_text' tool, so it misses the top level of sibling differentiation.

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 the tool is for human-like typing, which suggests when to use it over alternatives like 'type_text' or 'paste_text'. However, it provides no explicit guidance on when to choose this tool instead of those siblings, nor any exclusion criteria.

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

indexeddb_deleteA

Delete an IndexedDB database by name for the current origin (clears SPA state that survives a cookie wipe).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

A4/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 behavioral transparency burden. It clearly identifies the destructive action ('Delete an IndexedDB database') and the effect on SPA state, and it scopes the deletion to the current origin. It does not mention irreversibility, error handling, or what happens to open connections, but the deletion scope is at least 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, focused sentence with no redundant wording. The primary action is front-loaded and the parenthetical adds valuable context without bloating the description.

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 one-parameter destructive tool with no output schema and no annotations, the description adequately conveys the operation, the scope, and the effect on SPA state. It could optionally mention irreversibility or that the database name should be discovered via indexeddb_list, but those are not critical for a simple, self-descriptive delete 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?

The schema has one required string 'name' with 0% description coverage. The description adds that 'name' refers to the database name for the current origin, which is a basic clarification. However, it does not explain how to obtain valid names (e.g., via indexeddb_list) or any constraints such as case-sensitivity or nonexistent database 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 states a specific verb ('Delete'), resource ('IndexedDB database'), and scope ('by name for the current origin'). The parenthetical clarifies the purpose by explaining the consequence ('clears SPA state that survives a cookie wipe'). This distinguishes it from storage-clearing siblings like localstorage_clear or 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 Guidelines3/5

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

The description gives contextual use-case information ('clears SPA state that survives a cookie wipe') and the scope ('current origin'), but it does not explicitly compare with alternatives such as cookie_delete, localstorage_clear, or indexeddb_list for resource identification. When to use it is implied rather than directly stated.

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. Many SPAs keep auth state and drafts here, invisible to cookie/localStorage tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations present, the description carries the full burden. It discloses that the operation is scoped to the current origin and highlights that IndexedDB content is invisible to cookie/localStorage tools, which is useful behavioral context. The word "List" clearly implies a read-only operation, though it does not detail the exact return shape.

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, first one front-loaded with the core action and scope, second one adding motivation and differentiation. Every sentence earns its place and there is 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?

For a zero-parameter list operation, the description is largely complete: it names the resource, scope, and why an agent would need it. The only minor gap is that it does not explicitly describe the return format, but for a simple 'list databases' tool this is reasonably inferable.

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 and the schema already covers 100% of the parameter surface. Description adds no parameter details, but none are needed. This matches the baseline of 4 for a no-parameter tool.

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 and resource: "List IndexedDB databases for the current origin." It clearly distinguishes this tool from the many cookie and localStorage siblings by noting that SPA auth state and drafts live in IndexedDB and are invisible to those other tools. An agent can tell exactly what this tool does.

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 context for when to use this tool: when investigating SPA state that is stored in IndexedDB and not visible to cookie/localStorage tools. It does not name specific alternative tools or state explicit when-not conditions, but the guidance is enough to route an agent correctly.

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

inject_init_scriptA

Inject a script that runs before every page load.

ParametersJSON Schema
NameRequiredDescriptionDefault
scriptYesJavaScript code to inject

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 discloses the main persistent behavior (runs before every page load), but omits lifecycle details such as whether the injection applies to the current page immediately, whether it stacks across calls, and how to remove it.

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, front-loaded sentence communicates action, target, and timing with no filler. Every word 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?

For a one-parameter tool with no output schema and no nested objects, this description plus the schema is sufficient for an agent to select and invoke it correctly. The missing lifecycle details lower the score slightly but do not block correct usage.

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 schema already documents 'script' as JavaScript code to inject, so the baseline is 3. The description adds meaningful temporal context: the supplied code will be executed before every page load, not just injected and forgotten.

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 ('inject') and resource ('script that runs before every page load'), clearly conveying a persistent page-load hook. This distinguishes it from one-shot execution tools like evaluate, which run in the current page only.

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 phrase 'before every page load' implies the intended use case: install setup code that should execute on each navigation or reload. However, it does not explicitly state when to prefer this over evaluate or other script tools, nor give exclusions or cleanup guidance.

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

inspect_elementB

Get detailed info about an element (tag, attributes, bounding box, styles).

ParametersJSON Schema
NameRequiredDescriptionDefault
refYes

TDQS

B3.1/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 communicates a read-only intent and specifies the style of information returned, but it does not disclose how elements are resolved, whether visibility is required, or what happens when ref is 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 a single front-loaded sentence with no filler, packing the core purpose and output categories efficiently. Every word contributes to the agent's 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 the tool's apparent simplicity, the description omits critical context needed to call it: how to construct ref, what output shape to expect, and when this tool should be preferred over siblings. The lack of an output schema makes these omissions more significant.

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, ref, has zero schema description coverage and the description never defines its format, origin, or accepted values. 'Get detailed info about an element' only weakly hints that ref identifies an element, which is not enough for an agent to populate it correctly.

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 ('Get') and resource ('detailed info about an element') and enumerates the exact data categories returned: tag, attributes, bounding box, styles. This clearly separates it from sibling tools like get_attribute, get_text, and get_html.

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 choose inspect_element over related siblings such as get_attribute or query_selector_all. There are no exclusions or alternative references, so an agent must 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.

intercept_logC

Show what interception blocked and allowed.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
actionNoblock

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 bears the full burden of behavioral disclosure. It implies a read-only log query, but does not explain what happens if interception was never started, whether the log is cumulative, whether it can be cleared, or what format the output takes. This is thin coverage for a tool with no annotation safety signals.

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, scannable sentence with no filler words. It front-loads the purpose immediately. It is concise, though it achieves conciseness by omitting useful context.

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 two-optional-parameter log viewer, the description is minimally viable: an agent can infer it retrieves interception results and that action/limit filter those results. However, it lacks context about how interception state relates to the log, and with no output schema it does not communicate return shape or edge cases.

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%, yet the description adds nothing about the 'limit' or 'action' parameters. The schema provides enums and defaults, but not their meaning or relationship to 'blocked and allowed'. The description should have explained how action=block/allow/all maps to the log contents.

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 uses a clear verb ('Show') and specific resource ('what interception blocked and allowed'), making the tool's purpose understandable. It distinguishes itself from intercept_start/intercept_stop by focusing on reading the log rather than controlling interception state, though it does not explicitly name those siblings.

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 intercept_start, intercept_stop, or network log tools. It does not mention prerequisites such as starting interception first, nor does it explain when filtering by action or changing the limit would be appropriate.

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

intercept_startA

Block requests before they leave the browser. Blocking image/media/font/stylesheet typically removes most of a page's bytes — the single biggest speed-up for scraping — and block_urls kills trackers and ad frames. Routed on the context, so tabs opened later are covered too. Re-calling replaces the previous rules; intercept_stop removes them. 'document' cannot be blocked: it would abort the navigation itself.

ParametersJSON Schema
NameRequiredDescriptionDefault
log_limitNoHow many decisions to keep for intercept_log.
block_urlsNoURL patterns to abort — plain substring, or use * as a wildcard (e.g. *doubleclick.net*).
block_typesNoResource types to abort.

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations present, the description carries the full burden and does so well. It discloses that rules are routed on the context, apply to later-opened tabs, that re-calling replaces prior rules, that intercept_stop removes them, and that blocking 'document' would abort navigation.

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 and front-loaded with the core behavior. Every sentence adds distinct information: action, performance rationale, scope, replacement semantics, and a critical limitation. There is no filler or repetition of schema details.

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 tool with three optional parameters, no annotations, and no output schema, the description is unusually complete. It covers lifecycle, scope, limitations, and practical use, giving an agent everything needed to invoke 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?

Schema coverage is 100%, so the baseline is 3, but the description adds practical meaning beyond the schema: it explains why block_types like image/media/font/stylesheet matter for scraping performance and why block_urls is useful for trackers and ad frames. log_limit is also tied to intercept_log, adding useful 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 opens with a specific verb and resource: 'Block requests before they leave the browser.' It clearly distinguishes this from siblings like intercept_stop by stating that intercept_stop removes the rules, and from network monitoring tools by focusing on active blocking.

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 explicitly says when to use this tool: when scraping to remove most page bytes and to kill trackers/ad frames. It also explains the replacement behavior and routes users to intercept_stop for removal, and warns that 'document' cannot be blocked. This gives clear selection guidance.

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

intercept_stopA

Remove interception rules and report what they blocked.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/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 mutating nature (removal of rules) and the output behavior (report of what was blocked), but does not clarify side effects, whether ALL rules are removed given the zero-parameter schema, or what the report format is.

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 8-word sentence that front-loads the primary action before the reporting behavior. No filler; every word 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 a 0-parameter tool: it states the action and hints at the return value ('report what they blocked'), which matters because there is no output schema. However, it omits the lifecycle relationship to intercept_start, does not clarify that with no parameters the operation applies to all rules, and gives no detail on the report's contents or format.

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 schema has zero parameters, so the baseline of 4 applies — there is nothing for the description to add beyond the schema. The description correctly references the implicit target of the operation ('interception rules') without fabricating parameter documentation.

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?

States a specific verb ('Remove') and resource ('interception rules'), plus the reporting behavior. Clearly distinguishes from the sibling tools intercept_start (which adds rules) and intercept_log (which reads logs without removal). An agent can identify this as the teardown/cleanup operation without needing to open any schema.

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?

Usage is only implied — the verb 'Remove' suggests this is the counterpart to intercept_start. There is no explicit statement of when to use it versus intercept_log, nor any note that intercept_log should be used to inspect blocked traffic without removing the rules.

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

list_framesB

List all frames/iframes in the page.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of disclosing behavior. It confirms read-only enumeration and page scope, but it does not explain whether nested frames are included, what data is returned for each frame, or how the results relate to other frame-oriented tools.

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 filler. Every word adds meaning: 'List' states the action, 'all frames/iframes' states the resource, and 'in the page' states the scope.

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 no-argument read-only listing tool, the description is minimally viable: an agent can invoke it without further clarification. However, because there is no output schema and no annotations, the description would benefit from stating the returned frame identifiers or noting that results can be used with frame_evaluate.

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 description does not need to explain parameter meaning. Per the baseline for 0-parameter tools, this is handled appropriately; there is no missing semantic burden.

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 uses a specific verb ('List') and a clear resource ('all frames/iframes in the page'), so an agent knows exactly what the tool does. It does not explicitly differentiate from sibling tools like frame_evaluate, but the resource and scope are concrete enough to be 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 given for when to use this tool versus alternatives. It does not mention frame_evaluate or any other sibling that might be relevant for interacting with frames, nor does it state when listing frames is or is not appropriate.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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. 'Clear all' does convey that this is a destructive operation, but it does not disclose that the deletion is permanent, that it may be scoped to the current origin, or that there is no confirmation or undo. This is minimally transparent but not richly contextual.

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 one short sentence with no filler words. Every word contributes meaning, and the core action ('clear') plus the target ('localStorage') are front-loaded exactly as needed for a no-argument 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?

For a simple no-parameter action, the description is enough to know the basic invocation, but it omits important context: whether 'all' means the current origin or every origin, whether the action is irreversible, and how it relates to sibling storage-clearing tools. It is adequate but incomplete for risk-aware selection.

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 takes zero parameters and the schema is already empty, so there are no parameter meanings for the description to add. The zero-parameter baseline applies, and the description correctly gives no false or unnecessary parameter information.

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 concrete verb ('clear') and a specific resource ('localStorage') with an explicit scope ('all'), so it unambiguously states what the tool does. It also distinguishes this tool from sibling storage tools like localstorage_get, localstorage_set, and sessionstorage_clear by naming the exact storage area.

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 about when this tool should be used versus alternatives, and no mention of related tools such as localstorage_set or sessionstorage_clear. Usage is only implied by the resource name and the verb, which is thin guidance for an agent deciding among many storage-related siblings.

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

localstorage_getB

Get all localStorage data or a specific key.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNoKey to get (empty = all)

TDQS

B3.2/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 of behavioral disclosure. It only restates the operation without explaining that it is read-only, what the return format is, whether a page must be loaded, or how missing keys are handled. The description is not misleading but lacks meaningful 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, front-loaded sentence with no filler words. It conveys the essential split between retrieving all data and retrieving one key efficiently.

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?

The tool has no output schema, so the description should compensate by explaining what the response looks like. It does not say whether the result is a JSON object, a value, null, or an error for a missing key. An agent is left guessing about the return shape, which is a significant gap for a retrieval 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 already documents the single 'key' parameter with 'empty = all', and the tool description reinforces this with 'all localStorage data or a specific key.' With 100% schema description coverage, the baseline is 3; the description adds no new semantic detail beyond the 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 uses a specific verb ('Get') and resource ('localStorage data'), and clarifies the two modes: all data or a specific key. It is distinguishable from localStorage_set/localstorage_clear, but it does not explicitly differentiate from sessionstorage_get or 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 phrase 'Get all localStorage data or a specific key' implies the tool is for reading localStorage entries, which is decent context. However, it gives no explicit guidance on when to use this tool versus sibling storage tools, nor any exclusions or preconditions.

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 item.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
valueYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the action itself and does not mention persistence, overwrite behavior, origin scoping, error conditions, or return value, which are important for a state-changing browser storage 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 short sentence with no filler or redundancy, and the core action is front-loaded. While it is appropriately concise, it is so minimal that it omits context that would improve usefulness.

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 state-changing tool with no annotations, no output schema, and schema parameters lacking descriptions, this one-liner is not complete enough. It does not explain the origin-bound nature of localStorage, whether existing values are overwritten, or what the tool returns after success.

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 schema has 0% description coverage for its two parameters, and the tool description adds no meaning to 'key' or 'value'. An agent is left to infer that 'item' implies a key-value pair, but the description fails to clarify that both must be strings or how they map to localStorage.

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 'Set a localStorage item' uses a clear verb ('Set') and a specific resource ('localStorage item'), making the core action unambiguous. It distinguishes itself from related get/clear and sessionStorage tools by naming localStorage, though it does not explicitly name siblings.

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 localstorage_get, localstorage_clear, or sessionstorage_set. The intended use is only implied by the verb 'set'; no context, prerequisites, 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.

login_classicA

Composite login for classic email→password forms (Google, Microsoft, generic SSO). Auto-detects the email field, clicks Next/Continue on multi-step forms, fills the password, submits, and optionally enters a TOTP 2FA code. Collapses the usual 5–8 fill/click/snapshot calls into one. Heuristic — if a form is unusual, fall back to individual fill/click tools. Returns the step log + a fresh snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail / username to fill.
passwordYesPassword to fill.
totp_codeNoPre-computed 6-digit 2FA code (overrides totp_secret).
totp_secretNoBase32 TOTP secret — a 6-digit code is generated if a 2FA field appears.
step_timeout_msNoMax wait for each step's field to appear.
submit_after_emailNoClick Next/Continue after the email (Google/Microsoft multi-step).

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 the full burden of behavioral disclosure. It does well by revealing that the tool is heuristic, auto-detects fields, clicks multi-step navigation, fills, submits, and returns a step log plus fresh snapshot. It also warns about the fallback path for unusual forms. It omits potential failure modes like CAPTCHAs or login redirect delays, but the 'Heuristic' warning appropriately tempers 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?

Four dense sentences with no filler. The first sentence states the purpose, the second describes the workflow, the third explains the composite benefit, and the fourth sets expectations and return value. Every sentence earns its place, and the key scoping 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?

Despite no output schema, the description discloses the return value ('step log + a fresh snapshot'), which is essential for agent post-invocation handling. It also covers the operational workflow, the heuristic risk, and the fallback strategy. Combined with full schema coverage, nothing critical is missing for an agent to correctly select and invoke this 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?

Schema description coverage is 100%, so the schema already documents all six parameters. The description adds little parameter-specific meaning beyond mentioning that a TOTP 2FA code can be entered, which is already fully covered by totp_code and totp_secret descriptions. This is the baseline 3: schema does the heavy lifting, and 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 states a specific verb and resource: 'Composite login for classic email→password forms (Google, Microsoft, generic SSO).' It enumerates the exact steps (email field, Next/Continue, password, submit, optional TOTP), and distinguishes itself from individual fill/click tools via the 'Collapses... into one' framing. This makes it immediately clear what the tool does and how it differs from sibling low-level 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?

It explicitly says when to use the tool — for classic email→password forms such as Google, Microsoft, and generic SSO. It also gives a clear exclusion: 'if a form is unusual, fall back to individual fill/click tools,' which names the alternative approach. This is actionable routing guidance, not merely implied context.

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

mouse_click_xyA

Click at exact x,y coordinates. steps>0 adds interpolated pre-movement (human-like).

ParametersJSON Schema
NameRequiredDescriptionDefault
xYes
yYes
stepsNoInterpolation steps for pre-click movement (0=instant, 15-30=human-like)
buttonNoleft

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 of behavioral disclosure, and it does add one useful trait: steps>0 produces interpolated, human-like pre-movement, which is meaningful behavioral context. However, critical behaviors are undisclosed, including whether coordinates are viewport-relative or page-relative (which changes with scroll position), whether the physical cursor visibly moves, and what side effects the click can trigger.

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 zero filler: the core action is front-loaded in the first sentence, and the second adds the only significant behavioral qualifier. Every word 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?

For a tool with 4 parameters, no annotations, and no output schema, the description is operationally thin. It leaves the agent guessing about the coordinate frame, whether scrolling is needed first, when to prefer this over element-based click tools, and what the tool returns, all of which matter for correct invocation.

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 only 25%, with x, y, and button undocumented in the schema. The description partially compensates by framing x,y as "exact" coordinates, but it does not specify the coordinate origin or units, and it adds nothing for the button parameter. The steps explanation largely duplicates the schema's own description of interpolation.

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?

"Click at exact x,y coordinates" states a specific verb, a precise resource, and the distinguishing feature (exact pixel coordinates) that separates this from element-based siblings like click, click_text, and click_role. The "exact" modifier signals precision targeting, making the tool's role unambiguous even without opening the schema.

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 human-like pre-movement note implies the tool is appropriate for anti-detection or natural-input scenarios, and "exact x,y coordinates" implies use when pixel positions are known rather than selectors. However, no alternative tool is named and no explicit when-to-use or when-not-to-use guidance is given, leaving routing among mouse_click_xy, click, mouse_move, click_element_offset, and humanize_click to inference.

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

mouse_driftA

Random mouse movements over a duration — builds up mouse history before action (CF/DataDome behavior analysis).

ParametersJSON Schema
NameRequiredDescriptionDefault
pointsNoNumber of random destinations
duration_msNoTotal drift duration

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 the full burden of behavioral disclosure. It transparently states that movements are random, time-bounded, and intended to generate mouse history for anti-bot purposes. It could add more detail about whether any click is performed or what happens when the drift completes, but the core behavior is clearly disclosed.

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, focused sentence that front-loads the core behavior and then explains the intended use case. There is no redundant wording or unnecessary detail.

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 two-parameter tool with no output schema and no required arguments, the description is nearly complete. It explains what the tool does, why it exists, and when to run it. A small gap is the lack of explicit guidance about return behavior or side effects, but this is not critical for basic invocation.

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 100%, and the schema already provides meaningful descriptions for both parameters, including defaults. The tool description adds little beyond the schema, so a baseline score of 3 is appropriate.

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 specifies a concrete action: randomly moving the mouse over a duration to build mouse history. It conveys the purpose well and differentiates from direct mouse controls like mouse_move by emphasizing randomness and duration, though it does not explicitly name sibling alternatives.

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 context for when this should be used: before an action, as part of CF/DataDome behavior analysis. It does not explicitly state when not to use it or mention alternatives like mouse_move or mouse_replay, so it falls short of a 5.

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

mouse_moveB

Move mouse to x,y. steps>0 interpolates path (human-like).

ParametersJSON Schema
NameRequiredDescriptionDefault
xYes
yYes
stepsNoInterpolation steps (0=instant jump, 15-30=smooth)

TDQS

B3/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It discloses a meaningful behavioral trait: 'steps>0 interpolates path (human-like)'. However, it does not mention coordinate system, side effects, or what happens on completion, so transparency 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.

Conciseness4/5

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

The description is a single concise sentence that front-loads the core action and adds the key behavioral caveat. It is efficient and easy to parse, though slightly more structural detail about coordinate semantics would improve it without bloat.

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 with only three parameters and no output schema, so the description need not be lengthy. It covers the main action and interpolation behavior, but leaves ambiguity around coordinate interpretation and does not state any return value or failure conditions.

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 only 33%, so the description must compensate for undocumented x and y parameters. It only repeats that they are coordinates without clarifying units, origin, or required format. The steps parameter is already described in the schema, and the description adds only the 'human-like' nuance.

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?

Description clearly states the action: 'Move mouse to x,y' with a specific verb and resource. It is easy to distinguish from siblings like mouse_click_xy because it focuses on moving rather than clicking, though it does not explicitly name the 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 on when to use this tool versus alternatives such as mouse_click_xy, drag_and_drop, or humanize_click. The intended use is only implied by the name and description, with no exclusions or alternative routing.

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

mouse_recordA

Start recording mouse positions in the page (replay with mouse_replay). Re-calling replaces any previous recorder instead of leaking its listener.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_pointsNoCap on stored points.
duration_msNo

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 carries the full burden and it does disclose a useful nuance: re-calling replaces the previous recorder rather than leaking its listener. Still, it leaves the stop condition, duration behavior, and recording lifecycle implicit.

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 the main action first and a valuable caveat second. Every word 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?

The description is adequate for a low-complexity recording tool and names the replay counterpart, but it does not explain when recording ends, what happens at duration or point caps, or whether the recording is stored for later replay beyond the tool name.

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 only 50% because duration_ms lacks a description, and the tool description adds no parameter-level meaning. An agent must infer that duration_ms controls recording length, leaving a real 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 opens with a specific verb and resource: 'Start recording mouse positions in the page.' It also names the complementary tool, mouse_replay, which distinguishes it from siblings like mouse_move or mouse_drift.

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 pairs the tool with mouse_replay for replaying, giving an agent a clear next step. However, it does not state when not to use this tool or contrast it with alternatives beyond replay.

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

mouse_replayA

Replay last recorded mouse path with original timing.

ParametersJSON Schema
NameRequiredDescriptionDefault
speedNoReplay speed multiplier (1.0=original, 2.0=2x faster)

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It does disclose the replay action and the original-timing behavior, but it does not specify whether the path includes clicks/drags, whether the tool blocks until finished, or what happens when no recording exists.

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 short sentence with no filler; the core action, object, and timing behavior are front-loaded. Every word contributes.

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 one-parameter tool with no output schema, the description plus parameter schema are nearly sufficient to invoke correctly. The only notable gap is behavior when no recording has been made, which is a minor edge case given 'last recorded' signals the dependency.

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 already documents the only parameter at 100% coverage ('Replay speed multiplier (1.0=original, 2.0=2x faster)'). The description's 'with original timing' reinforces the default behavior but adds little 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 states a specific action ('Replay'), a precise resource ('last recorded mouse path'), and a behavioral qualifier ('with original timing'). This clearly distinguishes it from mouse_record and direct pointer tools like mouse_move and mouse_click_xy.

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 phrase 'last recorded' implies a clear prerequisite: a prior mouse recording must exist before replaying. It does not explicitly name mouse_record as the required predecessor or state exclusions/alternatives, so it stops short of a 5.

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

network_getA

List captured network requests in capture order, keeping the most recent limit rows. Each row shows an #id usable with network_get_detail.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows to return.
filterNoOnly show requests whose URL contains this substring.

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 of behavioral disclosure. It explains ordering, the effect of limit, and the row-level linkage to network_get_detail, making the tool's behavior predictable. It does not explicitly state that the operation is non-destructive, but 'List' strongly implies a read-only 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?

Two sentences, no filler. The core behavior is front-loaded, and the cross-reference to network_get_detail is placed where it is most useful. 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?

For a simple list operation with two optional parameters and no output schema, the description provides sufficient context: what is returned, in what order, with what row identifier. It could additionally mention the default limit or behavior when no capture exists, but those are minor 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 description coverage is 100%, so the baseline is 3. The description adds value by clarifying that `limit` applies to the most recent requests in capture order, which is not fully captured by 'Max rows to return.' The `filter` parameter is already well described 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 states a specific verb ('List'), a specific resource ('captured network requests'), and meaningful qualifiers: capture order, a row limit, and an #id that links to network_get_detail. This clearly distinguishes it from related siblings like network_get_detail and network_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 makes the primary use case clear: list captured network requests in capture order. Mentioning that each row's #id is usable with network_get_detail provides indirect routing to the detail tool, though it does not explicitly state when not to use this tool or name other alternatives like intercept_log.

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

network_get_detailA

Full request + response detail (headers and text body) for one captured request. Requires network_start(capture_bodies=true) BEFORE the request fired. Identify the request by id (from network_get) or by url substring.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoRequest #id from network_get. -1 = match by url instead.
urlNoWhen id=-1, match the newest request whose URL contains this substring.

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 behavioral burden. It discloses the prerequisite capture_bodies=true, that the request must have already fired, and that url matching selects the newest request. These are meaningful behavioral details. It does not mention failure behavior when no match is found, but the key constraints are covered.

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 tightly packed sentences: main purpose first, then the critical prerequisite, then the identification mechanism. No filler or redundancy, and each sentence 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?

For a simple two-parameter read-style tool with no output schema, the description is complete. It explains what data is returned, the required setup, and how to target a specific captured request. Nothing essential for correct invocation is missing.

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 100%, so the schema already explains both parameters and their defaults. The description adds the context that id comes from network_get and that url matches by substring, but it largely echoes the schema rather than adding substantial new 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 what the tool returns: full request and response detail, including headers and text body, for one captured request. It differentiates from the broader network_get list by emphasizing 'one captured request' and by referencing network_get as the source of the id.

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 concrete guidance on when to use the tool: it must be called after network_start(capture_bodies=true) and before/for a request that already fired. It also explains the two identification modes (id or url substring). It does not explicitly contrast with sibling tools or list exclusions, but the usage context is clear.

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

network_startA

Start capturing network requests. With capture_bodies=true also records request/response headers + text bodies (json/text/xml/form only, capped at body_limit bytes) so you can inspect API payloads via network_get_detail — no need to pivot to evaluate()+fetch().

ParametersJSON Schema
NameRequiredDescriptionDefault
body_limitNoMax bytes kept per request/response body.
capture_bodiesNoAlso capture request/response headers and text bodies.

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 burden of behavioral disclosure. It does well by explaining that bodies are only captured when capture_bodies=true, restricting capture to json/text/xml/form, capping size at body_limit bytes, and routing the user to network_get_detail for inspection. It could additionally mention whether starting a capture clears previous logs or whether the capture persists across navigations, but the core behavior is transparent.

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

Conciseness5/5

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

The description is compact: the first sentence states the action, and the second covers the optional behavior, output access, and a helpful alternative comparison. Every sentence contributes information without redundancy or padding.

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 output schema and no annotations, the description supplies the key details needed to invoke the tool successfully: what it starts, how to enable richer capture, the body size limit, and how to inspect results. Minor gaps exist around stopping capture and whether prior capture state is reset, but these are secondary to a correct first call.

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 100%, so the schema already documents both parameters. The description adds value beyond the schema by tying capture_bodies to the additional recording of headers and text bodies and by clarifying that body_limit applies as a byte cap to each body. This enriches parameter understanding rather than merely repeating 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 opens with a specific verb and resource: 'Start capturing network requests.' It distinguishes itself from related siblings by naming network_get_detail as the way to inspect captured payloads, so an agent can tell this is the capture-starting tool rather than a retrieval or interception tool.

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 context on when to use capture_bodies=true and points to network_get_detail as the companion tool. It also explicitly steers away from evaluate()+fetch(). It doesn't spell out exclusions such as when to prefer intercept_start or http_request, but the primary usage scenario is clear.

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

page_statsA

Page statistics: element count, size, load metrics. Use to decide extraction strategy.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 must carry the behavioral disclosure burden. It reveals that the tool reports element count, size, and load metrics, which implies a read-only diagnostic operation, but it does not explicitly state that no navigation or state mutation occurs, nor does it describe how the metrics are collected. This is adequate but not rich.

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 short sentences with no filler. The core information 'element count, size, load metrics' is front-loaded, and the use case follows immediately. Every part contributes value.

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?

With no output schema and no annotations, the description is the main contract for the agent. It names the metric categories but leaves 'size' and 'load metrics' underspecified, and does not state whether the stats apply to the current page or require a completed page load. This is minimally sufficient for a 0-param tool, but it leaves 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?

The tool has zero parameters, so there is no semantic ambiguity for an agent to resolve. The rubric baseline of 4 for 0-param tools applies; the description does not need to add parameter detail.

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 identifies the tool's function: reporting page-level statistics such as element count, size, and load metrics. It is not a tautology and gives enough specificity to separate it from content-gathering tools like get_text or screenshot, though it does not explicitly differentiate it from similar diagnostic siblings like performance_timeline.

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 a use case: 'Use to decide extraction strategy.' This gives an agent a clear context for when to invoke it. It does not mention exclusions or alternatives, so it falls short of the highest benchmark.

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

paste_textA

Fill a field with a REAL paste. Puts the text on the clipboard and presses Ctrl/Cmd+V so the page receives a trusted paste event with actual clipboardData — the only thing that works for frameworks that listen to paste alone (Svelte 5 / SolidJS runes, some Qwik forms). Falls back to a synthetic event and then the native value setter.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNo
textYes
selectorNo

TDQS

A4.2/5.0
Behavior5/5

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

With no annotations to lean on, the description carries the full burden and does an excellent job: it discloses clipboard side effects, the real paste mechanism, and the fallback path to synthetic event then native value setter. This gives the agent an accurate mental model of what happens when the tool runs.

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 front-loaded with the core purpose, then justifies the mechanism, and ends with the fallback behavior. Every sentence adds meaningful information, and the length is justified by the technical nuance being explained.

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 thoroughly covers the behavior and the exact scenario where this tool is necessary, but it omits how to target the field via ref or selector and gives no indication of return values or failure behavior. It is viable but incomplete for correct usage in all cases.

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 schema provides no descriptions, so the description must compensate, but it only explains what 'text' is for. 'ref' and 'selector' are left unexplained, even though they appear to be how the target field is identified, which is critical for correct 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 names a specific action ('Fill a field with a REAL paste') and distinguishes it from ordinary typing or setting values by emphasizing the trusted paste event and clipboardData. It clearly communicates the unique behavior that differentiates this tool from fill/type_text/smart_fill siblings.

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 a clear when-to-use condition: frameworks that listen to paste alone, with concrete examples like Svelte 5 / SolidJS runes and some Qwik forms. It does not explicitly name alternative tools or give when-not-to-use guidance, so it stops short of a full 5.

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

performance_timelineA

Navigation + paint + resource timing for the current page: TTFB, DOMContentLoaded, load, FCP, LCP, and the 5 slowest resources. Note: Firefox does not implement layout-shift, so CLS is unavailable here.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 carries the full burden, and it does disclose useful behavioral details: the exact metric set and the fact that CLS is unavailable in Firefox because layout-shift is not implemented. However, it does not state whether the tool is read-only, what the response structure looks like, or any potential side effects, leaving some behavioral context unstated.

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 with no fluff. The metric list is front-loaded, and the important Firefox/CLS limitation is placed at the end for context. 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?

The tool is a no-param, no-output-schema utility with a straightforward purpose. The description covers what metrics are included and one key environment limitation, which is sufficient for a tool of this simplicity. It could explicitly say that it returns perormance data for the current page, but the wording already implies this strongly.

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 and the input schema is empty, so the schema fully covers paramater semantics. The description correctly focuses on behavior rather than params, and the no-parameter baseline 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 tool provides navigation, paint, and resource timing metrics for the current page, and enumerates exact values such as TTFB, DOMContentLoaded, FCP, LCP, and slowest resources. It lacks an explicit verb phrase like 'retrieves' or 'returns', and does not distinguish itself from sibling tools like network_get or page_stats, so it falls short of a 5.

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 gives no guidance on when to use this tool instead of related performance/network/page-stat tools. It only notes a Firefox limitation about CLS, which is a compatibility caveat, not a usage instruction. No alternatives or exclusion conditions are mentioned.

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

press_keyB

Press key or combo (Enter, Escape, Control+a, etc.).

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesKey name

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden, yet it only restates the action and gives examples. It does not describe where the key event is sent, whether it requires focus, what side effects may occur, or what the result/return is.

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 filler. It conveys the action and provides examples efficiently.

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 one-parameter action tool with no output schema and no annotations, the description gives the core information, but lacks context about focus/target element, whether all modifiers are supported, and any potential page-changing side effects. An agent can likely invoke it correctly for the common case, but may misjudge its effect on the page.

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 schema already documents the key parameter as 'Key name', and the description adds concrete accepted formats (Enter, Escape, Control+a), clarifying modifier syntax and valid key names. This goes beyond the schema, giving the agent examples that reduce invocation errors.

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?

Description states a specific verb (Press) and resource (key or combo) with concrete examples such as Enter, Escape, and Control+a, making the tool's primary function clear. It does not explicitly distinguish from siblings like type_text or click, but the key-combo phrasing makes the distinction implicit.

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 given for when to use press_key instead of related input tools such as type_text, click, or paste_text. There are no prerequisites, exclusions, or conditions; the description only states what the tool does.

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

query_selector_allB

Query elements by CSS selector, return text/attributes of all matches.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
selectorYes
attributeNoAttribute to extract (empty = innerText)

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 full behavioral burden. It does disclose the core read-only query behavior and the returned data (text/attributes of all matches), but it does not describe output shape, no-match/error behavior, or the effect of limit, so edge cases remain unpredictable.

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?

One front-loaded sentence with zero filler: it puts the query verb and selector first, then the return type. It is concise without becoming a tautology, though it sacrifices operational detail 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?

There is no output schema and no annotations, so the description must cover return behavior and invocation constraints. It omits the meaning of limit, the return format, and what happens when no elements match, which leaves important gaps for an agent deciding how to use 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 only 33%, and the description does not compensate adequately. It adds CSS selector context and maps 'text/attributes' to the attribute parameter, but it never explains limit, and the claim of returning 'all matches' is ambiguous given limit defaults to 20.

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?

States a specific operation ('Query elements by CSS selector') with a clear object and result ('return text/attributes of all matches'). The emphasis on 'all matches' and text/attribute extraction distinguishes it from single-element tools like get_attribute or get_text.

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 when-to-use or alternative tool is mentioned. The phrase 'all matches' implies it is for querying multiple elements, but the agent is not told when to prefer this over get_text, get_attribute, evaluate, or get_html, nor what the practical limits are.

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

reloadB

Reload the current page.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does not state whether the reload waits for page load, discards unsaved form state, or returns any result, leaving important behavioral traits undisclosed.

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 filler or redundant detail. It is appropriately sized for a zero-parameter tool and front-loads the action clearly.

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 core behavior is stated, but with no output schema and no annotations, the description leaves some context unspecified, such as whether the tool waits for navigation to complete and how it relates to reload_and_snapshot. It is adequate for invocation but not fully 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?

The tool has zero parameters, so the baseline is 4. No parameter-level documentation is needed, and the description adds no parameter meaning because there are no parameters to clarify.

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 specifies the verb 'reload' and the resource 'current page', making the core action clear. However, it does not differentiate itself from the sibling tool reload_and_snapshot, which also reloads the current page but then takes a snapshot.

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 given about when to use reload versus navigate, go_back, go_forward, or reload_and_snapshot. The agent must infer the appropriate context 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.

reload_and_snapshotB

Reload page + return snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden. It discloses that the tool reloads and snapshots, but it does not say whether it waits for page load, what the snapshot contains, whether the reload can lose unsaved page state, or what happens on failure.

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 front-loaded, telegraphic sentence with no filler. It is appropriately short for a zero-parameter tool, but it is terse enough that some behavioral detail is missing.

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?

With no annotations, no output schema, and several sibling snapshot tools, the description is only minimally sufficient. It conveys the core combined action but leaves the snapshot type and post-reload behavior unspecified, which an agent may need to invoke the tool confidently.

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 and the schema is fully complete with no properties. The description has no parameter semantics to add, so the 0-parameter baseline 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 names a specific action and result: reload the page and return a snapshot. It is distinct from siblings like reload (no snapshot) and browser_snapshot (no reload), though it does not explicitly name an alternative or specify which kind of snapshot is returned.

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 given about when to choose this combined tool over reload, browser_snapshot, navigate_and_snapshot, wait_and_snapshot, or other snapshot variants. The agent must infer the intended use case from the name and description alone.

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

reset_profileA

Delete the persistent profile (~/.camoufox-mcp/profile) entirely. Use to start fresh — cookies, localStorage, history all wiped. Browser must be closed first (call browser_close before this).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral disclosure burden. It clearly discloses the destructive nature of the operation, lists affected data (cookies, localStorage, history), and states the browser must be closed first. This is comprehensive and honest.

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 long with no filler. The destructive action is front-loaded, followed by the purpose and the critical precondition in a logical order.

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 zero-parameter destructive tool with no output schema, the description is complete. It covers what is deleted, where, when to use it, and the necessary precondition.

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 and the schema coverage is 100%, so there are no parameter semantics to clarify. The description correctly focuses on behavior rather than inputs, which is appropriate here.

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 ('Delete') with a precise resource (the persistent profile at ~/.camoufox-mcp/profile) and explicitly states the full scope of deletion. It clearly differentiates itself from granular cookie or storage clearing siblings by stating the entire profile is wiped.

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 explicitly says when to use this tool: 'Use to start fresh'. It also gives a critical prerequisite and even names the exact preceding call: 'Browser must be closed first (call browser_close before this)'. This is strong guidance for an agent deciding when and how to invoke it.

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

save_pdfA

Save page as PDF. NOTE: Playwright can only generate PDFs in headless Chromium — Camoufox is Firefox, so this fails by design here. Use screenshot(full_page=true) instead. Kept for API compatibility.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNo

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations, the description carries full responsibility for behavioral disclosure. It goes beyond the name by revealing the tool is a no-op/stub that will fail, explains why (Firefox cannot use Playwright PDF generation), and why it still exists (API compatibility). This is excellent 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?

Three concise sentences, each earning its place: the action, the environment limitation, and the alternative. The warning is properly front-loaded after the one-line summary, and there is no filler.

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 deliberately disabled compatibility stub, the description is nearly complete: it tells the agent the tool fails, why it fails, and what to use instead. The only gap is that it does not specify the exact failure behavior (e.g., thrown error or empty result), but 'fails by design' is sufficient for practical use.

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%, so the description must compensate for the undocumented 'path' parameter. It does not mention what 'path' does, whether it is ignored, or what value should be passed. Since the tool is a compatibility stub this is somewhat mitigated, but no semantic meaning is added.

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 intended action: 'Save page as PDF.' It also explicitly explains that this tool is non-functional in this environment and is kept only for API compatibility, which makes the actual purpose unmistakable. It names the alternative, screenshot(full_page=true), distinguishing it from a relevant sibling.

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 when-not-to-use guidance: save_pdf fails by design because Camoufox is Firefox, and directs the agent to use screenshot(full_page=true) instead. This is a model example of routing to the correct alternative.

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

scrape_markdownA

Fetch a URL and return clean, LLM-ready markdown (headings, links, lists preserved; nav/footer/scripts stripped). Default path is browserless (impit) — fast and cheap. Set use_browser=true for JS-rendered pages (needs browser_launch).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
proxyNo
max_charsNo
impersonateNofirefox
use_browserNoRender in the stealth browser instead of a plain HTTP fetch.

TDQS

A3.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 behavioral disclosure burden. It explains the default rendering path, the fast/cheap tradeoff, when browser rendering is needed, and the cleanup behavior of the output. It could add more about proxy/impersonation behavior or output truncation, but the core behavioral traits are disclosed.

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 with no wasted words. The output contract is front-loaded, followed by relevant mode-selection guidance. Every sentence contributes actionable information.

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 primary behavior and the key use_browser decision, but missing details about the remaining parameters, return format boundaries, and explicit alternatives leave some gaps. For a 5-parameter tool with no output schema and no annotations, the description is adequate but not complete.

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 only 20%, so the description must compensate for undocumented parameters. It adds meaning for use_browser, but does not explain proxy, max_chars, or impersonate semantics beyond what the schema already provides. This leaves the agent with minimal understanding of most 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 tool fetches a URL and returns clean, LLM-ready markdown with specific transformations (preserving headings, links, lists; stripping nav/footer/scripts). This distinguishes it from generic fetching tools, though it does not explicitly name or differentiate from siblings like scrape_page or smart_fetch.

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 guidance on when to use the default browserless path versus setting use_browser=true for JS-rendered pages, and notes the browser_launch prerequisite. It does not explicitly state when to choose this tool over sibling alternatives such as scrape_page or http_request.

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

scrape_pageB

Smart page scraper — auto-detect and extract main content, links, metadata. Strips nav/footer noise.

ParametersJSON Schema
NameRequiredDescriptionDefault
include_metaNo
include_linksNo
max_text_lengthNoMax text chars (truncates at paragraph boundary)
only_main_contentNoStrip nav, header, footer, sidebar — extract only main content area

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 behavioral burden. It discloses that the scraper auto-detects content and strips nav/footer noise, but it does not state whether it operates on the current page, whether it is read-only, or what the returned structure contains beyond content, links, and metadata.

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?

One line, front-loaded, with no redundant sentences. The word 'smart' is slightly vague, but the rest is efficient and scannable.

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, no output schema, and a large sibling list, the description leaves important gaps: it never says the scraper targets the current page versus navigating, does not describe return shape/format, and does not distinguish itself from alternatives. It is too thin to fully support tool selection.

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's mention of main content, links, and metadata weakly maps to only_main_content/include_links/include_meta, and schema already describes max_text_length and only_main_content. It adds little detail for the two undocumented boolean parameters, but their names are largely self-explanatory.

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 names a concrete verb (scrape) and resource (page), and adds extract behaviors: main content, links, metadata, plus noise stripping. It is clear on its own, though it does not explicitly differentiate itself from sibling scraping tools like scrape_markdown or smart_fetch.

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 use when a clean extracted main-content version of a page is needed, but it gives no explicit when-to-use guidance, exclusions, or named alternatives among the many scraping/extraction siblings. The usage context is inferable but not stated.

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

screenshotA

Screenshot the page, or a single element with ref/selector (great for documenting one modal). Returns the IMAGE inline — no second Read call — plus the saved path. Set return_image=false for path only.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNoSnapshot ref — capture just that element.
nameNoFilename prefixpage
selectorNoCSS selector — capture just that element (ignored if ref is set).
full_pageNoFull scrollable page (ignored when ref/selector is set)
return_imageNoEmbed the PNG in the response. false = only save to disk.

TDQS

A3.9/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 behavioral burden and handles it well: it discloses that the image comes back inline (saving a round trip), that a local path is also saved to disk, and that return_image=false switches to path-only output. It does not cover failure modes or where the saved file lives, but the core side-effect profile—writes to disk and embeds image data—is clearly surfaced.

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, each earning its place: the action and scope, the key inline-return benefit, and the toggle for path-only. It is front-loaded with the verb and resource, with zero filler or repetition of schema boilerplate.

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 5-parameter tool with no required fields and full schema descriptions, the description covers the essential behavior, the return shape (inline image + path), and the main configuration switch. The missing pieces—on-disk path details, invalid-ref behavior, and explicit guidance vs the snapshot sibling family—are gaps, but they are minor against a schema that already documents every parameter fully.

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 100%, so the baseline is 3, but the description adds real meaning: it explains the ref/selector relationship in prose and introduces the 'no second Read call' benefit, which gives the return_image parameter behavioral significance beyond the schema's bare 'Embed the PNG in the response.' The modal-use-case hint also contextualizes element capture.

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 uses a specific verb and resource ('Screenshot the page, or a single element with ref/selector') and clearly distinguishes two capture modes: full page vs element-level. It stops short of a 5 because it does not explicitly differentiate itself from sibling tools like browser_snapshot or the various *_and_snapshot combinations, though the inline-image emphasis partially compensates.

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 it: when you want an inline image without a second Read call, or element-level capture ('great for documenting one modal'), and the return_image toggle clarifies a path-only variant. However, it never names alternatives or states when not to use it, leaving the agent to infer the boundary against screenshot-adjacent siblings such as browser_snapshot and navigate_and_snapshot.

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

scrollC

Scroll the page.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountNo
directionNodown

TDQS

C2.4/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 of behavioral disclosure. 'Scroll the page.' only states the core action and provides no detail about whether scrolling is relative, how the 'amount' is interpreted, whether it works on nested scroll containers, or what side effects occur.

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 extremely brief and front-loaded, which is good for scanning. However, it is under-specified rather than efficiently complete; a single sentence that merely restates the tool name doesn't earn its place when two parameters and a sibling alternative need clarification.

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 two parameters, no annotations, and no output schema, the description is insufficient. It lacks parameter semantics, usage context, and any differentiation from related tools, leaving an agent to infer how to call it correctly.

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%, so the description must compensate, but it does not mention the 'amount' or 'direction' parameters at all. The schema's enum and defaults are self-explanatory, yet the meaning of 'amount' (pixels? percentage? steps) is left entirely undefined.

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 clear action and resource: 'Scroll the page.' It is unambiguous about what the tool does at a basic level. However, it does not differentiate from the sibling tool 'scroll_to', so the agent cannot tell whether this is free scrolling versus scrolling to a specific element.

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 usage guidance is provided. The description does not mention when to use this tool versus 'scroll_to', 'set_viewport_size', or other scrolling-related siblings, and it gives no context about typical scenarios where a relative scroll is preferred.

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

scroll_toA

Scroll a specific element into view (the page-level scroll tool only moves by pixels).

ParametersJSON Schema
NameRequiredDescriptionDefault
refNo
blockNocenter
selectorNo

TDQS

A3.9/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 of explaining behavior. It does disclose the core behavior and the pixel-based limitation of the sibling tool, but it does not mention possible caveats like element visibility, timing, failure behavior, or how ref/selector are prioritized. Basic transparency is present, but depth is limited.

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 focused sentence that leads with the tool's purpose and immediately adds the differentiating fact. 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?

The tool has no annotations, no output schema, and zero schema description coverage. Given that context, the description is too minimal to fully support correct invocation: it omits how to specify the target element and what the `block` parameter controls. The strong sibling differentiation helps, but key operational detail is missing.

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 for undocumented parameters. It mentions 'specific element' but never explains how `ref`, `selector`, or `block` should be used, leaving the agent to infer from names alone. This is a meaningful gap for a tool with three optional 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?

The description clearly states a specific action and resource: scroll a specific element into view. It also explicitly differentiates itself from the sibling `scroll` tool, making its purpose immediately 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?

The description explicitly says the page-level `scroll` tool only moves by pixels, which tells the agent when to use `scroll_to` instead. This is direct, actionable guidance with a named alternative.

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

search_pageB

Grep the CURRENT page's visible text and return matches with surrounding context. Costs nothing compared to a snapshot or a screenshot — use it first to find where a term actually appears.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesSubstring, or a regex source when regex=true
regexNo
max_matchesNo
context_charsNo
case_sensitiveNo

TDQS

B3.4/5.0
Behavior3/5

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

Since no annotations are provided, the description must carry the behavioral burden. It usefully discloses that it operates on 'visible text' only and returns 'surrounding context,' and implies a cheap read operation. However, it doesn't specify how frames are handled, what happens with zero matches, or explicitly confirm it has no 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 sentences, front-loaded with the core behavior and followed by a concise cost/usage tip. Every word earns its place; no fluff or 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?

With no output schema, no annotations, and 5 parameters (only 1 documented in schema), the description provides too little. It leaves the return object structure, frame scope, and regex/case semantics unexplored, so an agent would need to infer or experiment to use it with confidence.

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 only 20%, with just 'text' described in the schema. The description only hints at 'surrounding context' (corresponding to context_chars); it doesn't clarify regex, case_sensitive, or max_matches behavior. Although parameter names are reasonably self-explanatory, the description fails to compensate for the 80% of undocumented 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 specific verb and resource: 'Grep the CURRENT page's visible text' and the output 'return matches with surrounding context.' It differentiates from snapshots/screenshots by scoping and cost, but doesn't explicitly contrast with sibling search tools like 'search' or 'find_by_text', so it stops short of full sibling differentiation.

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 gives an explicit recommendation to use it first to locate terms because it 'costs nothing compared to a snapshot or a screenshot.' This is useful when-to-use guidance, but it doesn't mention when not to use it or compare it to other text-finding siblings, leaving some alternatives unexplored.

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

select_optionC

Select option from dropdown.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYes
valueYes

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 carries the full burden. It only states the operation and resource, but does not disclose whether the selection triggers change events, waits for interactions, requires element visibility, or what happens on failure. This lack of behavioral detail limits an agent's ability to predict 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, front-loaded sentence with no fluff. It is structurally efficient, though it omits necessary parameter context that would make it more valuable. For what it contains, it is appropriately concise.

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, no output schema, and a sparse schema lacking parameter descriptions, the description needed to compensate by explaining ref/value semantics and behavior. It does neither, leaving the tool incomplete for a browser automation operation 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?

The input schema defines two required strings (ref and value) with 0% description coverage, and the description adds no meaning to either parameter. An agent cannot infer whether ref is a selector, index, or internal ID, nor whether value expects an option's value, text, or position. This is a critical gap for correct invocation.

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 (select) and the resource (<select> dropdown), which distinguishes it from generic tools like click or fill. It does not specify whether the option is matched by value, text, or index, but the core intent 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 Guidelines3/5

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

Usage is implicitly clear for native <select> elements, but the description gives no explicit guidance on when to prefer this over alternatives like fill or click, nor any exclusions for custom dropdowns or non-visible elements. The context is understandable but relies on inference.

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

server_statusB

Health check — verify server, browser status, active tabs.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/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 behavioral burden. 'Health check' does convey a read-only, non-destructive diagnostic intent, which is the most important trait. However, it does not disclose return format, failure behavior (e.g., unreachable server or unlaunched browser), or whether the call is synchronous.

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 the key phrase 'Health check' leading. Every word earns its place, with no filler, redundancy, or structural 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?

Adequate for a simple zero-parameter diagnostic, but the absence of an output schema and annotations leaves the return shape and edge-case behavior (browser not running, server unreachable) undisclosed. It also offers no hint about when it should be preferred over sibling status tools.

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 there is nothing for the description to document beyond the schema. Per the 0-param baseline, the schema fully covers this dimension and the description owes no parameter compensation.

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 clear verb-resource combination ('Health check', 'verify') with a defined scope covering server status, browser status, and active tabs. This distinguishes it from the many action-oriented siblings (navigate, click, fill). It is slightly ambiguous about what a 'health check' operationally returns, but the diagnostic intent is 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 given on when to use this tool versus plausible alternatives such as page_stats, browser_recover, or describe_page, which could also report browser state. An agent receives no selection criteria or exclusion conditions.

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 the current origin (parity with localstorage_clear).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations to fall back on, the description states the destructive scope directly: all sessionStorage for the current origin is cleared. It does not detail return value or irreversibility, but 'Clear all' conveys the key behavioral consequence for a parameterless 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?

One sentence states the action, scope, and relationship to a sibling tool with no filler or redundancy. The most important 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?

The tool is simple, parameterless, and has no output schema; the description covers what it affects, where, and how it relates to localStorage clearing. No critical operational detail is missing.

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, and the schema carries no properties, so there is nothing the description must add. The baseline for no-parameter tools 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 names a precise verb (clear), exact resource (all sessionStorage), and scope (current origin), and the parity note ties it to localstorage_clear so an agent can tell it apart from sibling storage tools. This 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 makes the intended use clear: clearing sessionStorage in the current origin, matching localstorage_clear for the other storage type. It lacks explicit when-not-to-use guidance, but the tool is simple enough that the sibling distinction is implied.

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

sessionstorage_getB

Get all sessionStorage data or a specific key.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNo

TDQS

B3.3/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 communicates a read operation through the verb 'Get', but it does not describe the return format, behavior for a missing key, or whether sessionStorage is read in its entirety when no key is given. Basic read behavior is implied, but key edge-case behavior remains undisclosed.

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 filler, front-loading the operation and resource. Every word contributes meaning, and it is appropriately brief for a simple getter 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?

For a one-optional-parameter getter with no output schema, the description covers the core invocation paths: all data or a specific key. It is complete enough for an agent to select and call the tool, though mentioning behavior for a nonexistent key would have made it fully airtight.

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 schema provides only an optional string property with no description, so the description adds the critical meaning: omitting the key retrieves all sessionStorage data, while providing a key retrieves that specific value. This directly compensates for the 0% schema description coverage.

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 operation (Get) and the resource (sessionStorage data), and distinguishes it from sessionstorage_set and sessionstorage_clear by using the verb 'Get'. It does not explicitly differentiate from localstorage_get beyond the storage type, so it stops short of perfect sibling 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?

The description implies the tool is for retrieving sessionStorage data, but it provides no explicit guidance about when to use this tool versus alternatives like localstorage_get, and gives no exclusions or prerequisites. Usage context is only implicit in the verb and noun.

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 item.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
valueYes

TDQS

C2.9/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 of behavioral disclosure. It only states that an item is set, without mentioning overwrite behavior, persistence semantics, possible quota/security errors, or return value. This is minimal for a write operation with no annotation support.

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 clear sentence with no filler. It is appropriately brief for a simple setter tool and front-loads the essential action.

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 two-parameter setter with no output schema, the description plus schema is mostly sufficient to invoke the tool. However, the lack of any usage context or behavioral caveats leaves the description only minimally viable rather than fully complete.

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 compensate by explaining the key and value parameters. While the names are self-explanatory, the description adds no meaning beyond the input schema and never clarifies that an existing value for the same key will be replaced.

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 names a specific verb ('Set') and resource ('sessionStorage item'), which clearly identifies the operation. It does not explicitly differentiate from sibling tools like localstorage_set or sessionstorage_get, but the storage family and action are 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?

There is no guidance on when to use this tool versus alternatives such as localstorage_set, sessionstorage_get, or sessionstorage_clear. No context is given about sessionStorage's per-tab lifecycle or where it fits relative to other storage tools.

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

session_warmupA

Visit innocuous public sites (Google, Wikipedia) to build browsing history before targeting protected site. Helps with CF/DataDome IP scoring.

ParametersJSON Schema
NameRequiredDescriptionDefault
sitesNoURLs to visit (default: google.com, wikipedia.org)
duration_msNoTotal warmup time

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It clearly discloses that the tool visits sites, builds browsing history, and influences anti-bot scoring. It could mention side effects like persisted history or cookies, but the core observable behavior is stated directly.

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 compact sentence gives the action, examples, timing, and rationale without filler. Every part earns its place and the key context 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?

For a two-optional-parameter tool with a complete schema, the description is nearly sufficient. It explains why and when to use the tool, but could briefly mention prerequisites like an already-launched browser session.

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 100%, so the parameters are already documented. The description adds no extra meaning about sites or duration_ms, but the schema handles those details well. Baseline 3 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 uses a specific verb ('Visit') with a clear resource ('innocuous public sites') and a concrete goal: build browsing history before targeting a protected site. It also names the anti-bot context (CF/DataDome IP scoring), which distinguishes it from generic navigation tools like navigate or wait_for.

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 signals when to use it: before targeting a protected site, to improve IP scoring. It does not explicitly contrast it with alternatives like fingerprint_audit or cookie_import, but the timing and purpose are clear enough for an agent to choose it appropriately.

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

set_viewport_sizeA

Set the viewport width and height. This is the exact control over what the page renders and what a screenshot captures. It does NOT resize the OS window: Camoufox reports a frozen outerWidth/outerHeight, so asking for a viewport larger than the launch window makes the content bigger than its own window — impossible geometry that a detector can read. The reply says so when that happens.

ParametersJSON Schema
NameRequiredDescriptionDefault
widthYes
heightYes

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden and does so well. It discloses that the OS window is not resized, that Camoufox reports a frozen outerWidth/outerHeight, and that requesting a viewport larger than the launch window creates detector-readable impossible geometry. It even explains that the reply will indicate when this 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?

The description is compact with every sentence earning its place. The core purpose is front-loaded, and the critical caveat about window geometry appears immediately after. There is no redundant or filler language.

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 two-parameter tool with no output schema, the description covers the essential behavioral context and the main failure mode. It could be slightly more complete by referencing get_viewport_size as the read counterpart or stating value constraints, but the provided information is sufficient for correct invocation in most 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?

Schema description coverage is 0%, so the description must compensate. It adds meaning by clarifying that width and height refer to viewport dimensions, not OS window dimensions, and that values too large relative to the launch window produce invalid geometry. However, it does not specify units, allowed ranges, or whether integer values are required, so the compensation is only partial.

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 opens with a specific verb+resource: 'Set the viewport width and height.' It further clarifies that this controls what the page renders and what a screenshot captures, which distinguishes it from sibling tools like get_viewport_size and browser_launch. The additional note that it does NOT resize the OS window removes a key ambiguity.

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 context for when this tool matters: it is 'the exact control over what the page renders and what a screenshot captures,' implying it should be used before screenshot-dependent operations. It does not explicitly name an alternative or state when not to use it, but the behavioral warning about impossible geometry effectively guides against improper use.

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

smart_fetchB

Dual-mode fetch: tries the browserless HTTP path first and escalates to the stealth browser ONLY when the response looks anti-bot blocked. This is the efficiency core — high-volume reading stays cheap, the browser fires only when it's actually needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
proxyNo
max_charsNo
impersonateNofirefox
force_browserNo

TDQS

B3.3/5.0
Behavior3/5

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

The description usefully discloses the escalation behavior and the efficiency motive, which is valuable. But it states the browser fires 'ONLY' when anti-bot blocking is detected, while the force_browser parameter can override that behavior, creating a partial mismatch. With no annotations available, it also does not explain side effects, return shape, 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 short and front-loaded with the core mechanism. The second sentence reinforces the efficiency value proposition, but somewhat redundantly restates the 'only when needed' idea from the first sentence.

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 five parameters, zero schema descriptions, no output schema, and no annotations, the description alone is not enough to invoke this tool correctly. It explains the strategic behavior but omits return format, parameter defaults/effects, and edge-case behavior.

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 any parameter, including url, proxy, max_chars, impersonate, or force_browser. The dual-mode narrative implicitly relates to force_browser and impersonate, but the agent is left without actual parameter semantics.

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 what the tool does: it fetches via a dual-mode path, trying browserless HTTP first and escalating to a stealth browser only when anti-bot blocking is detected. It communicates a distinct hybrid behavior, though it does not explicitly contrast itself with sibling tools like http_request 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 Guidelines4/5

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

It gives clear context for when this tool is valuable: high-volume reading where efficiency matters, with the browser used only when necessary. However, it stops short of explicit guidance on when NOT to use it or which sibling tools to prefer in other scenarios.

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 their LABEL text (fuzzy, case-insensitive) instead of refs — no snapshot needed. Values go through the same clearing logic as fill, so email/number fields replace rather than append.

ParametersJSON Schema
NameRequiredDescriptionDefault
withinNoScope: "@dialog", "ref:e5", or a CSS selector.
fields_jsonYesJSON object of {"Label": "value", …}, e.g. {"Email":"a@b.com","Password":"secret"}
submit_labelNoIf set, click the button whose text matches after filling.

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 behavioral disclosure burden. It discloses meaningful behavioral traits: label matching is fuzzy and case-insensitive, no snapshot is needed, and values go through the same clearing logic as fill so email/number fields replace rather than append. It does not describe error handling or effects of within/submit_label, but the core mutating behavior is transparent.

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

Conciseness5/5

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

Two dense sentences carry the essential information with no filler. The primary behavior and distinguishing constraint are front-loaded, and the comparative clause about fill is placed at the end without bloating the description.

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 a simple required fields_json parameter and clear schema descriptions, the description adequately covers the operation and key behavioral nuances. It could mention return values or what happens when no label matches, but those are minor gaps given the schema richness and simple scope.

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 input schema already documents all three parameters with 100% coverage, so the baseline is 3. The description adds high-level semantics about label matching and value clearing, but it does not add per-parameter details beyond what the schema's property descriptions already provide.

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 a specific verb and resource: fill form fields by their LABEL text, with fuzzy and case-insensitive matching. It also immediately contrasts itself with 'instead of refs' and 'no snapshot needed', which clearly sets it apart from tools like fill that rely on refs or snapshots.

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 context for when to use smart_fill: when you know label text and do not have refs or a snapshot. It connects behavior to fill by noting the same clearing logic. However, it does not explicitly exclude or compare against fill_form or find_by_label, so the guidance is clear but not exhaustive.

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 storage against an earlier storage_snapshot — shows exactly which cookies/localStorage/sessionStorage keys were added, removed or changed. The fastest way to find which key holds a session token.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNodefault

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 carries the safety burden; it describes the comparison behavior and the diff output without ever stating explicitly that the operation is read-only or that it does not modify storage. It also does not disclose behavior when no matching earlier snapshot exists. The verb 'compare' suggests non-mutating behavior, but the description leaves side effects and error conditions unstated.

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 filler; the first sentence front-loads the action, resource, and output categories, and the second adds a concrete use case. Every clause 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?

The tool is simple (one optional parameter, no output schema), and the description covers the main output categories and use case, but it leaves the parameter meaning implicit and omits error cases and explicit read-only behavior. It is adequate for a default-invocation call but not complete for custom snapshot names or failure handling.

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, is undocumented in the schema (0% schema description coverage), and the description never explicitly maps name to the snapshot identifier. It only refers to 'an earlier storage_snapshot,' so an agent must infer that name selects that snapshot and has a default value of 'default'. This is insufficient compensation for the missing schema documentation.

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?

States a specific action (compare) against a concrete resource (current storage vs an earlier storage_snapshot) and names the exact output categories: added, removed, or changed cookies/localStorage/sessionStorage keys. This distinguishes it from siblings like storage_snapshot, which would capture rather than diff, and from single-area tools like cookie_export or 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 Guidelines4/5

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

Provides clear when-to-use context, notably the claim that it is the fastest way to find which key holds a session token. It implies a prerequisite (an earlier storage_snapshot must exist) but does not explicitly say to call storage_snapshot first or name alternatives that should not be used. Therefore it stops short of full when/when-not guidance.

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 a named slot, so storage_diff can tell you exactly what an action changed.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNodefault

TDQS

A4.4/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 clearly discloses what data is captured and that it is stored in a named slot. It does not detail whether an existing slot is overwritten or whether snapshots persist, but these are minor gaps for a capture primitive.

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 with no waste: action, payload, destination, and purpose all appear in order. The relationship to storage_diff is included without adding clutter.

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 one optional parameter and no output schema, the description conveys what is captured, where it goes, and why it exists. The only real gap is that it does not describe the return value or what the agent should expect after invoking it, but the storage_diff workflow makes that less 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?

The schema has no descriptions for the 'name' parameter, but the description's 'named slot' gives that parameter meaningful semantics: the slot identifier. The schema already supplies the default value, so the agent can infer that omitted names use 'default'. Slightly more explicit parameter guidance would be even better, but the description compensates well.

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 a specific verb ('Capture'), the exact resources (cookies + localStorage + sessionStorage + URL), and the destination (a named slot). It also names the companion tool storage_diff, making it easy to distinguish from sibling storage/snapshot 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?

The phrase 'so storage_diff can tell you exactly what an action changed' provides a clear pre/post-action workflow context and names the relevant companion tool. It does not explicitly say 'call before an action' or mention when not to use it, but the intended usage is strongly implied.

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 JSON file (created by storage_state_save). Bypass CF/login if session is fresh.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to storage state JSON file
navigate_toNoURL to navigate to after loading (recommended — localStorage requires same-origin)

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 disclosure burden and does reveal the core behavior (loads cookies + localStorage) plus a conditional effect (bypass CF/login on a fresh session). It does not disclose that loading overwrites the current session state, nor what happens on a missing or stale file, which are material for a restore 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?

Two sentences with zero waste, front-loaded with action and resource, and the purpose clause ('Bypass CF/login if session is fresh') earns its place with both intent and a condition. No repetition of schema 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?

For a simple 2-param loader with no output schema, the combination of description and schema covers what is loaded, the source format, the intended use case, and the same-origin navigation requirement (via navigate_to's schema note). It omits return value and overwrite semantics, but those are minor gaps for a straightforward restore 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?

Schema description coverage is 100%, so path and navigate_to are already documented, setting the baseline at 3. The description adds minor context about the file's contents (cookies + localStorage) but no format, syntax, or lifecycle guidance beyond what the schema 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?

States a specific verb (Load) and resource (cookies + localStorage from a JSON file), and names the companion tool that produces the file (storage_state_save). The stated purpose (bypass CF/login) makes it easy to distinguish from siblings like cookie_import or localstorage_set without opening their schemas.

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?

Names the paired producer tool (storage_state_save) and gives a clear use condition ('Bypass CF/login if session is fresh'), which tells an agent when this restore path is effective. It stops short of 5 because it never explicitly contrasts alternatives such as cookie_import or auth_capture or states 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.

storage_state_saveA

Save cookies + localStorage to a JSON file. Reload via storage_state_load on a fresh browser to skip login/CF entirely.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesOutput file path (e.g. ~/.camoufox-mcp/sessions/site.json)

TDQS

A4.1/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 core behavior—persisting cookies and localStorage to a JSON file—but does not state whether an existing file is overwritten, whether parent directories are created, or whether the saved state covers all origins or only the current one.

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 filler. The action is front-loaded, and the second sentence adds valuable usage context about reloading the state to skip login/CF.

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 one-parameter save operation, the description covers what is saved, where it goes, and how to restore it. No output schema is present, but an agent has everything needed 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.

Parameters3/5

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

The schema already documents path with a concrete example and 100% coverage. The description adds no new parameter-level detail beyond confirming the tool writes to a JSON file, so the baseline score of 3 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 states a specific verb and resource: save cookies + localStorage to a JSON file. This is clearly distinct from siblings like cookie_export or localstorage_get because it bundles both into a single reloadable file, and it names the matching storage_state_load counterpart.

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 context for when to use it: before launching a fresh browser, so the saved state can skip login/CF. It names storage_state_load as the reload counterpart, but it does not explicitly say when not to use it or how it compares with alternatives like cookie_export_file or auth_capture.

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

tab_closeA

Close a tab by index (-1 = active), or by url_contains.

ParametersJSON Schema
NameRequiredDescriptionDefault
indexNo
url_containsNoClose the first tab whose URL contains this substring (overrides index).

TDQS

A3.6/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, but it only mentions the core close action and selection semantics. It does not disclose what happens when the index or url_contains does not match a tab, whether the close is irreversible, or what effect closing the active tab has.

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, front-loaded sentence that communicates operation and both selection modes with no filler. It is compact and immediately parseable.

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 two-parameter tool with no required fields and no output schema, the description is largely self-contained: it explains both selection modes and the active-tab default. It lacks edge-case behavior, but those are minor for a close 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 description adds meaning to the otherwise undocumented index parameter by explaining that -1 targets the active tab, and it identifies url_contains as an alternative selector. The schema separately documents that url_contains overrides index, so the description covers the main semantic 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 states the operation (close) and resource (a tab), and specifies the two selection modes: by index with -1 meaning active, or by url_contains. This is immediately distinguishable from tab_new, tab_select, 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 Guidelines2/5

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

There is no guidance about when to use this tool rather than alternatives such as browser_close, or any conditions or exclusions. The description only defines the close action; an agent is left to infer that this is the tool for tab-level closure.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 carries the full burden of behavioral disclosure. 'List' clearly indicates a read-only operation with no side effects, which is useful. However, it does not mention ordering, whether hidden tabs are included, or any other behavioral nuances that could matter to 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, front-loaded sentence with no filler. It communicates the essence of the tool in five words and is easy to scan.

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 zero-parameter tool, the description is minimally sufficient to invoke it correctly. However, there is no output schema, and the description does not specify what information the returned list contains (e.g., tab IDs, titles, URLs), which an agent might need for downstream actions like tab_select.

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 there are no parameter semantics to explain. Per the rubric, a zero-parameter tool earns a baseline of 4; the description adds nothing about parameters because none exist.

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 ('List') and a clear resource ('all open tabs'), making the tool's function immediately obvious. It also distinguishes itself from sibling tab tools (tab_new, tab_select, tab_close) by focusing solely on enumeration.

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 intended use is implied: call this tool when you need to see the currently open tabs. However, there is no explicit guidance about when to prefer this over alternatives like tab_select or tab_close, nor any mention of context or prerequisites.

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

tab_newB

Open new tab.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoabout:blank

TDQS

B3.3/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 of behavioral disclosure. It only states the action but does not mention whether the new tab becomes active, what happens if url is omitted, whether a tab ID is returned, or how failures are handled.

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 three words with zero filler and immediately conveys the core action. For such a simple tool, this is appropriately concise and front-loaded.

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 the tool's simplicity, there are unanswered questions: focus behavior, return value, URL handling, and whether opening a new tab has side effects like changing tab state. With no output schema and no annotations, these gaps matter for correct invocation and interpretation.

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 for the parameter's meaning. The description does not mention the url parameter at all, leaving the agent to infer its semantics solely from the name and default value.

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 new tab' names a specific verb and resource, distinguishing it from related tab tools like tab_select, tab_list, and tab_close. Even without explicit sibling comparisons, the action and target are 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 intended usage is implied by the phrase itself: use when you want a new browser tab. However, there is no explicit guidance about when to prefer this over navigate or tab_select, nor any mention of alternatives or exclusion cases.

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 a tab by index, or by url_contains (first tab whose URL contains the substring).

ParametersJSON Schema
NameRequiredDescriptionDefault
indexNoTab index. Ignored if url_contains is set.
url_containsNoSelect the first tab whose URL contains this substring.

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 carries the burden of behavior and does disclose an important rule: url_contains selects the first matching tab. However, it does not explain what happens when no tab matches, or what the default index -1 means when no args are provided, which are meaningful 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?

A single sentence that front-loads the main action and packs both selection modes without filler. Every word contributes to understanding the 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?

This is a low-complexity tool with complete schema documentation, so the description does not need much. Still, the missing explanation of default index -1 behavior and no-match handling leaves the agent without full guidance for edge-case calls.

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 100%, so the baseline is 3. The description adds the 'first tab whose URL contains' rule, but this duplicates the schema's parameter description and adds little new semantic value beyond it.

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?

States a specific action (switch to), a distinct resource (an existing browser tab), and both selection modes (index or url_contains). This clearly distinguishes it from tab_new, tab_list, and tab_close siblings without needing to name them.

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 communicates that this tool is for activating an existing tab, which is clear context for when to reach for it. It does not explicitly exclude alternatives or list when-not-to-use, but the intended use is obvious from the action and sibling set.

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

type_textA

Type text char by char via keyboard.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
delayNoDelay between keys (ms)

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 carries the full burden. It discloses one meaningful behavioral trait (char-by-char keyboard simulation), which differentiates it from paste_text. However, it omits important behavior such as whether text goes to the currently focused element, what happens if nothing is focused, and whether special characters are handled literally.

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, front-loaded sentence stating exactly what the tool does with no filler or redundancy. Every word 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?

For a simple two-parameter tool, the description plus schema covers the basic invocation. However, it leaves out the critical targeting context that the text is typed into the active/focused element and the expected behavior when no focus is present, so an agent may misuse it without consulting additional tools or docs.

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 50%: delay is documented but the required text parameter has no schema description. The description clarifies that text is the string to type, and the tool itself names the parameter, but it adds no further semantics like encoding, newline handling, or whether delay is applied uniformly.

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?

States a specific action (type), object (text), and method (char by char via keyboard). This distinguishes it from siblings like paste_text (one-shot paste) and humanize_type (humanized delays) even without naming them.

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 about when to use type_text instead of alternatives such as paste_text, fill, humanize_type, or press_key. There are no conditions, prerequisites, or exclusions; an agent would have to infer usage from the name and one-line description.

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

uncheckC

Uncheck a checkbox.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYes

TDQS

C2.6/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 of behavioral disclosure. It states the core state-changing action but says nothing about side effects, error behavior, idempotence, whether change events are triggered, or what happens if the referenced element is not a checkbox.

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 clear sentence with no filler words. It is appropriately brief for a simple tool, though the lack of parameter explanation means brevity comes at the cost of completeness outside this dimension.

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 one-parameter action with no annotations and no output schema, the description should at least clarify what 'ref' refers to and note the relationship to similar tools. It does neither, leaving significant gaps for an agent trying to invoke it correctly in a real browsing 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 description coverage is 0%, and the description does not explain the meaning or expected format of the 'ref' parameter. The agent must guess whether ref is a selector, snapshot reference, DOM id, or some other identifier, so the description adds no value beyond the schema's bare string type.

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 clear action and target: 'Uncheck a checkbox.' It names a specific verb and resource, making the tool's purpose immediately understandable. However, it does not explicitly distinguish itself from the sibling 'check' tool or mention the role of the ref parameter, so it falls just short of full 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?

There is no guidance on when to use this tool versus alternatives such as 'check', 'click', or 'fill'. The description implies usage only through the tool name and one-line purpose, with no context about prerequisites, selection criteria, 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 file to file input.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYes
file_pathYes

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 must carry the full behavioral disclosure burden. It merely states the action without explaining what happens to the file, whether it triggers change events, how existing content is handled, or what errors may occur. This is too opaque for a mutating 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, front-loaded sentence with no filler. It is concise and readable, but it is so short that it sacrifices helpfulness for brevity.

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 low complexity (2 required params, no output schema), a minimal description might suffice, but this one omits critical operational details like how to identify the target input, whether the file path must be absolute, and what behavior follows a successful upload. An agent would be uncertain about correct 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?

Schema description coverage is 0%, and the description does not explain the meaning or expected format of 'ref' or 'file_path.' The parameter names are somewhat self-explanatory, but the description adds no value beyond the raw schema, leaving ambiguity about how to reference the file input and what file path format is expected.

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 uses a clear verb-resource pair: 'Upload file to file input.' It specifies the action and the target, distinguishing it from other form-filling tools like fill or type_text. However, it could be more explicit about that it is setting an <input type=file> element rather than uploading to a server.

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 fill, paste_text, or evaluate. The context is implied only by the tool name and description; there are no mention of prerequisites (e.g., file existence, input visibility) or exclusions.

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

wait_and_snapshotA

Wait for selector/text then return snapshot. Combines wait_for + browser_snapshot in one call.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoText to wait for
stateNovisible
timeoutNo
selectorNoCSS selector to wait for

TDQS

A3.7/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 behavioral burden, and it does disclose the core behavior: it waits for a selector/text condition and then returns a snapshot. However, it does not disclose timeout behavior, the format of the returned snapshot, or how selector and text interact when both are supplied. These are notable gaps given the absence of any annotation support.

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 with zero filler: the first states the core behavior and the second explains its relationship to sibling tools. The key behavior is front-loaded and every word 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 four parameters including a four-valued state enum, no output schema, and no annotations, the 25-word description leaves essential gaps. It does not explain what the returned snapshot contains, what happens when the wait times out, or what 'attached' vs 'hidden' vs 'detached' mean in the context of this 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 description coverage is only 50%—text and selector have schema descriptions, while state and timeout do not—and the tool description adds no meaning beyond repeating 'selector/text' as the wait targets. The state enum (visible/hidden/attached/detached) and timeout semantics are left entirely undocumented in both the schema and the description, so the description fails to compensate for the coverage 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 states a concrete behavior—'Wait for selector/text then return snapshot'—with a specific verb and resource. Naming the composition, 'Combines wait_for + browser_snapshot in one call,' distinguishes it from snapshot siblings like click_and_snapshot and navigate_and_snapshot, as well as from wait_for and browser_snapshot individually.

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 phrase 'Combines wait_for + browser_snapshot in one call' gives clear context and implicitly names the alternative: invoking those two tools separately. It does not state explicit when-not-to-use conditions, such as needing intermediate actions between the wait and the snapshot, or when wait_for_navigation or wait_for_any_of would be the appropriate wait primitive.

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

wait_forB

Wait for element/text to appear or disappear.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoText to wait for
stateNovisible
timeoutNo
selectorNoCSS selector

TDQS

B3.1/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 the full burden. It discloses the basic wait-for-appear/disappear behavior, but does not describe what happens on timeout, whether it throws or returns a boolean, polling semantics, or how visible/hidden/attached/detached map to 'appear/disappear'.

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, focused sentence with no redundancy. It is front-loaded and every word contributes to the core meaning.

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 4 parameters, no output schema, no annotations, and a large set of closely related wait_* siblings, the description is too thin to fully equip an agent. Missing pieces include timeout failure behavior, return value, state semantics, and differentiation from similar wait tools.

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 only 50%, and the description adds no detail about the 'state' enum or 'timeout' semantics. It only hints at the text/selector split with 'element/text', while leaving state values, timeout units, and matching behavior unexplained.

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 states a specific verb ('Wait') and a specific resource ('element/text') plus the outcome ('appear or disappear'). This clearly differentiates it from navigation/network wait siblings like wait_for_navigation or wait_for_response.

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 given on when to use this tool versus wait_for_navigation, wait_for_any_of, wait_for_change, or wait_for_network_idle. The agent is left to infer context from the name and the sparse description, with no exclusion or alternative suggestions.

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

wait_for_any_ofA

Race multiple wait conditions — returns the first that matches, so the agent can branch immediately without sequential probes. Each condition is {kind: 'selector'|'text'|'url_contains'|'title_contains', value: string}. Returns the index + kind + value of the winning condition (or 'timeout' if none matched). Ideal for post-login flows where the next page could be any of several (e.g. 'Stay signed in?', 'Skip for now', or the inbox directly).

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNoMax wait in ms
conditionsYesConditions to race. First match wins.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations and no output schema, the description carries the full behavioral burden and largely delivers: it discloses the race semantics, the success return (index + kind + value), and the timeout contract (returns 'timeout' rather than throwing). It omits edge cases like invalid selector strings or malformed conditions, but the core runtime behavior is transparent.

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

Conciseness5/5

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

Four sentences, each earning its place: differentiator, condition shape, return contract, and a vivid example. The racing concept is front-loaded, and the 'Stay signed in? / Skip for now / inbox' example conveys the branching use case with zero waste and no repetition of schema 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?

For a 2-parameter tool with no output schema and no annotations, the description covers behavior, condition format, return values for both outcomes, and a usage scenario — near-complete. Minor gaps: 'index' is never explicitly defined as the position in the conditions array, and error behavior for invalid condition kinds is unstated.

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 100% — timeout is documented as 'Max wait in ms' and conditions as 'Conditions to race. First match wins.' — so the baseline is 3. The description does add the condition object shape and the concrete enum values, but the schema already encodes the kind enum, and the added return-format detail pertains to output rather than parameter meanings. Net value over the schema is modest.

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 opens with a specific verb-resource combination — 'Race multiple wait conditions' — and immediately sets it apart from single-condition wait siblings (wait_for, wait_for_url) via the racing and first-match-wins semantics. The stated purpose ('so the agent can branch immediately without sequential probes') makes the tool's role 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?

Provides clear, concrete context with a named scenario: 'Ideal for post-login flows where the next page could be any of several.' It implicitly contrasts with sequential probing but never names a specific alternative tool or states when NOT to use it, so the guidance is context-rich but stops short of explicit exclusion routing.

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

wait_for_changeA

Wait until the page actually CHANGES and report what changed (url / title / DOM size / text). This is the honest version of a fixed sleep after a click: it returns as soon as something happened, or tells you nothing did.

ParametersJSON Schema
NameRequiredDescriptionDefault
poll_msNo
timeoutNo
settle_msNoRequire the page to stay stable this long after the change.

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 behavioral burden. It discloses the core mechanism: wait until a change, return as soon as something happened, or report that nothing did. It does not mention timeout or polling details explicitly, but those are partially covered by defaults and the settle_ms schema description.

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 efficient sentences: the first front-loads the core purpose and return value, the second gives a useful behavioral contrast. Every phrase earns its place with no filler.

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 tool with optional params and no output schema, the description explains the trigger (page change), the observed signals (url, title, DOM size, text), and both return outcomes (something changed / nothing did). It skips explicit polling and timeout details, but the schema defaults and settle_ms description fill most of the remaining 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 description coverage is only 33% (only settle_ms has a description), and the tool description does not mention poll_ms or timeout at all. The parameter names and defaults are somewhat self-explanatory, but the description fails to compensate for the low coverage, leaving two parameters without meaningful guidance.

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?

States a specific verb (wait until), a resource (the page), and the exact reported signals (url / title / DOM size / text). The 'honest version of a fixed sleep' line separates it from generic waits, making its unique role among siblings clear without naming them.

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 concrete when-to-use context: after a click, when you need to wait for an actual change. It contrasts itself with a fixed sleep, telling the agent what not to do, though it does not name sibling wait tools 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.

wait_for_navigationC

Wait for page load to complete.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNo

TDQS

C2.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 the full burden of behavioral disclosure. It does not explain what 'page load complete' means (DOMContentLoaded, load event, network idle), what occurs on timeout, whether errors are thrown, or if it waits for frames/subresources. This is a critical gap for a blocking 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 focused sentence with no filler, and the core purpose is front-loaded. It is concise, though perhaps too terse given the missing behavioral 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?

For a tool with no annotations, no output schema, and zero schema coverage, this description is insufficient. It omits timeout behavior, failure semantics, relationship to sibling wait tools, and what constitutes a completed page load. An agent cannot confidently invoke this tool correctly based on the current definition.

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 the timeout parameter, but it does not mention it at all. The agent is left to infer that the timeout parameter controls the maximum wait duration, which is not guaranteed and could be misused.

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 clear verb ('wait') and resource ('page load'), and the phrase 'to complete' clarifies the condition being awaited. It is distinguishable at a high level from arbitrary wait_for, but it does not explicitly differentiate itself from navigation-specific siblings like wait_for_url, wait_for_response, or wait_for_network_idle.

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 the many sibling wait tools. There is no mention of whether it should follow navigate, reload, or go_back, nor when to prefer wait_for_url or wait_for_network_idle.

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 there are no in-flight requests for idle_ms continuously. Requests are counted from the moment the page was opened, so one that was ALREADY in flight when you call this is not mistaken for idle.

ParametersJSON Schema
NameRequiredDescriptionDefault
idle_msNoHow long the network must stay quiet before returning.
timeout_msNo

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations present, the description carries the behavioral burden and does disclose a non-obvious detail: requests are counted from page open, so pre-existing in-flight requests do not count toward the idle check. It stops short of describing timeout failure behavior or return value, but the core waiting semantics are 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 focused sentences, with the essential behavior in the first and a valuable edge-case clarification in the second. No filler.

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 two-parameter wait tool with no output schema, the description covers the main mechanism and a key counting detail. The only meaningful gap is the unexplained timeout_ms behavior, but the parameter name and default make it inferable.

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 only 50%. The description contextualizes idle_ms ('for idle_ms continuously') but adds little beyond the schema's own description, and timeout_ms is never mentioned or explained in either the schema or the description. For a low-coverage schema, the description should compensate more.

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 precise verb and resource: it waits for a network condition (no in-flight requests for a continuous idle window). It also adds the page-open counting nuance, which clearly separates it from generic wait_for or 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 Guidelines3/5

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

The intended use is implied—call it when you need the network to settle before proceeding—but the description never explicitly says when to prefer it over sibling wait_for, wait_for_navigation, or wait_for_response tools, nor what situations it is not suited 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 the page ISSUES a request matching a URL substring (wait_for_response waits for the reply). Use it to confirm an action actually fired its API call.

ParametersJSON Schema
NameRequiredDescriptionDefault
methodNoOptional HTTP verb filter (GET/POST/…)
timeoutNo
url_patternYes

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 carries the full burden, and it does disclose blocking semantics and substring-matching behavior rather than restating the tool name. However, it omits timeout behavior, what happens if no request matches, and return/error details, all of which matter because there is no output 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 compact sentences place the core blocking behavior first, followed by the sibling contrast and the use case. There is no filler, repetition, or unnecessary detail.

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 wait tool, the description covers purpose, matching rule, and sibling selection, while the schema covers parameter definitions. The missing timeout/error behavior and return value are notable because there is no output schema or annotations, but the low complexity keeps the gap moderate.

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 only 33%, so the description needed to compensate for undocumented parameters. It usefully clarifies url_pattern as a substring match, but says nothing about timeout semantics or units, and only repeats the schema's one-line method filter without adding 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 names a specific behavior ('Block until the page ISSUES a request matching a URL substring') and explicitly contrasts itself with wait_for_response. The use-case sentence further clarifies it confirms an API call actually fired, making it easy to distinguish 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 Guidelines4/5

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

The description explicitly gives the primary use case ('Use it to confirm an action actually fired its API call') and names the closest alternative (wait_for_response) as the reply-oriented counterpart. It does not explicitly contrast with the other wait-family siblings like wait_for_url or wait_for_navigation, so exclusions are incomplete.

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 matching a URL pattern.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNo
url_patternYesURL substring to match

TDQS

B3.2/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 of behavioral disclosure. It only restates that the tool waits for a network response; it does not disclose timeout behavior, rejection on timeout, whether this tool initiates the request, or what the returned value is.

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 focused sentence with no filler, and the core behavior is front-loaded. It loses points only because the brevity leaves out important behavioral context rather than because of verbosity.

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?

There is no output schema and no annotations, so the description should clarify what happens after the wait succeeds or times out. An agent invoking this tool does not know what the response looks like, whether a failure throws, or whether the wait is interruptible, making the definition incomplete for correct invocation.

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 only 50%, with timeout lacking any schema documentation. The phrase 'URL pattern' largely duplicates the existing 'URL substring to match' description and adds no detail about timeout units, default behavior, or pattern syntax, failing to compensate for the undocumented 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 states a clear operation and resource: waiting for a network response matching a URL pattern. It is specific enough to differentiate from related siblings like wait_for_navigation or wait_for_network_idle, and the 'response' wording distinguishes it from wait_for_request.

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 sentence implies the tool should be used when the agent needs to block until a particular network response is seen. However, it does not explicitly say when to prefer this over wait_for_request, wait_for_network_idle, or wait_for_any_of, nor does it mention that the triggering request/action should already be started elsewhere.

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 for URL to match a pattern.

ParametersJSON Schema
NameRequiredDescriptionDefault
patternYesURL substring or regex pattern
timeoutNo

TDQS

C2.6/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 of behavioral disclosure. It does not explain what happens on timeout, whether an error is thrown or a boolean is returned, whether it polls repeatedly, or how it relates to the current page navigation. The behavior is only minimally implied by 'Wait'.

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 short and front-loaded, but it is under-specified rather than appropriately concise. It earns its place as a sentence, yet it omits behavioral and usage details that would make the tool safe to invoke without further inference.

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 lack of annotations, no output schema, and a partially described schema, the description is not complete enough. An agent cannot tell what happens on failure, how timeout works, or how this tool differs from the many related wait/assert tools in the sibling list.

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 schema provides descriptions for only one of two parameters (50% coverage), and the description adds no additional meaning beyond the term 'pattern'. The timeout parameter and its behavior are left undocumented in both the description and the schema, so the description does not compensate for the coverage 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 a clear verb ('Wait') and resource ('URL to match a pattern'), so an agent can understand the basic operation. It is not a tautology and is distinguishable from siblings like wait_for_response or wait_for_request, though it does not explicitly name those alternatives.

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 about when to use this tool versus alternatives such as assert_url_matches, wait_for_response, or wait_for_request. The description only states what it does, not the conditions under which it should be chosen or avoided.

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

workflow_runA

Run a list of tool calls in sequence — any tool this server exposes, by name — and return a per-step log. Resumable: a failed run tells you the index, and start_at skips the steps that already succeeded. Each step is {"tool":"navigate","args":{"url":"…"},"label":"optional"}.

ParametersJSON Schema
NameRequiredDescriptionDefault
stepsYesSteps to execute in order.
start_atNoSkip the first N steps (resume after a failure).
stop_on_errorNo

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations present, the description carries the full burden. It discloses per-step logging, the failure index behavior, and that start_at skips already-succeeded steps. It does not explain stop_on_error semantics or the side-effect profile of executing arbitrary tools, but it gives substantially more than a bare summary.

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 tightly packed sentences deliver the core action, resumption behavior, and a concrete step format. The inline JSON example is efficient and earns its place; there is no filler.

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 complex orchestration tool with no output schema and no annotations, it covers the step shape, logging, and resume flow well. Remaining gaps are the exact per-step log return format and the behavior of stop_on_error when false, which an agent would need when handling failures.

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 67%. The description adds real value by giving a concrete step example with tool, args, and label marked optional, and by re-explaining start_at as resume-after-success semantics. The stop_on_error parameter lacks explanation, but its default true and the failure-index behavior make it less critical.

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 opens with a specific verb phrase, 'Run a list of tool calls in sequence', and identifies the exact resource, 'any tool this server exposes'. It also differentiates from the many single-action siblings by describing orchestrated execution and per-step logging, with a concrete step example.

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 clearly conveys when to use the tool: when multiple tool calls must be executed in order. It adds resuability as a concrete reason to choose it. It does not explicitly name alternatives or include when-not-to-use conditions, but the context is strong enough to guide selection.

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

TDQS

B3.1/5.0
Disambiguation2/5

There are many near-synonymous tools for core actions: at least nine click variants, seven wait variants, and multiple snapshot/scrape/extract tools. The descriptions are detailed, but an agent still faces frequent ambiguity about which variant fits a given situation.

Naming Consistency3/5

All names are snake_case and readable, but the verb/noun pattern is inconsistent: browser_launch and tab_new are noun_verb, get_url and cookie_list are verb_noun, and many tools are bare verbs like navigate, reload, hover, and scroll. There is no single predictable convention, though the mixed style is still navigable.

Tool Count1/5

133 tools is an extreme count for any server, even a broad browser-automation toolkit. The surface area is bloated with specialized variants that could plausibly be consolidated, making the set hard to scan and reason about.

Completeness5/5

The domain is thoroughly covered: browser lifecycle, navigation, interaction, extraction, network capture, storage, cookies, dialogs, frames, anti-bot evasion, session management, and compound workflows all have dedicated tools. There are no obvious dead ends or major missing operations.

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
    D
    maintenance
    An MCP server for stealth browser automation that uses human-like interaction patterns to bypass bot detection via the Chrome DevTools Protocol. It enables users to navigate, interact with elements, and capture data from websites using undetectable behaviors like Bezier mouse movements and Gaussian typing delays.
    165
    1
    MIT
  • A
    license
    A
    quality
    F
    maintenance
    An MCP server that provides LLMs with stealth browser automation capabilities via CloakBrowser to bypass bot detection services like Cloudflare and reCAPTCHA. It supports full page interaction, content extraction, and human-like behavior through 30 specialized tools.
    20
    12
    Apache 2.0
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Undetectable browser automation server for MCP-compatible AI agents, offering 225 tools across 32 sections to navigate, extract, clone pages, and bypass antibot systems like Cloudflare.
    1
  • A
    license
    A
    quality
    F
    maintenance
    A stealth browser automation MCP server that wraps CloakBrowser's patched Chromium to bypass bot detection, providing 22 tools for web navigation, interaction, and session management.
    24
    2
    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-camoufox'

If you have feedback or need assistance with the MCP directory API, please join our Discord server