EyeBrowse
EyeBrowse is an MCP server that drives a stealth Chromium browser (resistant to anti-bot systems like Cloudflare and DataDome) with 81 tools for web automation via the Chrome DevTools Protocol.
Session & Tab Management
Create, close, and list isolated browser sessions with optional proxies and randomized fingerprints
Manage multiple tabs; switch to popups and OAuth windows
Navigation
Navigate to URLs, go back/forward, reload, and wait for text, selectors, URL changes, or network idle
Page Inspection
Capture the ARIA accessibility tree with
[ref=...]handles (browser_snapshot)Take screenshots (viewport, full-page, or element), read console messages, resize the viewport
Interaction
Click (single, double, right-click), type, hover, select dropdowns, drag, upload files, press keys
Fill multiple form fields at once; accept/dismiss JS dialogs
Low-level mouse control by coordinates (move, click, scroll, drag)
Scrolling & JavaScript
Scroll by direction/amount, scroll elements into view, auto-scroll infinite pages
Execute arbitrary JS in the page or cross-origin iframes
Network Inspection & Control
Inspect XHR/fetch requests and WebSocket messages
Block URLs, mock responses, toggle offline mode, set custom HTTP headers, export HAR files
Wait for file downloads
Storage Management
Full CRUD on cookies, localStorage, and sessionStorage
Save and restore complete browser state
Captcha Solving & Auth
Solve Turnstile, reCAPTCHA v2/v3, hCaptcha, and FunCaptcha
Generate TOTP codes for two-factor authentication
Content Extraction
Extract rendered page content as clean, token-efficient markdown
Recording & Tracing
Record sessions to MP4, WebM, or GIF; capture Playwright traces for debugging
Verification & Debugging
Assert element visibility, text presence, and input values
Highlight elements, generate stable CSS selectors
Emulation
Override geolocation, grant browser permissions (camera, microphone, notifications, etc.)
Provides a stealth browser engine that bypasses Akamai bot detection, enabling automated web interactions such as navigation, form filling, and data extraction without being flagged as a bot.
Provides a stealth browser engine that bypasses Cloudflare bot detection, enabling automated web interactions such as navigation, form filling, captcha solving, and data extraction without being flagged as a bot.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@EyeBrowseNavigate to https://news.ycombinator.com and summarize the top story"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ποΈ EyeBrowse
A stealthy, LLM-drivable browser engine β one codebase, two faces.
A Python library and an MCP server for driving a real, hard-to-detect browser, so legitimate automation isn't false-flagged or IP-banned by Cloudflare, DataDome, Akamai, or PerimeterX. Built on CloakBrowser β a stealth Chromium (Chrome/146) that's a Playwright drop-in β so EyeBrowse gets the full Chrome DevTools Protocol: trusted cursorless clicks, deep network inspection, MHTML, PDF, and native video.

βΆ Full-quality MP4: docs/demo.mp4 β an AI agent drives EyeBrowse over MCP: clears a Cloudflare check, then reads real docs (asyncio Β· httpx Β· MDN).
Why EyeBrowse?
π₯· Stealth by default β engine-level fingerprint spoofing (
geoip+humanizeon out of the box, novel fingerprint per launch);navigator.webdrivermasked; viewport auto-sized to the spoofed screen. Nopuppeteer-extraband-aids β the anti-detection is compiled into the browser.π€ Built for LLMs β pages are read as an ARIA tree with
[ref=β¦]handles; the model acts by ref (click/type/hover), not by brittle CSS or raw pixels. Cross-origin iframes, shadow DOM, popups β handled.β‘ Chrome DevTools Protocol β trusted, cursorless clicks by node ref (
Input.dispatchMouseEvent), rawNetwork/Performance/Emulationaccess, MHTML snapshots, PDF export, and native video β all reachable as tools.π§° Library and MCP from one codebase β a clean Python API (
EyeBrowse+Session), mirrored 1:1 by a thin MCP server (85browser_*tools) for Claude Code and any MCP client.πͺ Never boxed in β the curated high-level API doesn't hide Playwright: reach
session.page/.context/.browserfor anything it doesn't wrap.π Batteries included β multi-session, proxy + identity rotation, API-mode captcha solvers, native video, full HAR capture, and clean-markdown extraction.
Scope. EyeBrowse is a low-level browser engine β it holds no workflow logic. Consumers decide what to do; the engine provides what's possible.
Related MCP server: zendriver-mcp
Contents
Quickstart Β· Install Β· Features Β· Compare Β· Library Β· MCP Β· Proxy & identity Β· Extraction Β· Recording Β· How it works Β· Caveats Β· Tools Β· License
Quickstart
pip install eyebrowse
# The stealth-Chromium binary downloads automatically on first launch β nothing else to run.import asyncio
from eyebrowse import EyeBrowse
async def main():
eb = EyeBrowse() # stealth defaults: geoip Β· humanize
async with eb.session() as s:
await s.navigate("https://example.com")
print(await s.snapshot()) # ARIA tree with [ref=...] handles
await s.click("e6") # act on a ref from the snapshot
await eb.aclose()
asyncio.run(main())β¦or wire it into Claude Code (or any MCP client) β see Use over MCP.
Install
From PyPI
pip install eyebrowse # or: uv pip install eyebrowse
# CloakBrowser fetches its Chromium binary lazily on first launch β nothing to run.
pip install "eyebrowse[extract]" # optional: + Crawl4AI markdown extraction (heavier)From source (development)
git clone https://github.com/Evil-Bane/eyebrowse && cd eyebrowse
uv sync # core engine (add --extra extract for Crawl4AI)
cp .env.example .env # only if you use a proxy / captcha keysPython 3.12 (pinned <3.13). Engine: cloakbrowser>=0.3 (stealth Chromium, Chrome/146), on
playwright 1.60 and mcp 1.27.
Features
π₯· Stealth | CloakBrowser's patched-Chromium fingerprint spoofing (novel |
π€ LLM interaction |
|
β‘ CDP | trusted cursorless click by ref, raw CDP ( |
πͺ Frames & DOM | cross-origin iframe routing by ref, shadow-DOM piercing, popup/new-tab switching, |
π Multi-session | independent stealth sessions, each with its own context / identity / proxy. |
π Network | inspect requests/responses (incl. XHR/fetch bodies & WebSocket frames), block URLs, mock responses, go offline, full HAR export. |
πΎ State | cookies, localStorage & sessionStorage (CRUD), |
πͺͺ Identity rotation | fresh fingerprint + isolated profile + paired proxy; pluggable residential |
π§© Captcha | pluggable API-mode solvers (CapSolver / 2Captcha / CapMonster / NextCaptcha) + TOTP β no browser extension. |
π Extraction | Crawl4AI |
π₯ Capture | screenshots, Playwright tracing, and native video ( |
β Verify & debug | assertions, element highlighting, locator generation, geolocation/header emulation. |
Full per-tool reference: docs/TOOLS.md (85 tools across 18 groups).
How EyeBrowse compares
EyeBrowse | Playwright MCP | browser-use | playwright-stealth | |
Anti-detection compiled into the browser | β | β | β | β οΈ JS patches |
LLM-native ARIA | β | β | β | β |
Ships an MCP server | β (85 tools) | β | β οΈ partial | β |
One codebase: Python library and MCP | β | MCP-only | lib-only | lib-only |
Full CDP (trusted clicks Β· network Β· MHTML Β· PDF Β· video) | β | β οΈ partial | β | β οΈ partial |
Captcha (API-mode) + TOTP | β | β | β | β |
Proxy + identity rotation built in | β | β | β οΈ partial | β |
Cross-origin iframes Β· shadow DOM Β· popups | β | β | β οΈ partial | n/a |
Fair-use note: each project targets a different niche β this compares them on the axes EyeBrowse optimizes for (stealth + LLM-drivable + one library/MCP codebase), not as an overall ranking.
Use as a library
import asyncio
from eyebrowse import EyeBrowse
async def main():
eb = EyeBrowse() # stealth defaults
try:
async with eb.session() as s: # a stealth session (auto-closed)
await s.navigate("https://example.com")
print(await s.snapshot()) # ARIA tree with [ref=...] handles
await s.click("e6") # act on a ref
await s.type("e8", "hello", submit=True)
png = await s.screenshot(full_page=True)
title = await s.page.title() # full Playwright power when you need it
finally:
await eb.aclose()
asyncio.run(main())Run the included proof: uv run python examples/direct_usage.py.
Use over MCP
EyeBrowse ships an MCP server (eyebrowse-mcp, FastMCP over stdio). Add it to any MCP client.
Claude Code (CLI):
claude mcp add eyebrowse -- eyebrowse-mcpAny MCP client (JSON config):
{
"mcpServers": {
"eyebrowse": {
"command": "eyebrowse-mcp"
}
}
}Then drive the loop: browser_navigate(url) β read the snapshot β act by ref
(browser_click / browser_type / β¦). A default session is auto-created, so most tools just
work. Full list: docs/TOOLS.md.
Proxy & identity (optional)
Runs proxyless by default (geoip still aligns locale/timezone to your real IP). Add a proxy
only when you want one:
await eb.new_session(proxy="http://user:pass@residential.example:8080")
await eb.rotate_identity(proxy="socks5://host:1080") # fresh fingerprint + paired IP
await eb.new_session(no_proxy=True) # force proxylessSet a default once via EYEBROWSE_PROXY_* in .env, eb.set_static_proxy(...), or a custom
ProxyProvider for rotation. Over MCP: browser_new_session(proxy_url=β¦) /
browser_new_identity(proxy_url=β¦) / browser_set_proxy(β¦).
reCAPTCHA v3 / reputation gates are score-based and key off IP + session reputation β a fresh browser on a flagged IP fails regardless of stealth. Pair EyeBrowse with a clean residential proxy.
Extraction
eb.extract() (or browser_extract) hands the rendered HTML to Crawl4AI's raw: feed and
returns clean, pruned markdown β no LLM is called and no LLM keys are ever read; the
consuming agent does any structuring.
md = await eb.extract() # markdown string
res = await eb.extract(output_path="data/page.md") # β {"path": ..., "chars": ...}Recording
Native video β Playwright records the whole session to a .webm, written on close. The path
is known up-front; the file finalizes when the session closes:
s = await eb.new_session(record_video=True)
# ... drive the browser ...
print(await s.video_path()) # path is known up-front; file finalizes on close
await eb.close_session(s.id)Over MCP: browser_new_session(record_video=True) β browser_video_path. Want a GIF for a README?
Convert the .webm with ffmpeg (ffmpeg -i demo.webm demo.gif). The demo at the top was captured
this way β see examples/make_demo.py.
How it works
CONSUMERS ENGINE (library: eyebrowse/)
Claude Code ββMCPβββΆ mcp/ βββΆ EyeBrowse faΓ§ade (public API)
your code β import βββββββββββΆ ββ BrowserEngine (CloakBrowser / stealth Chromium)
any MCP client ββ proxy / identity rotation (pluggable)
ββ captcha solvers (pluggable, API-mode)
ββ Crawl4AI (raw: feed) β clean markdownThe faΓ§ade (EyeBrowse + Session) is the product; the MCP adapter is a thin 1:1 wrapper over
it. The high-level API is curated and LLM-friendly β not a reimplementation of all of Playwright
β and the raw page / context / browser objects are always one attribute away. The launcher
is the only engine-specific layer; everything else is plain Playwright.
Caveats
Worth knowing:
evaluateruns in the page's main world (page globals reachable). To override a page's widget globals and fire a site callback (e.g. for captcha), EyeBrowse injects a<script>so the code runs in the page world β seecaptcha/inject.py.HAR export closes the session β Playwright only flushes the HAR buffer when the context closes. Use the checkpoint pattern:
browser_storage_stateβbrowser_har_exportβbrowser_new_session(storage_state=...). For the initiator-rich Chrome HAR (JS call stacks), reach theNetwork.*domain viabrowser_cdp_send.Native video is
.webmβ convert to GIF/MP4 with ffmpeg if you need another format.
Project layout
eyebrowse/
api.py EyeBrowse faΓ§ade β the single public entry point
config.py settings / secrets (pydantic-settings)
snapshot.py aria_snapshot(mode="ai") + aria-ref= resolution
proxy.py ProxyConfig + pluggable ProxyProvider
identity.py Identity + random_identity() (isolated profile dir)
extract.py Crawl4AI raw: feed β markdown (lazy, optional dep)
engine/ engine.py (CloakBrowser launch) + session.py (verbs + registry)
captcha/ solver ABC + 4 providers + DOM detect/inject
mcp/ FastMCP server + state + tools/ (18 groups Β· 85 tools)
examples/direct_usage.py library proof (no MCP)
examples/make_demo.py the native-video demo above
docs/TOOLS.md full tool referenceBuild notes, version-pin rationale, and verified engine behavior live in CLAUDE.md.
Use responsibly
EyeBrowse drives a real browser with anti-detection features. Use it only against sites you own or are explicitly authorized to automate, and within their terms and applicable law.
License
MIT Β© Evil-Bane
Found EyeBrowse useful? β Star the repo β it genuinely helps.
Built with Python Β· Playwright Β· CloakBrowser Β· FastMCP Β· the Model Context Protocol
Available Tools
84 toolsbrowser_block_urlsA
Abort requests matching glob patterns (e.g. '/*.png', '/ads/**'). Useful to save proxy bandwidth or strip trackers/images.
| Name | Required | Description | Default |
|---|---|---|---|
| patterns | Yes | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must compensate. It states requests are aborted, but lacks details on scope (per-session?), side effects, or whether it's persistent. Basic disclosure but missing depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. However, for a tool with 2 parameters and no schema descriptions, it is under-specified rather than optimally concise. Could include more detail without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 2 parameters, no schema descriptions, and an output schema (not shown), the description lacks guidance on pattern syntax, scope, and return values. Incomplete for effective tool usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must explain parameters. It only mentions patterns with examples, but no format details. session_id parameter is not explained. Minimal addition over schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'Abort' and resource 'requests matching glob patterns'. Provides examples and use case, distinguishing it from sibling tools like browser_unblock_urls.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives context for when to use: 'to save proxy bandwidth or strip trackers/images'. Does not explicitly state when not to use, but the sibling list includes the complementary unblock tool, implying the context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_capture_mhtmlA
Save the full page as a single-file MHTML archive (iframes + shadow DOM + external resources + inline styles) via CDP Page.captureSnapshot β captures the exact page state for debugging/forensics. Chromium only. Returns the saved file path.
| Name | Required | Description | Default |
|---|---|---|---|
| output_path | Yes | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description carries full burden. It mentions the underlying mechanism (CDP Page.captureSnapshot) and return value (file path), but does not disclose potential side effects, authentication needs, or file size limits. Adds some useful technical detail but not extensive behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (3-4 lines) and front-loaded with core purpose. However, it could be structured more clearly, e.g., separating behavioral notes from usage. Still efficient overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists but is not described, and parameters are undocumented, the description lacks sufficient completeness. It does not cover error behavior, file overwrite policy, or output file format details important for a mutation/save tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description offers no explanation of the two parameters (output_path, session_id). It only mentions returning a file path, leaving the agent to infer parameter semantics from names alone. Insufficient compensation for missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool saves a full page as MHTML archive via CDP, listing captured features (iframes, shadow DOM) and specifying 'for debugging/forensics'. It differentiates from siblings like screenshot and PDF by format and purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives context ('debugging/forensics') and specifies 'Chromium only', which helps in use-case selection. However, it does not explicitly state when not to use or list alternative tools like browser_screenshot or browser_pdf_save.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_cdp_clickA
Click an element by its [ref=...] using a TRUSTED, cursorless CDP input event.
Preferred over browser_mouse_click: no visible cursor, no pixel guessing (the click point
is computed from the element's own box), and the event is isTrusted=true β so it passes
bot-detection that flags DOM .click()/dispatchEvent (isTrusted=false). Chromium only.
Returns a fresh ARIA snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | ||
| session_id | No | ||
| button | No | left | |
| double | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description effectively discloses key behavioral traits: it uses a CDP input event with isTrusted=true, avoids pixel guessing, and returns a fresh ARIA snapshot. It does not mention potential side effects like triggering navigation or state changes, but the disclosure of the input mechanism is sufficient for understanding its behavior in context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph with essential information front-loaded. It is concise and avoids unnecessary elaboration. Every sentence adds value: purpose, advantage over sibling, technical detail, platform constraint, and return value. Slightly longer than necessary but well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (CDP input event, four parameters, output snapshot), the description covers the main aspects: mechanism, differentiation, return value. However, it lacks details on parameter semantics and potential error conditions (e.g., if ref is invalid), and does not mention the output schema explicitly. Still, it is largely complete for typical usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 0% and the description only implicitly explains the 'ref' parameter by stating the element is identified by [ref=...]. The other parameters (session_id, button, double) are not described at all. Given the low schema coverage, the description should add more parameter-level detail, but it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool clicks an element by its [ref=...] using a trusted Chromium CDP input event, and explicitly distinguishes it from browser_mouse_click and browser_click by highlighting the technical advantages (cursorless, no pixel guessing, isTrusted=true). This makes the purpose highly specific and differentiated from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states 'Preferred over browser_mouse_click' and provides reasons for preference, along with the limitation 'Chromium only'. It gives clear context on when to use this tool (for bot-detection evasion) but does not explicitly state when not to use it (e.g., when a visible cursor is desired). Still, the guidance is strong and practical.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_cdp_sendA
Send a raw Chrome DevTools Protocol command and return its result.
Escape hatch for any CDP capability not wrapped elsewhere β e.g. method='Network.getResponseBody' {requestId}, 'Network.getRequestPostData' {requestId}, 'Emulation.setGeolocationOverride', 'Emulation.setDeviceMetricsOverride', 'Network.emulateNetworkConditions', 'Performance.getMetrics'. Chromium only.
| Name | Required | Description | Default |
|---|---|---|---|
| method | Yes | ||
| params | No | ||
| session_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description does not disclose potential destructiveness, required permissions, or that raw commands can harm browser state. Only mentions Chromium limitation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise - one main sentence and a line of examples. Front-loaded with purpose. Every sentence is informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacks output format description, error handling, or safety warnings. For a raw command tool that can do anything, more context is needed about what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%. The description helps by showing example method and parameter patterns, but doesn't explain the params or session_id objects individually. Some value added but incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it sends a raw CDP command and returns the result, with specific examples like Network.getResponseBody. It differentiates from siblings by being the low-level escape hatch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly calls itself an escape hatch for unsupported CDP capabilities, implying use only when other tools don't cover the need. Doesn't list alternative tools but provides guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_clear_highlightsA
Remove all highlight outlines added via browser_highlight.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses the core behavior (removing highlights) but lacks details on scope, side effects, or prerequisites. Adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, front-loaded sentence with no wasted words. Efficient and to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even for a simple tool, the description omits the optional session_id parameter and does not explain expected output or edge cases. Incomplete given the availability of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one optional parameter (session_id) with 0% description coverage in schema. The description does not mention or explain this parameter, providing no added meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the action (Remove) and the resource (highlight outlines) and references the companion tool browser_highlight, clearly distinguishing 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage after browser_highlight to remove outlines. It does not specify when not to use, but for a simple cleanup tool, 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.
browser_clickC
Click an element by its snapshot ref (e.g. 'e12' or 'f1e36' for iframe elements). Returns a fresh snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | ||
| session_id | No | ||
| button | No | left | |
| double | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool returns a fresh snapshot after clicking, which is important behavioral context. However, with no annotations, it lacks details on error handling, loading waits, or behavior for missing elements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two short sentences. It is front-loaded with the action and resource, and every sentence adds value. No superfluous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters with no schema documentation and no annotations, the description is insufficient. It does not cover parameter details, error conditions, or usage context beyond the basic action. An output schema exists but its content is unknown.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no meaning to parameters. It does not explain the format of 'ref', the purpose of 'session_id', possible values for 'button', or the effect of 'double'. The description fails to compensate for the lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool clicks an element by snapshot ref, including iframe elements. It is specific and unambiguous, but does not explicitly distinguish from sibling tools like browser_mouse_click or browser_hover.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool vs alternatives (e.g., browser_hover, browser_mouse_click). It does not mention prerequisites, such as obtaining a snapshot first, nor 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.
browser_close_sessionB
Close a session and free its browser.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavioral traits. It mentions 'free its browser' but lacks details on side effects, permissions, or error conditions. The destructive nature is implied but not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no unnecessary words. It efficiently communicates the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one required parameter and an output schema, the description is minimal but adequate for a simple close operation. However, it lacks mention of return value or typical usage scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one parameter (session_id) with 0% description coverage, and the tool description adds no additional meaning, format, or constraints. The agent must rely solely on the parameter name and type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool closes a session and frees its browser, specifying the verb 'close' and resource 'session', distinguishing it from sibling tools like browser_list_sessions or browser_new_session.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool, when not to use it, prerequisites, or alternatives. The agent must infer usage solely from the tool's name and purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_console_messagesC
Return console messages collected on the current page (type + text).
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description does not disclose important behavioral traits such as whether it clears messages after reading, if it returns all messages since session start, or if it requires an active session. Limited insight beyond the basic return type.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short (one sentence), which is concise but lacks necessary details. It could be expanded to cover key aspects without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description omits important context about session handling and the scope of console messages. For a tool with one optional parameter, the description should clarify its role to be complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description does not mention the optional session_id parameter, its purpose, or how it affects the output. The agent gets no help understanding the parameter from the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns console messages with type and text from the current page, which is a specific verb+resource that differentiates it from sibling tool browser_ws_messages (WebSocket messages).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like browser_ws_messages or when not to use it. The description lacks context for optimal usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_cookie_clearC
Remove all cookies in the context.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must fully disclose behavior. It states it removes all cookies (destructive), but does not explain the scope of 'context' (current page vs. entire session), irreversible nature, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, very concise. It front-loads the action and resource, but lacks elaboration on key details. It is efficient but could be more informative without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the sibling tools and one parameter, the description is incomplete. It does not explain the role of session_id or differentiate from local storage clearing tools. The output schema exists but the description fails to provide sufficient context for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, session_id, has 0% schema description coverage and is not mentioned in the tool description. The agent cannot infer its purpose or effects, which is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Remove' and the resource 'all cookies in the context.' It distinguishes from sibling tools like browser_cookie_delete (removes specific cookie) by specifying 'all,' but does not define 'context' which may lead to ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like browser_cookie_delete or browser_cookie_list. The description does not mention conditions, prerequisites, or when to avoid using it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_cookie_deleteC
Delete the cookie with the given name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description only indicates a destructive action ('delete') but does not disclose side effects, permissions, or behavior of the optional session_id parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is concise but lacks detail needed for effective use. Balance between brevity and completeness is poor.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (2 parameters, no annotations, output schema exists), description omits parameter semantics and usage context. Incomplete for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and description adds no meaning beyond parameter names. The optional session_id parameter is not explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Delete' and the resource 'cookie with the given name'. It is distinct from sibling tools like browser_cookie_clear (deletes all) and browser_cookie_get (retrieves).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like browser_cookie_clear or browser_cookie_set. Does not mention session context or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_cookie_getA
Get a single cookie by name (or null if absent).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description mentions null return for absent cookie, which is helpful. However, no details on idempotency, side effects, or permissions. For a simple read operation, it is adequate but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with clear front-loaded action. Zero wasted words. Perfectly concise for the function's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists (context signal), return values are likely documented elsewhere. However, the description lacks explanation of the session_id parameter and error handling. For a simple getter, it is minimally complete but could be improved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 2 parameters with 0% description coverage. Description only mentions the 'name' parameter implicitly (cookie name), but completely omits the optional 'session_id' parameter. Does not add meaning beyond what the schema's field names imply.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'get' and resource 'single cookie by name', and specifies return behavior ('or null if absent'). Distinguishes from siblings like browser_cookie_list and browser_cookie_set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage when you know the cookie name, but does not explicitly state when to use this vs alternatives like browser_cookie_list or browser_cookie_get. No when-not or prerequisite conditions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_cookie_listC
List cookies in the context (optionally filtered to a url).
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It does not disclose whether cookies are from the current session, what 'context' means, or any access implications. The description is too brief for a tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise and to the point, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 2 optional parameters and an output schema, but the description lacks details about the expected output (even though output schema exists), and does not clarify the purpose of session_id. For a simple list operation, the description is too sparse to be fully helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% as the description does not mention parameter details. While 'optionally filtered to a url' hints at the url parameter, the session_id parameter is not explained. The description adds minimal value beyond the schema, failing to compensate for low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists cookies in the context, optionally filtered by URL. It uses a specific verb-resource combination that distinguishes it from sibling tools like browser_cookie_get or browser_cookie_set. However, 'context' could be more precise.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., browser_cookie_get for specific cookie retrieval). There is no mention of prerequisites or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_cookie_setB
Set a cookie. Provide either url, or domain+path.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| value | Yes | ||
| url | No | ||
| domain | No | ||
| path | No | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden for behavioral disclosure. It only states 'Set a cookie' without mentioning whether existing cookies are overwritten, if a session is required, or any side effects. This is insufficient for an AI agent to understand the tool's behavior safely.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short (one sentence), which is concise, but it lacks structure. It could benefit from a brief note on prerequisites or parameter grouping. It is front-loaded with the purpose, but the brevity means some needed information is missing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema and a simple operation, the description fails to cover all 6 parameters (only mentions url and domain+path) and does not explain the role of session_id or the expected behavior. It feels incomplete for an AI agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must add meaning. It explains the url vs domain+path relationship but does not describe the 'name', 'value', or 'session_id' parameters. The schema itself shows they are required or optional, but the description adds little beyond the schema for most parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Set' and the resource 'cookie', and it distinguishes between two methods of specifying the cookie location (url vs domain+path). This is specific and helps differentiate from sibling tools like browser_cookie_delete or browser_cookie_get.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description tells when to use the tool (to set a cookie) and provides a choice of input formats. It does not explicitly state when not to use it or mention alternatives, but given the context of sibling tools, the guidance is clear enough for a simple operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_dragC
Drag one element onto another (by refs). Returns a snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| from_ref | Yes | ||
| to_ref | Yes | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It states 'Returns a snapshot' but does not mention if the drag is a user simulation, whether it triggers events, or any side effects like scrolling or state changes. The behavioral transparency is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise with two short sentences. It gets straight to the point without unnecessary words. However, it is perhaps too brief, but conciseness is still good.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (drag and drop) and no annotations, the description is incomplete. It does not explain how to obtain refs, the prerequisites (e.g., active session), or the nature of the snapshot. The output schema exists but is not detailed; the description should still provide context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must add meaning. It uses 'by refs' to hint at element references, but does not explain what refs are or the format expected. The session_id parameter is not mentioned at all. Minimal value added beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('drag') and the resources ('one element onto another by refs'). It indicates that it returns a snapshot, and it distinguishes from other mouse-based drag tools like browser_mouse_drag by specifying 'by refs'. However, it does not explicitly differentiate from all sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives (e.g., browser_mouse_drag). The description does not mention prerequisites or context for use, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_evaluateB
Evaluate a JS expression or function in the page and return the result.
frame_ref: run the JS INSIDE a child frame instead of the top document. Accepts
a frame id ('f1'), an element ref inside the frame ('f1e36'), or an <iframe>
element ref ('e81'). This works for CROSS-ORIGIN frames too β the code runs in
the frame's own context (unlike top-frame JS reaching in via contentDocument,
which the browser blocks). This is the fix for "Permission denied to access
property document on cross-origin object".
Examples: 'document.title' | '() => window.location.href'
| Name | Required | Description | Default |
|---|---|---|---|
| expression | Yes | ||
| session_id | No | ||
| frame_ref | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits like potential side effects. It only states 'evaluate' and gives read-only examples, but JavaScript execution can modify the page. The lack of warning about mutations or restrictions is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, followed by detailed parameter explanation and examples. It is slightly verbose but well-structured with logical flow. No wasted sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and moderate complexity, the description covers the main functionality and frame_ref nuance, but lacks details on return value format, error handling, and session_id context. An AI agent may find it adequate but incomplete for precise invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It thoroughly explains frame_ref with cross-origin details and gives expression examples, but completely omits session_id. Two of three parameters are well-covered, but the missing explanation hurts completeness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'evaluate' and the resource 'a JS expression or function in the page', accurately distinguishing it from sibling tools like browser_extract or browser_click. It specifies the action and scope without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for executing JavaScript and retrieving results, but provides no explicit guidance on when to use this tool versus alternatives or when not to use it. The frame_ref detail is context-specific but does not cover broader usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_file_uploadC
Set files on a file by ref (absolute paths). Returns a snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | ||
| paths | Yes | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description must fully disclose behavior. It mentions setting files and returning a snapshot but omits side effects (e.g., clearing previous files, file size limits, security restrictions) and does not explain the snapshot format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no fluff. Could be slightly more structured but is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description lacks details on input element identification, file path constraints, behavior with multiple files, and required page state. Incomplete for a file upload tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so description must explain parameters. Only hints at 'ref' and 'absolute paths', but does not define ref (CSS selector/XPath?), paths format, and session_id is unmentioned.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action: setting files on a file input element using a reference and absolute paths. Distinguishes itself among many browser tools as the file upload operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., browser_fill_form, browser_type). Lacks prerequisites like needing an active file input element on the page.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_fill_formB
Fill multiple fields at once. Each field: {ref, value, submit?, clear?}.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must cover behavioral traits. It only mentions optional 'submit?' and 'clear?' without explaining their effects, and omits details on field validation, error handling, or session requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loaded, but could be slightly more structured (e.g., bullet points for field properties). It is not verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has two parameters and an output schema exists (not shown), so return value explanation is unneeded. However, the description lacks prerequisites (e.g., active session) and does not clarify the role of 'session_id'. It feels incomplete for a form-filling operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds structure for the 'fields' parameter (ref, value, submit?, clear?) but does not define these terms or explain the 'session_id' parameter. With 0% schema coverage, more detail was needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Fill') and resource ('multiple fields') with a concise structure hint, distinguishing it from single-field tools like browser_type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for bulk field filling but provides no when-not-to-use instructions or comparisons with sibling tools (e.g., browser_type for single fields).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_findA
Find VISIBLE interactive elements whose text / placeholder / label / type contains
query β the escape hatch when browser_snapshot is all 'generic' (no usable [ref=eN]).
Returns a list of matches, each with a css selector you act on via the ref slot, e.g.
browser_click(ref="css=...") or browser_type(ref="css=...", text=...).
Example: browser_find("verification code") -> the OTP input + its css ref.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| session_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description correctly indicates the tool searches visible interactive elements and returns CSS selectors. It lacks details on error handling (e.g., no matches), performance, or side effects, but provides adequate behavioral context for a find operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences plus an example. Every sentence adds value, and the front-loading of the action makes it easy to grasp quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description adequately explains the return format (list of matches with CSS selectors) and usage pattern. Missing details like match fields or error scenarios, but for the tool's purpose it is fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains the 'query' parameter well (searches text/placeholder/label/type), but does not mention the 'session_id' parameter at all. Since schema coverage is 0%, the description should document all parameters; it only partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool finds visible interactive elements whose text/placeholder/label/type contains the query, distinguishing it from siblings like browser_snapshot by specifying it's an escape hatch when snapshot returns only 'generic' references.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use this tool when browser_snapshot returns generic elements, providing a clear when-to-use scenario. However, it does not explicitly state when not to use it or alternative tools for other cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_generate_locatorC
Return a stable CSS selector for an element (by ref) for use in code/tests.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description bears full burden. It only states output type ('stable CSS selector') but does not disclose behavioral traits like required element state, side effects, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, 14 words, front-loaded with action and object. Efficient but omits critical information that could be included without increasing length significantly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, description lacks usage context, prerequisites, and behavioral details. Sibling tools are numerous, increasing the need for contextual guidance that is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% coverage; description only mentions 'by ref' without explaining what 'ref' means or how to obtain it. The optional 'session_id' parameter is not described at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Return', object 'stable CSS selector', source 'element (by ref)', and purpose 'for use in code/tests'. It uniquely identifies the tool's function among many browser siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. Does not mention prerequisites or scenarios where it is appropriate or inappropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_grant_permissionsA
Pre-grant browser permissions so the native prompt never blocks the flow.
permissions: list of permission names, e.g. ['geolocation'], ['notifications'],
['camera'], ['microphone'], ['clipboard-read'], ['clipboard-write'].
origin: restrict the grant to a specific origin (e.g. 'https://example.com');
omit to apply session-wide.
Call this before navigating to a page that requests permissions, or immediately
when a permission prompt appears (it will dismiss the prompt automatically).| Name | Required | Description | Default |
|---|---|---|---|
| permissions | Yes | ||
| origin | No | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full transparency burden. It explains that the tool pre-grants permissions and dismisses prompts automatically, and mentions scope via origin. However, it does not disclose side effects, idempotency, or the behavior of the session_id parameter, which is left unmentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured. It starts with the main purpose, uses bullet points for parameter explanations, and provides actionable guidance in a separate sentence. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and the tool's moderate complexity, the description covers the main use cases and behavior. However, it lacks explicit prerequisites (e.g., an active session) and does not mention error conditions or edge cases, making it slightly incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description must add meaning for all parameters. It explains 'permissions' with examples and 'origin' with scope, but completely omits 'session_id'. This gap is significant, leaving the agent partially uninformed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Pre-grant browser permissions so the native prompt never blocks the flow.' It uses specific verbs and resources, and distinguishes from siblings like browser_set_geolocation by focusing on permission grants rather than setting values.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit timing guidance: 'Call this before navigating to a page that requests permissions, or immediately when a permission prompt appears.' However, it does not discuss when not to use the tool or how it compares to alternatives like browser_handle_dialog, which might handle permission prompts differently.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_handle_dialogA
Accept or dismiss an open JS dialog (alert/confirm/prompt). prompt_text fills a prompt() before accepting. Dialogs stay open until handled.
| Name | Required | Description | Default |
|---|---|---|---|
| accept | No | ||
| prompt_text | No | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It explains the accept/dismiss behavior via the accept boolean and mentions prompt_text for filling prompts before accepting. It also notes that dialogs remain open until handled, which is key behavioral info.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences, no fluff, and front-loads the core action. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple dialog handling tool, the description covers most aspects: purpose, main behavior, and two of three parameters. Missing session_id explanation is a minor gap. Output schema exists, so return value details are not required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It explains accept (accept or dismiss) and prompt_text (fill prompt before accepting), but does not explain session_id, leaving a gap. Two of three parameters are covered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: accepting or dismissing JS dialogs (alert/confirm/prompt). It specifically identifies the action and resource, distinguishing it from sibling tools which cover other browser interactions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (when a dialog is open) and notes that dialogs stay open until handled, but does not explicitly state when not to use it or mention alternatives. No sibling tool addresses dialogs, so context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_har_exportA
Finalize and return the HAR file path for a recording session.
NOTE: This CLOSES the session β Playwright only flushes the HAR buffer when
the browser context closes. The session must have been created with record_har=True.
output_path: copy the finished HAR to this path (e.g. 'results/run1.har').
If omitted, the HAR stays at its auto-generated path under data/har/.
Non-destructive checkpoint pattern (to keep browsing after capturing traffic):
1. browser_storage_state(path='data/checkpoint.json') # save auth/cookies
2. browser_har_export() # closes session, flushes HAR
3. browser_new_session(storage_state='data/checkpoint.json') # resume
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No | ||
| output_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Clearly warns that the tool CLOSES the session because Playwright flushes HAR only on context close. Annotations are absent, so description carries full burden β it adequately discloses the side effect but doesn't cover error conditions or what happens if no session exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is compact with front-loaded purpose. The checkpoint pattern adds valuable usage context without being verbose. Could be slightly shorter, but every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 2 optional parameters and a moderate complexity tool, the description covers the key side effect (session close) and provides a usage pattern. Missing session_id param explanation, but overall it's quite complete for the function.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so description must compensate. It explains output_path with default behavior and example, but session_id is completely undocumented. Only one of two parameters gets semantic context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Finalize and return the HAR file path for a recording session' β a specific verb and resource. It distinguishes itself from 70+ sibling browser tools by being the only HAR export function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says use only with sessions created with record_har=True and provides a detailed non-destructive checkpoint pattern for continuing browsing after export, including exact steps and alternative tools (browser_storage_state, browser_new_session).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_highlightA
Draw a magenta outline around an element (by ref) β handy before a screenshot.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral disclosure. It reveals the color (magenta) and that it draws an outline, but omits details such as whether the highlight persists, whether it scrolls to the element, or if it requires the element to be visible. The description is adequate for a simple action but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that immediately states the action ('Draw a magenta outline around an element (by ref)') and appends a practical usage note. It is front-loaded with the core purpose and contains no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the description covers the essential purpose and a key use case. The existence of an output schema (not described) is expected. The description is nearly complete, but could mention that highlights are cleared via a sibling tool or that the highlight is temporary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate. It only mentions 'by ref' for the ref parameter, without explaining what a ref is or how it relates to the element. The session_id parameter is entirely ignored. This fails to add sufficient meaning beyond the schema's parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'Draw a magenta outline around an element (by ref)'. It specifies the color (magenta), the target (element), and the identifier (ref). This distinguishes it from sibling tools like browser_clear_highlights.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes the practical hint 'handy before a screenshot', which provides a clear use case. While it doesn't explicitly mention when not to use it or list alternatives, the sibling context (e.g., browser_clear_highlights) implicitly guides when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_hoverC
Hover over an element by ref. Returns a snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only says 'Returns a snapshot' but does not mention whether hover triggers events, whether it is destructive, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very short and front-loaded, but too terse. Missing essential context that would help the agent use the tool correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While output schema exists and likely documents the snapshot return, the tool is for browser interaction and lacks guidance on parameter semantics and usage. Incomplete for the complexity involved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% (no descriptions in schema). The description adds no meaning beyond 'by ref', leaving 'ref' and 'session_id' undefined. An agent cannot infer what format 'ref' should be (e.g., selector, XPath, internal ID).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('hover') and the resource ('element by ref'), and mentions the return value ('snapshot'). It distinguishes from sibling tools like browser_click or browser_scroll.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. Does not specify prerequisites, such as requiring the element to be visible or the need for a session.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_keyboard_typeA
Type text into the currently focused element β no ref needed.
Works on contenteditable rich-text editors (TipTap, Quill, ProseMirror)
where browser_type / fill() is a no-op. Also the escape hatch when a
coordinate click focused an iframe field and you need to type into it.
Pattern: browser_mouse_click(x, y) to focus β browser_keyboard_type(text).
delay: ms between keystrokes (simulates human typing speed).
Returns a snapshot.| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| session_id | No | ||
| delay | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses the typing action, delay simulation, and return of snapshot. Does not detail potential side effects (e.g., overwriting existing text) or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise, well-structured with bullet points and a clear pattern example. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and presence of an output schema, the description covers key use cases and integration patterns. Minor lack of parameter documentation for session_id prevents a perfect score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 3 parameters with 0% description coverage. Description adds meaning to 'delay' (simulates human typing) and implies 'text' usage. 'session_id' is not described, leaving a gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Type text') and the resource ('currently focused element'). It explicitly distinguishes this tool from siblings like browser_type and fill() by mentioning scenarios where those fail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides specific when-to-use scenarios: for contenteditable rich-text editors and as an escape hatch for iframe fields. Includes a usage pattern (mouse_click then keyboard_type). No explicit when-not, but context suffices.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_list_sessionsA
List all open sessions with their current url, tab count, and identity.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It implies a read-only operation via 'list', but does not explicitly confirm non-destructiveness or any other behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded and directly describes the tool's function with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and an existing output schema, the description adequately lists return fields. Could mention that it returns an array, but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters with 100% coverage, so baseline is 4. The description adds no parameter info, which is acceptable as none exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list' and the resource 'all open sessions' with specific return fields (url, tab count, identity). It is unique among sibling tools, as no other tool lists sessions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool or alternatives. While the tool is simple with no parameters, the description does not indicate scenarios or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_localstorage_clearB
Clear all localStorage for the current origin.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the operation is scoped to the current origin, which is beyond the name. However, without annotations, it lacks details on irreversibility, impact on other storage types, permission requirements, or synchronous behavior. It meets minimal expectations but does not fully compensate for the absence of annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise (one sentence), containing no superfluous words. It could be improved by including parameter information, but as a standalone statement it is efficiently structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the description captures the core behavior (clear all localStorage for current origin) and there is an output schema presumably covering return values. However, the lack of parameter explanation and usage context leaves gaps for a complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one optional parameter (session_id) with no description in the schema, and the tool description does not explain its purpose or effect. With 0% schema description coverage, the description should compensate but fails to add any meaning to the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('clear') and the resource ('all localStorage for the current origin'), leaving no ambiguity about what the tool does. It distinguishes from siblings like browser_cookie_clear or browser_sessionstorage_clear by the specific resource mentioned.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as browser_localstorage_remove (to remove specific items) or browser_cookie_clear. The agent is not informed about prerequisites or context for invoking this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_localstorage_getB
Get a localStorage value by key (null if absent).
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| session_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behaviors. It mentions the return value ('null if absent'), which is a key behavioral detail. However, it does not state that the operation is read-only, or describe error conditions or storage limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant words. It efficiently conveys the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple getter, the description covers the basic operation and null behavior, but omits explanation of the optional session_id parameter and return format. It is adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description should explain parameters. It only mentions 'by key', partially covering the 'key' parameter but ignoring 'session_id'. No detail on parameter types or formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('get') and resource ('localStorage value by key'), and specifies the return behavior ('null if absent'). It distinguishes itself from siblings like browser_localstorage_set and browser_localstorage_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as browser_localstorage_list (to get all keys) or browser_sessionstorage_get. The description does not mention prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_localstorage_listB
List all localStorage key/value pairs for the current origin.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It states it lists all pairs for the current origin, implying a safe read operation. However, it does not disclose whether it returns an empty list, performance implications, or any side effects. For a simple list tool, this is minimally adequate but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, efficiently stating the core function. No wasted words. However, it could be expanded slightly to cover parameters or output without sacrificing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and only a brief description, the tool lacks context on return format (e.g., list of objects with key/value), behavior for empty storage, and the role of session_id. The description is too terse for an agent to reliably invoke without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, session_id, is documented only in the schema with a type and default. The description does not explain its purpose, how it affects the listing, or how to use it. With 0% schema description coverage, the description fails to compensate, leaving the agent uninformed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool lists all localStorage key/value pairs for the current origin. The verb 'List' and resource 'localStorage key/value pairs' are specific, and it distinguishes from siblings like browser_localstorage_get (which likely gets a single key) and browser_localstorage_set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like browser_localstorage_get or browser_sessionstorage_list. No mention of prerequisites, context, 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.
browser_localstorage_removeC
Remove a localStorage key.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It only states removal but does not mention error handling when key is missing, side effects, or the role of session_id. The removal action implies irreversibility but this is not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, but it sacrifices informative content for brevity. It is under-specified rather than concisely comprehensive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of annotations, low schema coverage, and a required parameter, the description fails to provide sufficient context. It does not explain the output, prerequisites, or behavioral nuances like session isolation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning the schema lacks parameter descriptions. The tool description adds nothing about the 'key' parameter or the optional 'session_id'. The agent must infer meaning solely from parameter names and titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Remove') and resource ('localStorage key'). It distinguishes from siblings like browser_localstorage_clear (which removes all keys) through the verb 'remove' vs 'clear' and the explicit mention of 'a key'. However, it could be more specific about removing a single key.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like browser_localstorage_clear, browser_localstorage_set, or browser_sessionstorage_remove. The description simply states the action without context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_localstorage_setC
Set a localStorage key to a value.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| value | Yes | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description is minimal. It does not disclose whether setting a key overwrites existing values, persists across sessions, has size limits, or requires an active session.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise (one sentence) but at the expense of necessary details. It could be longer to add value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, return values are covered, but the description lacks information on behavior, overwrite rules, and session scoping.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no additional meaning to the parameters beyond their names. The role of session_id is not explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sets a localStorage key to a value, using a specific verb and resource. It is easily distinguishable from sibling tools like browser_localstorage_get, browser_localstorage_list, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like browser_cookie_set or browser_sessionstorage_set. The description does not mention prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_mock_urlA
Fulfill requests matching a glob pattern with a canned response (response mocking / fault injection). Cleared by browser_unblock_urls.
| Name | Required | Description | Default |
|---|---|---|---|
| pattern | Yes | ||
| status | No | ||
| body | No | ||
| content_type | No | text/plain | |
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so description carries full burden. Adds lifecycle info ('Cleared by browser_unblock_urls') and behavioral hint ('fault injection'). Could mention side effects on other requests but sufficient for basic understanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, each serving a distinct purpose: definition and clearing behavior. No redundant or unclear phrasing. Front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers core behavioral aspects (mocking, clearing) but omits parameter details and output format. With 5 parameters and no annotations, more description would help. Output schema exists, reducing need for return info.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage. Description only mentions 'glob pattern' indirectly through 'pattern' parameter. Other parameters (status, body, content_type, session_id) are not explained, leaving them underspecified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'fulfill requests' with resource 'matching a glob pattern' and purpose 'response mocking / fault injection'. It also distinguishes from sibling 'browser_unblock_urls' and implies contrast with 'browser_block_urls'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use. Only implied that it is for mocking/fault injection and cleared by unblock_urls. Lacks prerequisites or alternatives, but purpose is clear enough for basic selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_mouse_clickA
Click at absolute coordinates (x, y). button: left|right|middle; clicks for multi-click.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| button | No | left | |
| clicks | No | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden. It explains basic behavior (click at coordinates, button types, multi-click) but does not disclose side effects, required permissions, or any limitations. It is adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with one sentence and a fragment, front-loading the purpose. Every word adds value, and there is no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters, an output schema (but no description of return), and many sibling tools, the description is too minimal. It lacks context on what happens after click, how session_id affects behavior, and does not differentiate well from other mouse tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so description adds meaning for button and clicks, but x and y are obvious, and session_id is not explained. The description partially compensates for missing schema descriptions but leaves one parameter undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (click) and resource (absolute coordinates). It specifies available button options (left|right|middle) and multi-click via clicks parameter, distinguishing it from sibling tools like browser_click which likely operates on elements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for precise absolute coordinate clicks but does not explicitly state when to use this tool versus alternatives like browser_click or browser_mouse_down. No when-not or exclusion criteria provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_mouse_downC
Press a mouse button down (at the current position).
| Name | Required | Description | Default |
|---|---|---|---|
| button | No | left | |
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only states the action without mentioning prerequisites (e.g., mouse must be positioned), fallback behavior, or whether this can initiate a drag. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, which is efficient for a simple action. However, it lacks structure such as parameter details or usage hints, making it overly brief.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and two parameters, the description should explain how mouse_down relates to other mouse actions (e.g., sequence with mouse_up). It omits the role of session_id and button, leaving the tool partially incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain parameters. It does not mention 'button' (valid values? default left) or 'session_id' (purpose? optional). No parameter information is conveyed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (press mouse button down) and the resource (mouse at current position). However, it does not explicitly distinguish from sibling tools like browser_mouse_click or browser_mouse_up, which might cause confusion for an AI agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool vs alternatives (e.g., browser_click for a full click, browser_mouse_drag for dragging). The description lacks any contextual or conditional usage advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_mouse_dragC
Drag from (x1, y1) to (x2, y2) with the left button held.
| Name | Required | Description | Default |
|---|---|---|---|
| x1 | Yes | ||
| y1 | Yes | ||
| x2 | Yes | ||
| y2 | Yes | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose release behavior, coordinate system, or side effects. It only mentions 'left button held' but fails to clarify endpoint actions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise (one sentence) but sacrifices essential detail. Acceptable for a simple tool, but could be improved.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of sibling tools and no annotations, the description is insufficient for an agent to use correctly. It does not cover output or coordinate system.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds minimal meaning beyond parameter names; it omits coordinate reference (viewport vs page) and ignores session_id. With 0% schema coverage, more detail is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (drag) and the start/end coordinates, distinguishing it from click, move, and other mouse actions. However, it does not mention whether it simulates mousedown, mousemove, mouseup sequence, leaving some ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 siblings like browser_drag or browser_mouse_down/browser_mouse_move. It does not provide context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_mouse_moveB
Move the mouse to absolute page coordinates (x, y).
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It only states movement to coordinates, without explaining whether events fire, preconditions, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that directly states the tool's purpose without extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with three parameters and an output schema, the description misses session_id context and behavioral details, but its core action is sufficiently explained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description explains the x and y parameters as 'absolute page coordinates', adding meaning. However, the session_id parameter is not mentioned, leaving it undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verb 'Move' and resource 'mouse' with 'absolute page coordinates (x, y)', which clearly distinguishes it from siblings like browser_click or browser_hover.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as browser_hover or browser_click. The description does not provide context for appropriate use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_mouse_upB
Release a mouse button (at the current position).
| Name | Required | Description | Default |
|---|---|---|---|
| button | No | left | |
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the burden of behavioral disclosure. It states 'at the current position' implying no movement, but does not disclose side effects like triggering a mouseup event, what happens if no button is pressed, or whether it affects all held buttons.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no wasted words. However, it could include the default button for completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and existence of an output schema, the description is marginally adequate but lacks information about return values, session handling, or interaction with other mouse tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must add parameter meaning. It does not explain the 'button' parameter (default 'left') beyond the action, nor the 'session_id' parameter. No enums or allowed values are mentioned.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Release a mouse button' and specifies the context 'at the current position'. It effectively distinguishes from related sibling tools like 'browser_mouse_down' (press) and 'browser_click' (press and release).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., browser_mouse_click or browser_drag). It does not mention prerequisites such as having previously pressed the mouse button.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_mouse_wheelA
Scroll the mouse wheel by (delta_x, delta_y) pixels.
| Name | Required | Description | Default |
|---|---|---|---|
| delta_x | No | ||
| delta_y | No | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It correctly describes the relative scroll by delta_x and delta_y pixels, implying a one-time simulation. It does not mention side effects or requirements, but the action is straightforward and non-destructive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that immediately conveys the tool's purpose and parameter meaning. There is no wasted text, and the information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with an output schema, the description adequately covers the core action. However, it does not mention the need for an active browser session or how session_id relates to other browser tools. This omission reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains delta_x and delta_y ('by (delta_x, delta_y) pixels'), compensating for the 0% schema coverage. However, the session_id parameter is not mentioned, leaving its purpose unclear. The partial explanation results in a score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'scroll the mouse wheel' with specific units (pixels). It distinguishes this tool from siblings like browser_scroll (page scroll) and browser_mouse_move (mouse movement without wheel).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives, such as browser_scroll. The usage is implied from the description, but no exclusions or context are provided. A score of 3 reflects the implied usage without further direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_network_requestA
Get one request's full detail: request + response headers, and response body (auto-captured for XHR/fetch resource types β body may still be populating for very recent requests). Match by list index or url substring (most recent match).
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No | ||
| index | No | ||
| url_contains | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses auto-capture for XHR/fetch and potential delayed body population for recent requests. With no annotations, this adds valuable behavioral context, though could mention whether it requires an active session or if it's read-only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the key action and then details. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers main functionality and important behavioral notes. Could be more complete by referencing the sibling tool for listing requests or explaining session_id. Output schema exists, so return value details not required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Describes index and url_contains parameters' purpose clearly, but does not explain session_id. Schema coverage is 0%, so description partially compensates but misses one parameter. No details on the format of url substring.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Get one request's full detail' with specific resource. Differentiates from sibling 'browser_network_requests' by focusing on detail retrieval, but does not explicitly mention the sibling or when to use each.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides two matching methods (list index or url substring) but no guidance on when to prefer one over the other, nor when not to use this tool. No mention of prerequisites like session existence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_network_requestsA
List network requests seen this session (method, url, status, resource_type). Optionally filter by resource_type (e.g. 'xhr', 'fetch', 'document') or url substring. For full details including headers and body, use browser_network_request.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No | ||
| resource_type | No | ||
| url_contains | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description carries full burden. States it lists requests 'this session' (session-scoped) and supports filtering, but lacks detail on rate limits, side effects, or performance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences that efficiently convey purpose, filtering options, and pointer to sibling tool. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only three optional parameters and an output schema present, the description sufficiently covers core functionality: listing and filtering network requests. The mention of browser_network_request covers the detail gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage. Description adds examples for resource_type ('xhr', 'fetch', 'document') and explains url_contains as substring match, but does not explain session_id, leaving some ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly lists network requests seen in session, specifying the data fields (method, url, status, resource_type). Differentiated from sibling browser_network_request which provides full details for a single request.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly mentions alternative browser_network_request for full details, providing usage context. However, no when-not-to-use or prerequisites stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_new_identityA
Start a fresh browser identity in a new session: a novel fingerprint (randomized OS + screen) with isolated storage, optionally paired with a proxy. Proxyless by default; pass proxy_url ('http://user:pass@host:port') or proxy_server[+username/password] to pair an IP. persistent=True mints a reusable profile dir. Returns the new session info.
| Name | Required | Description | Default |
|---|---|---|---|
| persistent | No | ||
| label | No | ||
| proxy_url | No | ||
| proxy_server | No | ||
| proxy_username | No | ||
| proxy_password | No | ||
| no_proxy | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Given no annotations, the description carries full burden. It discloses that a new session is created with a randomized fingerprint and isolated storage, and explains proxy pairing and persistent modes. It also states the return value. However, it omits potential side effects or failure scenarios.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, front-loading the main purpose and adding details in a logical order. Every sentence contributes meaningful information with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 7 parameters, no required fields, no output schema, and no annotations, the description covers the core functionality and most parameters but misses 'label' and 'no_proxy'. It does not mention error handling or return format beyond stating it returns session info. Completeness is adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must explain all parameters. It explains proxy_url, proxy_server, persistent, and hints at proxy_username/password, but does not cover 'label' or 'no_proxy'. The explanation adds value beyond the schema for some parameters but remains incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a fresh browser identity with a novel randomized fingerprint, isolated storage, and optional proxy pairing. It distinguishes itself from sibling tools like browser_new_session and browser_set_proxy by detailing unique features such as fingerprint randomization and persistent profiles.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on how to use the tool, including default proxyless behavior and options for proxy pairing and persistence. However, it does not explicitly state when to use this tool versus alternatives or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_new_sessionA
Create a new stealth browser session and make it current. Returns its id.
Runs PROXYLESS by default. To use a proxy, pass either proxy_url
('http://user:pass@host:port') or proxy_server[+username/password].
no_proxy=True forces proxyless even if an env/default proxy is configured.
persistent: keep cookies/localStorage in a profile dir across runs.
headless: override the configured default (None = use the default).
humanize: per-session cursor humanization β a float caps cursor-move time in seconds
(e.g. 0.25 = fast but still humanized), True = default speed, False = off,
None = use the configured default.
record_har: capture a full network HAR (export with browser_har_export).
record_video: record the session to a native .webm (Chromium only); fetch the path with
browser_video_path. The file is finalized on browser_close_session.
record_video_width / record_video_height: pin the recording resolution (e.g. 1920 x 1080
for HD); when omitted Playwright defaults to 800x450.
har_url_filter: glob to scope what the HAR records (e.g. '**/api/**' or
'**/students/**') so it excludes login/captcha/static noise; default = all.
storage_state: path to a saved cookies/localStorage JSON to reload.
extensions: list of paths to UNPACKED Chromium extension folders to side-load (e.g. a
captcha-solver or a custom extension). Forces a persistent + headful session
(Chromium only side-loads extensions that way); the profile persists so the
extension's own config/login survives.
Most tools auto-create a default session, so calling this is optional.
| Name | Required | Description | Default |
|---|---|---|---|
| persistent | No | ||
| label | No | ||
| headless | No | ||
| humanize | No | ||
| record_har | No | ||
| record_video | No | ||
| record_video_width | No | ||
| record_video_height | No | ||
| har_url_filter | No | ||
| storage_state | No | ||
| extensions | No | ||
| proxy_url | No | ||
| proxy_server | No | ||
| proxy_username | No | ||
| proxy_password | No | ||
| no_proxy | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full transparency burden. It covers key behaviors: proxyless by default, proxy options, persistence, headless mode, humanization, recording HAR/video, storage_state reload, and extensions forcing persistent+headful. It also states that most tools auto-create a default session. The only gaps are missing details on rate limits or authentication, which are not critical for this tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and return value. Parameter explanations are grouped in a bullet-like structure (plain text but logically formatted). While a bit lengthy (several lines), each sentence provides necessary detail; no redundancy. It strikes a good balance between completeness and readability, though could be slightly more compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the high complexity (16 parameters, zero schema descriptions, no annotations), the description is exceptionally complete. It covers every parameter's behavior, side effects (extensions force persistent+headful), optionality, and return value. The only minor omission is the exact format of the returned id, but since it's a simple string, this is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully explain parameters. It does so thoroughly: for each parameter it explains purpose, defaults, constraints (e.g., extensions forces persistent+headful), and acceptable values (e.g., humanize: float, bool, or None). This adds immense value beyond the bare schema, making the agent capable of correct parameter choices.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Create a new stealth browser session and make it current. Returns its id.' This clearly states the verb (create), resource (stealth browser session), and outcome (makes current, returns id). It distinguishes this tool from siblings like browser_close_session or browser_list_sessions, as it is the only session creation tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly notes that 'Most tools auto-create a default session, so calling this is optional.' This tells the agent when the tool is needed (custom settings) and when it's not (default behavior). It also explains proxyless default and how to override, providing clear context for usage. However, it does not explicitly list alternatives or when-not scenarios beyond the optionality statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_pdf_saveB
Save the current page as a PDF file. Chromium only. Returns the saved file path.
| Name | Required | Description | Default |
|---|---|---|---|
| output_path | Yes | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool saves to PDF and returns a file path, which is basic behavior. With no annotations provided, it lacks details about side effects, permissions, or error conditions, which limits transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two short sentences, both front-loaded with essential information. No superfluous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low schema coverage and no annotations, the description is incomplete. It does not specify prerequisites (e.g., a loaded page), the exact meaning of 'Chromium only', or details about the return value, leading to potential misuse.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema coverage is 0%, and the description does not explain the 'output_path' parameter (e.g., required format, default directory) or the 'session_id' parameter (e.g., when it is needed). This leaves the agent without crucial usage details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool saves the current page as a PDF file, which is a specific verb+resource. However, it does not distinguish from sibling tools like 'browser_screenshot' or 'browser_capture_mhtml', leaving potential ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The mention of 'Chromium only' provides a usage constraint but there is no explicit guidance on when to use this tool versus alternatives, nor what happens if not in a Chromium session.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_press_keyB
Press a keyboard key (e.g. 'Enter', 'Escape', 'ArrowDown', 'Tab'). Returns a snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must fully disclose behavior. It only mentions that the action returns a snapshot, but fails to describe side effects, focus requirements, whether keys are released, or if there are any timing considerations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with examples, front-loaded, no redundant words. Efficient and to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the presence of an output schema, the description covers the basic functionality. However, it lacks context on valid keys (only examples), session management, and interaction with other browser elements. Sibling tools are numerous, so more guidance would help agent selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It gives examples for the 'key' parameter but does not explain the 'session_id' parameter or its optional use. Missing details like allowed key values (beyond examples) or format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Press a keyboard key'), specifies the resource ('keyboard key'), and provides concrete examples ('Enter', 'Escape', 'ArrowDown', 'Tab'). It distinguishes from sibling tools like browser_click or browser_keyboard_type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidelines on when to use this tool versus alternatives like browser_keyboard_type or browser_fill_form. No mention of prerequisites (e.g., focus on an input element) 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.
browser_reloadB
Reload the current page. Returns the page's ARIA snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full burden. It states the action and return value but omits details such as cache behavior, side effects, or whether the snapshot includes full accessibility tree.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no fluff. The information is front-loaded, though a touch more context could be added without harming conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of the browser tool ecosystem and lack of annotations, the description is too sparse. It fails to explain session_id, when to prefer reload over navigate, or details about the returned ARIA snapshot.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% coverage and the description does not explain the purpose of the optional 'session_id' parameter, leaving the agent with no additional semantic guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Reload the current page') and the return value ('Returns the page's ARIA snapshot'), which is specific and distinct from sibling navigation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (wanting to refresh the page), but does not explicitly mention alternatives like navigate, navigate_back, or navigate_forward, nor when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_resizeA
Resize the page viewport (e.g. 1920x1080). Affects layout and screenshot size.
| Name | Required | Description | Default |
|---|---|---|---|
| width | Yes | ||
| height | Yes | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must fully convey behavioral traits. It states that resizing affects layout and screenshot size, which is useful. However, it does not disclose other potential side effects (e.g., triggering re-renders, session impact). The information is adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two short, direct sentences. It front-loads the action ('Resize the page viewport') and adds only essential context. No extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and presence of an output schema, the description covers the core functionality. It could mention error conditions or async behavior, but for a straightforward resize operation, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 3 parameters (width, height, session_id) with 0% description coverage. The description provides an example ('1920x1080') hinting at width/height usage but does not explain valid ranges, units, or the purpose of session_id. This is insufficient compensation for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Resize') and resource ('page viewport'), and provides an example dimension '1920x1080'. It clearly distinguishes from sibling tools like screenshot or scroll by stating it affects layout and screenshot size.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when changing viewport size but does not provide explicit when-to-use or when-not-to-use guidance, nor does it mention alternative tools. The phrase 'e.g. 1920x1080' offers a typical use case but lacks comparative context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_screenshotA
Take a PNG screenshot. By default captures the visible viewport; full_page=True captures the entire scrollable page; ref captures a single element.
output_path: if given, the PNG is WRITTEN TO THAT FILE and the absolute path is returned
as text (instead of returning the image bytes). Use this to hand a screenshot to an
out-of-band vision/OCR tool without routing the (large) image bytes through the caller β
e.g. a text-only LLM driver that delegates 'seeing' to a separate vision model.| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No | ||
| full_page | No | ||
| ref | No | ||
| output_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses capture modes, default vs. full_page vs. ref behavior, and the output_path file-writing behavior. However, it omits any mention of session handling or required permissions, which are relevant for context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three focused sentences. The first sentence states the main purpose and default, the second elaborates modes, the third details output_path. No wordiness or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite missing session_id and not explicitly stating the default return format (image bytes), the description covers key behaviors and use cases adequately for a low-complexity tool. It is sufficiently complete given no annotations or output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Three of four parameters (full_page, ref, output_path) are explained in detail, adding meaning beyond the bare schema. The session_id parameter is not mentioned, leaving a gap. Overall, it compensates well for the 0% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool takes a PNG screenshot and distinguishes three capture modes (viewport, full page, single element). This specificity and differentiation from sibling tools like browser_snapshot earn a top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context on when to use the output_path option for offloading large images to another tool. However, it does not explicitly mention when not to use this tool, nor does it discuss alternatives beyond the implied scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_scrollA
Scroll the page by pixels in a direction, or scroll an element into view.
direction: 'up' | 'down' | 'left' | 'right'. amount: pixels (default 300).
ref: if given, scrolls that element into view (direction/amount ignored).
Use this to trigger lazy-loaded content or reveal off-screen elements.
Returns a snapshot.| Name | Required | Description | Default |
|---|---|---|---|
| direction | No | down | |
| amount | No | ||
| ref | No | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes behavioral traits: pixel scrolling with direction/amount, element scrolling via ref, default values, returns a snapshot. No annotations provided, so description carries full burden and does well, though could mention non-destructive nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise: two sentences plus a bullet-like format. Front-loaded with the main action. Every sentence adds value without repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers main functionality and usage context. Output schema exists for return values. Minor gap on session_id parameter, but overall complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds meaning to direction and amount (pixels, defaults) and ref (scrolls element into view, ignoring direction/amount). Session_id is not explained, but schema coverage is 0% so description compensates well for main parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it scrolls the page by pixels or scrolls an element into view, using specific verbs and resources. It distinguishes between two modes and from sibling tools like browser_scroll_to_bottom implicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use it for triggering lazy-loaded content or revealing off-screen elements, providing good context. Does not compare to sibling browser_scroll_to_bottom, but the use case is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_scroll_to_bottomA
Scroll to the very bottom of the page, pausing to let lazy content load.
Stops when the page height stops growing (infinite scroll exhausted or real
bottom reached). max_scrolls: safety cap. wait_ms: pause per step.
Returns a snapshot of the final state.| Name | Required | Description | Default |
|---|---|---|---|
| max_scrolls | No | ||
| wait_ms | No | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the burden. It discloses the pausing behavior, stopping condition, safety cap (max_scrolls), and return of a snapshot. No contradictions or missing critical side effects are noted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, front-loading the main action. Every sentence adds value: scroll purpose, stopping logic, parameter roles, and return type. No redundant or irrelevant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description does not need to elaborate on return details beyond mentioning a snapshot. It covers the stopping condition, parameter explanations, and the lazy loading pause. Could mention edge cases like already at bottom, but overall complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema coverage, the description adds meaning to max_scrolls and wait_ms, explaining they are safety cap and pause per step. Session_id is not explained, but its purpose is standard in context. Overall, it compensates well for missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool scrolls to the very bottom of the page, with specifics about lazy loading and infinite scroll handling. It distinguishes itself from sibling tools like browser_scroll by focusing on exhaustive scrolling to the bottom.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for pages with lazy content or infinite scroll, and explains the stopping condition. However, it does not explicitly state when to use this tool over alternatives like browser_scroll, nor does it mention 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.
browser_select_comboboxA
Pick value from a CUSTOM / searchable dropdown or combobox (country & country-code
pickers, styled listboxes) where browser_select_option times out. Opens the trigger ref,
types value to filter, commits the highlighted option by keyboard (ArrowDown+Enter), then
VERIFIES the committed value and falls back to clicking the option by visible text. Filter by
the COUNTRY NAME (e.g. 'Germany'), not a dial code ('49') which matches the wrong row. Returns
{committed, actual} + a snapshot β if committed=false the selection did NOT take.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | ||
| value | Yes | ||
| session_id | No | ||
| submit_key | No | Enter |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses the multi-step behavior: opens the trigger, types value to filter, commits via keyboard, verifies the committed value, and falls back to clicking. It also explains the return format {committed, actual} + snapshot.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the purpose and gradually adds detail. It is slightly verbose but every sentence adds value, and the structure logically flows from intent to behavior to return. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, the description covers all necessary behavioral details, parameter meanings, and return format. It is complete for the tool's complexity and provides clear usage guidance, making it easy for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description compensates by explaining the `ref` parameter (the trigger) and `value` parameter (what to type). It also notes the `submit_key` default 'Enter'. However, it does not mention `session_id`, which is optional but could be clarified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool picks a value from custom/searchable dropdowns or comboboxes, specifically for country/country-code pickers and styled listboxes. It distinguishes itself from the sibling tool browser_select_option by mentioning that it handles cases where browser_select_option times out.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use this tool 'where browser_select_option times out,' providing a clear when-to-use scenario. It also gives specific guidance on filtering by country name rather than dial code, preventing common errors.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_select_optionA
Select option(s) in a NATIVE by ref (match by value OR visible label). Self- verifies and, on a no-match, returns the available option labels. For a CUSTOM / searchable dropdown (styled div, role=combobox/listbox β most country-code pickers) this will not work β use browser_select_combobox instead. Returns the committed option + a snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | ||
| values | Yes | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses self-verification behavior, error handling (returns available labels on no-match), and return value (committed option + snapshot). No annotations provided, so description carries full burden, but it is fairly comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise, front-loaded with purpose, followed by conditions and return value, no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers main functionality, error handling, and return value. Output schema exists, so description needn't detail return structure. Could mention 'ref' format but overall complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description implies 'ref' is a locator and 'values' are options to select. It does not describe 'session_id' at all. Adds some value but not full parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool selects options in a NATIVE <select> element by ref, matching by value or visible label. It distinguishes itself from sibling tools like browser_select_combobox for custom dropdowns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use (native <select>) and when not to (custom combobox), and directs to browser_select_combobox as an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_sessionstorage_clearC
Clear all sessionStorage for the current origin.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits. It only states the action without mentioning side effects (e.g., data loss, impact on page state) or prerequisites. It 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, front-loaded with the verb and resource. However, it may be too terse, missing valuable context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the tool's simplicity, the description fails to explain the session_id parameter or what happens when it is null. It lacks sufficient context for an agent to use it correctly without additional inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one parameter (session_id) with 0% description coverage. The description does not explain the parameter's role or default behavior, leaving ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (clear) and the resource (sessionStorage for the current origin). It is specific and distinguishes from sibling tools like browser_localstorage_clear and browser_sessionstorage_get.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like browser_sessionstorage_remove for individual items. The description lacks any context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_sessionstorage_getA
Get a sessionStorage value by key (null if absent).
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| session_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the null behavior, which is good, but does not disclose any error conditions, permissions, or side effects. Adequate for a simple read operation but could be more informative.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the action and resource. No unnecessary words or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is functional for a simple getter, but lacks explanation of the session_id parameter and does not specify the return value type or format. With no output schema, some additional context would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description only addresses the 'key' parameter implicitly, but entirely omits explanation of the 'session_id' parameter, leaving its purpose unclear. This is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'sessionStorage value', and distinguishes itself from sibling tools like browser_sessionstorage_set, browser_sessionstorage_list, etc. The behavior 'null if absent' adds clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving a single value, but does not explicitly specify when to use this over sibling tools, nor does it mention any prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_sessionstorage_listC
List all sessionStorage key/value pairs for the current origin.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only describes the basic action. It does not disclose that the tool is read-only, what happens if no items exist, or how the 'current origin' is determinedβleaving important behavioral aspects unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence that front-loads the key action and resource. It is appropriately concise, though it could benefit from more detail without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, no annotations, and an undocumented parameter, the description lacks completeness. It does not explain the role of session_id, the read-only nature, or how the current origin is contextualized within a browser session.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single parameter (session_id), and the tool description does not mention it at all. The description fails to add any meaning beyond the parameter name, which is insufficient given the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the action (list) and the resource (all sessionStorage key/value pairs for the current origin), clearly distinguishing it from sibling tools like browser_sessionstorage_get or browser_sessionstorage_set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., browser_localstorage_list, browser_sessionstorage_get). The description does not mention prerequisites or context, such as the need for an active browser session.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_sessionstorage_removeC
Remove a sessionStorage key.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It only states the action without explaining edge cases (e.g., what happens if the key doesn't exist) or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short (5 words), which is concise, but it omits necessary context. Brevity is maintained but at the cost of informativeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema and multiple sibling tools, the description is insufficient. It does not mention that the tool operates within a specific browser session (via session_id) or how it differs from clearing all session storage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description provides no explanation for the 'key' or 'session_id' parameters. Users cannot understand the meaning or usage of these parameters from the description alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Remove a sessionStorage key.' clearly states the action (remove) and the resource (sessionStorage key). It is specific and distinguishes from siblings like browser_sessionstorage_clear (removes all) and browser_sessionstorage_set (sets a value).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like browser_sessionstorage_clear or browser_sessionstorage_set. The description does not specify any context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_sessionstorage_setC
Set a sessionStorage key to a value.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| value | Yes | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description should disclose behavioral traits like overwriting existing keys, session-scoping, or side effects. Only states the basic action, leaving the agent unaware of important behaviors like overwrite, size limits, or per-session isolation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is brief, but lacks front-loaded key details. While concise, it sacrifices necessary information for completeness. Sentence earns its place but could be improved with additional context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite an output schema existing, the description omits crucial context such as return value, error conditions, or the significance of the optional session_id parameter. Minimal coverage for a tool with three parameters and no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no meaning to the three parameters (key, value, session_id). It does not explain the role of session_id or its default value, leaving the agent to infer from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Set', resource 'sessionStorage key', and object 'value'. Distinguishes from sibling tools like browser_sessionstorage_get, remove, and clear by operation. Precisely communicates the action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use sessionStorage vs localStorage, or when to use this tool over other session storage operations. No context on prerequisites or alternative tools among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_set_extra_headersB
Set extra HTTP headers sent with every request in this session.
| Name | Required | Description | Default |
|---|---|---|---|
| headers | Yes | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description only says 'every request in this session' but doesn't explain if headers are additive, overridden, or limitations. Lacks details on destructive/read-only behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, clear sentence. No wasted words, but could be structured with additional details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple setter tool with an output schema, the description is adequate but doesn't cover all behavioral aspects like header merging or session scoping.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%. The description mentions 'extra HTTP headers' but doesn't explain header format (key-value object) or the optional session_id parameter's effect. Minimal addition to schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sets extra HTTP headers per session, using a specific verb and resource. It differentiates from sibling tools like browser_set_proxy or browser_mock_url.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like browser_set_proxy or browser_mock_url. No exclusions or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_set_geolocationC
Override the geolocation the page reads (note: geoip already aligns geo to the IP).
| Name | Required | Description | Default |
|---|---|---|---|
| latitude | Yes | ||
| longitude | Yes | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It states that the tool overrides geolocation, but does not specify whether the override is temporary or persists across navigations, nor any side effects or limitations. The note about geoip is helpful but insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, short and to the point. It is not verbose, but could be slightly more informative without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has an output schema (not shown) and is a mutation, the description lacks essential context such as the effect on the browser session, return value, or how it interacts with other geolocation-related settings. It is incomplete for an agent to use confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides no additional meaning for the parameters beyond their names. Schema coverage is 0%, so it does not compensate. Latitude and longitude are obvious, but units or constraints are missing. Session_id is unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Override' and the resource 'geolocation the page reads'. The note about geoip alignment adds context that distinguishes this tool from default behavior, but it could be more precise about the scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a note about geoip already aligning geo, implying that setting is optional, but it does not explicitly state when to use this tool versus alternatives or when not to use it. There is no guidance on prerequisites or consequences.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_set_inputA
Set value on a FRAMEWORK-CONTROLLED input (React/Vue) via the native value setter +
input/change events. Use this when browser_type / fill silently leaves the field EMPTY
(controlled components re-derive value from state and ignore plain typing β e.g. some OTP and
masked phone inputs). Returns the resulting value + a snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | ||
| value | Yes | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes the mechanism (native setter + events) and return value (value + snapshot). No annotations exist, so description carries full burden. Does not cover error conditions or permissions, but adequately explains the core behavior for the intended use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, no superfluous information. Front-loads the purpose. Efficient and to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of controlled inputs, the description explains why the tool exists and how it works. Output schema covers return values. Could mention error handling or invalid ref, but sufficient for core use case.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 3 parameters with 0% description coverage. Description mentions 'value' implicitly but does not explain 'ref' or 'session_id'. The agent can infer ref from context, but lacks explicit parameter guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it sets value on framework-controlled inputs (React/Vue) via native setter and events. Distinguishes from siblings like browser_type and browser_fill by specifying the exact scenario where it is needed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises when to use: when browser_type/fill leaves field empty due to controlled components. Provides concrete examples (OTP, masked phone inputs). Lacks explicit 'when not to use' 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.
browser_set_offlineA
Toggle the context's network offline/online (to test offline behavior).
| Name | Required | Description | Default |
|---|---|---|---|
| offline | No | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the tool 'toggles the context's network offline/online', indicating a state change. However, it does not disclose the scope (e.g., affects all tabs), whether it is reversible (implied by toggle), or the exact effect on network requests. This is adequate but lacks detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no wasted words. It conveys purpose and context efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With two parameters, no annotations, and an output schema, the description is too minimal. It does not explain return values, side effects on the session, or how the toggle interacts with other network settings. More detail is needed for complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does not explain the 'offline' boolean parameter (default true) or the optional 'session_id'. The description adds minimal value beyond the parameter names, failing to clarify their semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Toggle' and clearly identifies the resource ('network offline/online') and the purpose ('to test offline behavior'). This distinguishes it from sibling tools like browser_set_proxy or browser_block_urls.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states the use case: 'to test offline behavior'. This provides clear context for when to use the tool, though it does not include when-not-to-use or alternatives, which are not critical for a simple toggle.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_set_proxyA
Pin a proxy as the default for subsequent sessions/identities. (Proxies are bound at launch, so existing sessions are unaffected.)
| Name | Required | Description | Default |
|---|---|---|---|
| server | Yes | ||
| username | No | ||
| password | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden. It discloses that the proxy is set as a default and that existing sessions are unaffected. However, it does not mention required permissions, error handling, or what happens on invalid input. For a simple configuration tool, this is adequate but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the core purpose in the first sentence and adding a crucial behavioral note in the second. No redundant or unnecessary wording. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 parameters (1 required) and an output schema, the description is minimal. It covers the main purpose and a key constraint but lacks parameter guidance and output details. Since an output schema exists, return value explanation is less critical, but the description still feels incomplete for a tool with several parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% (no parameter descriptions in schema). The description does not elaborate on any parameters, even though 'server' is required and 'username'/'password' are optional. The parameter names are self-explanatory, but the description should have provided context (e.g., 'set the proxy server address'). It adds no value beyond the schema's bare names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Pin a proxy as the default for subsequent sessions/identities.' It uses a specific verb ('pin') and resource ('proxy'), and the unique capability sets it apart from sibling tools, none of which manage proxy configuration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context: 'Proxies are bound at launch, so existing sessions are unaffected.' This tells the agent when to use the tool (for new sessions/identities) and implicitly warns against using it to affect current sessions. No alternatives are mentioned, 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.
browser_snapshotA
Capture the page's ARIA accessibility tree with [ref=...] handles.
This is the primary way to 'see' a page: it lists actionable elements (roles +
names + refs) without CSS/markup noise. Pass a ref from here to click/type/hover.
Frame-hosted elements get prefixed refs like 'f1e36' (iframe 1, element 36).
Shadow DOM elements appear with plain eN refs β the locator engine pierces them.
enrich=True ALSO appends a DOM map of visible interactive elements, each with a css
selector usable in the ref slot (browser_click(ref="css=...")). Use it when the ARIA
tree collapses to bare 'generic' nodes with no usable names/refs (JS-heavy sites).
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No | ||
| depth | No | ||
| enrich | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that frame-hosted elements get prefixed refs, shadow DOM elements appear as plain eN refs, and enrich appends a DOM map. It does not explicitly state read-only behavior or other constraints, but it covers key traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loads the main purpose. It uses clear bullet points for additional details. It is slightly lengthy but each sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters and an output schema, the description covers the return value (ARIA tree with refs, enriched DOM map) but fails to explain the session_id and depth parameters, leaving gaps in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains the enrich parameter in detail but provides no information about session_id or depth, leaving two parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it captures the page's ARIA accessibility tree with ref handles, which is the primary way to 'see' a page. It distinguishes from siblings by explaining its role for interaction via refs and mentions enrich mode for JS-heavy sites.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool (primary method for seeing a page and getting actionable handles) and when to use enrich=True (when ARIA tree collapses). It does not explicitly list alternatives or when not to use it, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_snapshot_frameA
Snapshot a specific child frame directly. Use when browser_snapshot returns an iframe node with empty/collapsed children β snapshotting the frame is reliable (works for same-origin AND cross-origin frames).
frame_ref: a frame id ('f1'), an element ref inside the frame ('f1e36'), or the
<iframe> element's own ref ('e81'). Returns the frame's ARIA tree with refs
rewritten to 'fNeM' form so they're directly usable with click/type/etc.| Name | Required | Description | Default |
|---|---|---|---|
| frame_ref | Yes | ||
| session_id | No | ||
| depth | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses key behavioral traits: it works for both same-origin and cross-origin frames, and returns the frame's ARIA tree with refs rewritten to 'fNeM' form for direct use. It does not mention any destructive behavior or rate limits, which is appropriate for a read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with about 4 sentences. It front-loads the purpose and usage, then explains the parameter. There is no fluff, though it could be slightly tighter. Efficient overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (3 parameters, output schema exists, sibling tools), the description covers the main parameter and usage scenario well. It does not explain session_id or depth, but these may be inferred from the context (e.g., session_id from browser session, depth for ARIA tree depth). With output schema present, return values are not needed. Mostly complete with minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains frame_ref well: 'a frame id ("f1"), an element ref inside the frame ("f1e36"), or the <iframe> element's own ref ("e81")'. However, it does not explain session_id or depth, leaving these parameters without added meaning. Partial compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it snapshots a specific child frame and distinguishes from browser_snapshot by specifying when to use it (when iframe node has empty/collapsed children). The verb 'Snapshot' and resource 'child frame' are specific, and it differentiates from the sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use this tool: 'Use when browser_snapshot returns an iframe node with empty/collapsed children'. It also notes it works for same-origin and cross-origin frames, implying reliability. However, it does not explicitly state when not to use it, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_solve_captchaA
Solve a captcha on the current page and inject the token (no extension).
kind: 'turnstile' | 'recaptcha_v2' | 'recaptcha_v3' | 'hcaptcha' | 'funcaptcha'.
website_key is auto-detected from the DOM if omitted (for FunCaptcha that's the
public key). provider defaults to the configured one (needs that provider's API
key in the environment). Returns the solved token.
recaptcha_v3: pass page_action (must match the site's grecaptcha.execute action)
and optionally min_score (0.1β0.9); the token is injected and grecaptcha.execute
is overridden to return it.
funcaptcha (Arkose): funcaptcha_subdomain (the Arkose 'surl') and funcaptcha_data
(the dynamic 'blob' JSON string) are passed through for sites that require them.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | turnstile | |
| website_key | No | ||
| provider | No | ||
| session_id | No | ||
| page_action | No | ||
| min_score | No | ||
| funcaptcha_subdomain | No | ||
| funcaptcha_data | No | ||
| timeout | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must cover behavioral aspects. It explains auto-detection of website_key, token injection, overriding of grecaptcha.execute for recaptcha_v3, and dependence on provider API key. It does not explicitly state if the operation is read/write or side effects, but the injection implies mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is lengthy but structured by captcha type. It contains detailed per-kind instructions that could be somewhat redundant. The main purpose is front-loaded, but it could be more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multiple captcha types) and the existence of an output schema, the description covers input parameters and behavior well. It mentions the returned token. However, it does not discuss error cases or failure modes, which would enhance completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains the kind parameter with enum values, auto-detection of website_key, default provider, recaptcha_v3-specific page_action and min_score, and funcaptcha subdomain/data. Parameters like session_id and timeout are not explained, but timeout has a clear default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool solves a captcha and injects the token. The name 'browser_solve_captcha' plus the description make the purpose unambiguous, and it is distinct from all sibling browser tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides detailed usage guidance for different captcha kinds (turnstile, recaptcha_v2/v3, hcaptcha, funcaptcha), including when to pass specific parameters like page_action and funcaptcha data. It does not explicitly state when not to use this tool, but the context is clear given its unique function.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_start_tracingC
Start a Playwright trace (screenshots + DOM snapshots) for later inspection.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must fully disclose behavioral traits. It fails to mention key details: whether starting a new trace stops any existing trace, impact on browser performance, authentication requirements, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no filler. Direct and to the point. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the large set of sibling browser tools and the presence of an output schema, the description should provide more context about when to use this tool, how it relates to 'browser_stop_tracing', and what the output contains. It currently lacks this completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the only parameter (session_id) is not explained in the description. The description adds no semantic value beyond what the schema provides (optional, nullable). The parameter's purpose remains ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action ('Start') and the resource ('Playwright trace'), and explains what it captures ('screenshots + DOM snapshots') for later inspection. It implicitly distinguishes from the sibling tool 'browser_stop_tracing' by focusing on starting rather than stopping.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., when to start tracing vs. using screenshots or snapshots directly). There's no mention of preconditions, such as needing an active session, 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.
browser_stop_tracingA
Stop tracing and write a trace.zip (open with playwright show-trace). Returns the path.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must convey behavioral traits. It indicates that a trace.zip is written and the path is returned, but does not explain edge cases, error handling, or input validation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise with two clear sentences. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema details shown and two undocumented parameters, the description is too sparse. It fails to mention that tracing must be active or that the output is a file path.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must add parameter meaning. It does not explain the purpose of 'path' or 'session_id', leaving the agent to guess.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Stop tracing and write a trace.zip'. It specifies the resource (trace) and action (stop), distinguishing it from its sibling browser_start_tracing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use or when not to use. It is implied that it should be used after starting tracing, but no explanation of parameters or prerequisites is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_storage_stateA
Save cookies + localStorage to a JSON file. Reload it later via browser_new_session(storage_state=path). Returns the file path.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No | ||
| path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool saves to a JSON file and returns the path. However, it does not mention whether it overwrites an existing file, any permission requirements, or if it clears storage before saving. This is a moderate gap in 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action (save cookies + localStorage to JSON). Every sentence serves a purpose: the first describes the operation, the second explains reload and return value. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and presence of an output schema, the description covers the basic usage (save and reload). However, it lacks details on parameter behavior and interaction with sibling tools like browser_localstorage_* or browser_cookie_*. The description is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must add meaning. It mentions 'path' indirectly (reload via storage_state=path) but does not explain the path parameter's purpose or behavior (e.g., if omitted, a path is generated). The session_id parameter is not mentioned at all. The description adds little value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it saves cookies and localStorage to a JSON file, mentions reloading via browser_new_session, and specifies it returns the file path. This is a specific verb+resource combination that distinguishes it from sibling tools like individual cookie or localStorage commands.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use this tool (to persist browser state) and how to reload it via browser_new_session. However, it does not mention when not to use it or provide alternatives, though the context is still fairly clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_switch_to_popupA
Switch the active page to the most recently opened popup or new tab.
Use this after triggering an OAuth / SSO flow (Google Sign-In, GitHub OAuth,
etc.) or any action that calls window.open() or opens a target=_blank link.
The tool waits up to timeout_ms for the new window to open, then makes it the
active page and returns its ARIA snapshot. To go back to the original tab
afterward, use browser_tabs(action='select', index=0).| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No | ||
| timeout_ms | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool waits up to timeout_ms for the new window, makes it active, and returns its ARIA snapshot. It doesn't describe behavior on timeout or error, but the core behavioral traits 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the main action and reasonably concise. The second paragraph could be slightly trimmed, but overall it is well-structured and every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists, the description need not detail the return format. It states the tool returns an ARIA snapshot, which is sufficient. It lacks details on error handling or timeout behavior, but the overall contextual completeness is high for a focused tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must add meaning. It implicitly defines timeout_ms as the wait duration, but does not explain session_id. Parameter names are somewhat self-explanatory, but the description could explicitly define both parameters to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Switch the active page to') and identifies the resource ('the most recently opened popup or new tab'). It clearly distinguishes itself from sibling tools like browser_tabs and browser_navigate by specifying use cases (OAuth/SSO flows, window.open, target=_blank).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use (after triggering OAuth/SSO flows or actions that open new windows/tabs) and mentions an alternative for returning to the original tab (browser_tabs(action='select', index=0)). This helps the agent choose between sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_tabsA
Manage tabs. action: list | new | select | close (index for select/close, url optional for new). Returns the resulting tab list.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | list | |
| index | No | ||
| url | No | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden. It discloses that the action returns the resulting tab list, but does not discuss error handling, side effects (e.g., focus changes on close), or default behavior beyond listing. Basic transparency but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, fitting all essential information in a single sentence. It front-loads the action (Manage tabs) and uses parenthetical notation for parameter usage efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters, one (session_id) is entirely unaddressed. The output schema exists but its contents are not available to evaluate. The description fails to cover all aspects of the tool's behavior for all parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It explains that 'index' is for select/close and 'url' is optional for new, but makes no mention of 'session_id'. This leaves a parameter undocumented, reducing its utility.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Manage tabs' and enumerates the specific actions (list, new, select, close), with clear purpose as a tab management tool. It distinguishes itself from sibling browser tools which handle navigation, clicking, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly indicates when to use (for tab operations) but lacks explicit when-not-to-use or alternatives. Given it's the only tab manager among siblings, this is adequate but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_totp_generateA
Generate a TOTP (time-based one-time password) from a base32 shared secret.
No browser or session needed β this is a pure computation tool.
Use it when a site uses an authenticator app (Google Authenticator, Authy, etc.)
as the second factor. The secret is the base32 string shown during 2FA setup
(usually labeled 'secret key' or encoded in the QR code's otpauth:// URI).
digits: code length (default 6). interval: time step in seconds (default 30).
Returns the current 6-digit (or N-digit) TOTP code as a string.
| Name | Required | Description | Default |
|---|---|---|---|
| secret | Yes | ||
| digits | No | ||
| interval | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the full burden. It states that the tool is pure computation, no browser needed, and returns a string. It could mention that it relies on current system time, but overall it is transparent about its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with no unnecessary words. It front-loads the purpose, then provides usage context, then parameter details. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (3 parameters, no nested objects, output schema exists), the description covers all necessary information: purpose, usage, parameters, and return format. It is complete for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must add meaning. It explains the secret as the base32 string from 2FA setup, and defines digits and interval with defaults. This fully compensates for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'Generate a TOTP from a base32 shared secret,' clearly stating the verb and resource. It distinguishes itself from sibling browser tools by noting it is a pure computation that requires no browser or session.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains that the tool is used when a site requires an authenticator app as a second factor, and clarifies that no browser or session is needed. It does not explicitly mention when not to use it, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_typeC
Type text into a field by ref (top-frame or iframe ref like 'f1e20'). submit=True presses Enter after. Returns a snapshot.
Pass the string as `text`. `value` is accepted as an alias for `text` (a common slip,
since browser_fill_form fields use `value`) so the call doesn't hard-error.| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | ||
| text | No | ||
| session_id | No | ||
| submit | No | ||
| clear | No | ||
| value | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions typing text, submitting, and returning a snapshot, but fails to disclose the default clearing behavior (clear=true), error handling for invalid refs, or any destructive side effects. This is insufficient for a tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is fairly concise, front-loading the main action and then adding details about submit and value alias. It avoids unnecessary words, though a small amount of redundancy exists (e.g., 'Pass the string as text' could be integrated).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (6 parameters, no annotations), the description covers the primary purpose and two key parameters but misses the default clear behavior and session_id. Output schema exists but is not leveraged to describe return values. The description is adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning for ref, text, value (alias), and submit, but does not explain session_id or clear. Since schema has 0% description coverage, the description partially compensates by explaining key parameters, though it leaves gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'type text into a field' and specifies the resource is 'by ref'. It mentions the return of a snapshot, which distinguishes it from other browser actions. However, it could be more explicit about differentiating from similar tools like browser_keyboard_type or browser_set_input.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides minimal usage guidance. It hints at an alternative (browser_fill_form) through the value alias explanation but does not explicitly state when to use this tool versus others. No conditions, prerequisites, or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_type_otpA
Enter an OTP/verification code into the field at ref, handling MULTI-BOX widgets (one
per digit that auto-advances) by distributing the digits across the boxes
via the React-tracked setter β instead of typing the whole code into box 1 (which lands the
digits in the wrong boxes). Works on a single field too. Returns {boxes, value} (read it back)
+ a snapshot. After this, still SUBMIT (Enter / a Verify button).
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | ||
| code | Yes | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It details the distribution of digits across boxes using a React-tracked setter, returns a snapshot, and clarifies that submission is separate. This is transparent about the tool's effect on the page.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured and front-loaded with the core purpose. It uses backticks for clarity and provides necessary detail without unnecessary fluff. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of handling multi-box OTP widgets, the description covers the key aspects: behavior, return value, and follow-up action. It does not explain what 'ref' refers to (selector type) or error handling, but it is sufficient for an experienced user.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Description explains 'ref' (the field) and 'code' (the OTP) but does not mention the optional 'session_id' parameter. With 0% schema documentation coverage, the description partially compensates for the required parameters but leaves the optional one undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool's purpose: entering an OTP/verification code, specifically handling multi-box widgets where each digit goes into a separate input. It distinguishes from siblings like 'browser_type' by specifying the multi-box behavior and return value.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description explains when to use (for OTP fields, especially multi-box) and mentions that after entering the code, one still needs to submit (Enter/Verify button). However, it does not explicitly state when not to use it or provide alternative tools like 'browser_type' for single-input fields.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_unblock_urlsB
Remove all URL routes added via browser_block_urls or browser_mock_url.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool removes all URL routes added by two specific tools, which is transparent about scope and effect. However, it does not mention any potential side effects, permissions needed, or if the action is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no unnecessary words. It is front-loaded with the action and scope, making it highly concise and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is relatively simple with one optional parameter and an output schema (though not described), the description covers the core functionality. However, it lacks context on default behavior (e.g., when session_id is null) and does not clarify if removal is across all sessions or just the current one.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the tool description does not mention the only parameter 'session_id'. The parameter's purpose and impact are left entirely to the agent to infer, adding no value beyond the schema itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Remove all URL routes') and specifies the tools that add them ('browser_block_urls or browser_mock_url'). This provides a specific verb and resource, distinguishing it from siblings like browser_block_urls and browser_mock_url.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when wanting to undo URL blocking or mocking, but does not explicitly state when to use this tool versus alternatives, nor does it provide exclusions or prerequisites. The context is clear but lacks explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_verify_element_visibleC
Assert an element (by ref) is visible. Returns {ok, ...}.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | ||
| session_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must fully disclose behavior. It mentions return value format but does not explain what happens on failure (e.g., element not found, not visible) or if there are any side effects. The term 'assert' is ambiguousβdoes it throw or return an error? Lacks critical behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently states purpose and return value. It is appropriately sized for a simple tool and front-loaded. However, the return format is slightly vague ('{ok, ...}'), which slightly reduces clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of schema descriptions, output schema, and annotations, the description is incomplete. It does not explain parameter semantics, error handling, or usage context. For a tool with many siblings, it fails to provide sufficient information for correct selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain parameters. It mentions 'element (by ref)' but does not clarify what 'ref' means (e.g., CSS selector, XPath, or internal reference). The optional 'session_id' is not explained at all. Fails to add meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool asserts visibility of an element by reference. It is specific with a verb and resource, and the name distinguishes it from siblings like 'browser_verify_element_hidden'. However, it does not explicitly differentiate from siblings, missing the top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites (e.g., need for a valid session or element ref) or when not to use it. This significantly hinders an agent's ability to decide correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_verify_text_visibleC
Assert some visible text appears on the page. Returns {ok, ...}.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| session_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions a return format {ok, ...} but does not disclose behavior on failure (e.g., throws error), side effects, or permissions needed. This is insufficient for a mutation-like assertion.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (one sentence) but lacks necessary details. It is front-loaded but incomplete, trading completeness for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (assert text visible), the description is incomplete. It does not explain error handling, session usage, or the exact return structure. No output schema further reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain the meaning of 'text' or 'session_id' parameters. The return format is vaguely referenced but not detailed, leaving the agent to guess parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool asserts visible text on a page, with a clear verb ('assert') and resource ('visible text'). It is distinct from siblings like browser_verify_element_visible which check element visibility.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide guidelines on when to use this tool versus alternatives (e.g., browser_verify_element_visible) or when not to use it. No exclusions or contextual hints are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_verify_valueC
Assert an input/element (by ref) has the expected value. Returns {ok, ...}.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | ||
| value | Yes | ||
| session_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full burden. It mentions returning '{ok, ...}' but does not explain the response structure, failure behavior, waiting semantics, or accepted input types beyond vague 'by ref'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise but lacking necessary details. It is front-loaded with the action but sacrifices completeness for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a verification tool without an output schema, the description should clarify success/failure return and edge cases. The vague '{ok, ...}' is insufficient for reliable agent invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description adds no meaning to parameters. 'ref' and 'value' are mentioned but not defined (e.g., locator format, value type), leaving the agent without key usage details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Assert' and the resource 'input/element (by ref)' with the expected value. It explicitly distinguishes from sibling verification tools like browser_verify_element_visible and browser_verify_text_visible by focusing on value assertion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as browser_evaluate or browser_extract. Missing context on prerequisites or exclusions, leaving the agent to infer appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_video_pathA
Path to this session's native video recording (Chromium only).
Only present when record_video=true was passed to browser_new_session. The .webm is
finalized when the session closes (browser_close_session); the path is known beforehand.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Reveals format (.webm), lifecycle (finalized on close), and precondition (record_video=true). Could mention error handling for invalid sessions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences front-load purpose and condition, with no wasted words. Every sentence adds essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description adequately explains when and why to call the tool. Missing details on edge cases (e.g., invalid session_id) but sufficient for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description fails to explain the 'session_id' parameter. The text implies a single session but doesn't clarify whether the parameter is needed or defaults. This omission limits tool usability.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the path to the session's native video recording, specifies it's Chromium-only, and distinguishes it from sibling tools by focusing on path retrieval rather than actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the tool is only valid when record_video=true was set in browser_new_session, and gives timing context (path known before close, file finalized after). Does not mention alternatives, but no other tool serves this purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_wait_forA
Wait for a condition then return a fresh snapshot. Pass exactly one condition:
text β text to become visible (searched across all frames including iframes).
text_gone β text to disappear.
selector β CSS/Playwright selector to become visible.
url β URL glob/regex to wait for (SPA client-side navigation).
network_idle β wait until no network requests for 500ms (SPA render complete).
value_ref + value β wait until the element at value_ref HOLDS `value` (substring). Confirms a
field/dropdown actually committed (e.g. value_ref=<country picker>, value='Germany').
time β wait N seconds unconditionally.
timeout_ms β max wait in ms (default 30 000).
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No | ||
| text | No | ||
| text_gone | No | ||
| selector | No | ||
| url | No | ||
| network_idle | No | ||
| value_ref | No | ||
| value | No | ||
| time | No | ||
| timeout_ms | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It explains each condition's effect and default timeout. However, it does not describe behavior on timeout, error handling, or snapshot format. Adequate but not highly detailed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise and well-structured: a clear first sentence, then a bullet-like list of conditions with concise explanations. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 10 parameters, no annotations, and existence of output schema, the description covers the main conditions and timeout. Missing session_id explanation and error behavior, but otherwise complete for guiding agent usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must explain parameters. It explains all condition parameters and timeout_ms. Missing explanation for 'session_id', though common across tools. Adds meaning beyond schema for the core conditions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool waits for a condition and returns a fresh snapshot. It lists all possible conditions, distinguishing it from other browser tools like click or navigate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Pass exactly one condition' and explains each condition's use case (e.g., text to become visible, network_idle for SPA). Does not explicitly state when not to use, but the list provides clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_wait_for_downloadA
Wait for a file download to complete and return its saved path.
Call this before (or immediately after) clicking a download button.
The first download event is captured, saved to save_dir, and the
absolute file path is returned. timeout_ms: max wait (default 30s).| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No | ||
| save_dir | No | data/downloads | |
| timeout_ms | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full burden and thoroughly explains behavior: captures first download event, saves to save_dir, returns absolute path, and includes timeout. It discloses no hidden side effects or destructive actions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: first sentence states purpose, subsequent sentences add behavioral details. No extraneous information. Each sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and presence of an output schema (implied by 'returns its saved path'), the description covers what the tool does, its parameters, and return value. It is complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It explains 'save_dir' and 'timeout_ms' semantics clearly but omits 'session_id' entirely. While session_id may be inferred from context, the description should explicitly cover all parameters when schema lacks descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool waits for a file download to complete and returns its saved path. The verb 'wait' and resource 'download' are specific. Among siblings, no other tool handles download waiting, so it distinguishes itself effectively.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Call this before (or immediately after) clicking a download button,' providing clear usage context. It does not mention when not to use or alternatives, but the guidance is sufficient for typical scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_ws_messagesA
Return all WebSocket connections opened this session and their messages.
Each entry: {url, closed, messages: [{dir: 'sent'|'received', data: str}]}.
url_contains: filter to connections whose URL includes this substring.
Useful for real-time apps (trading dashboards, chat, live data feeds) that
deliver state over WebSocket rather than HTTP.| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No | ||
| url_contains | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It explains the output structure and the url_contains filter, but does not explicitly state that the tool is read-only or non-destructive, nor does it clarify the role of session_id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with a clear first sentence and a bullet-like breakdown. No redundant information, though the formatting could be more structured for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description sufficiently covers the tool's output structure and filter parameter. It misses potential limitations or prerequisites, but is still fairly complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must add meaning. It explains url_contains but not session_id (only implied). This adds some value but leaves ambiguity about session_id's purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns all WebSocket connections and their messages. It distinguishes itself from sibling tools like browser_console_messages and browser_network_requests by specifically targeting WebSocket data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage context by mentioning real-time apps that use WebSocket instead of HTTP. It implies when to use the tool but does not explicitly state when not to use or name alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
18 tool updates
v0.3.7- Added
browser_capture_mhtml - Added
browser_cdp_click - Added
browser_cdp_send - Removed
browser_extract - Added
browser_find - Changed
browser_navigate2 fields changed- added
Input schema / properties / timeout_msAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Timeout Ms" +} - added
Input schema / properties / wait_untilAdded value: +{ + "default": "domcontentloaded", + "title": "Wait Until", + "type": "string" +}
- Changed
browser_new_session5 fields changed- added
Input schema / properties / extensionsAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Extensions" +} - added
Input schema / properties / humanizeAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Humanize" +} - added
Input schema / properties / record_videoAdded value: +{ + "default": false, + "title": "Record Video", + "type": "boolean" +} - added
Input schema / properties / record_video_heightAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Record Video Height" +} - added
Input schema / properties / record_video_widthAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Record Video Width" +}
- Added
browser_pdf_save - Changed
browser_screenshot1 field changed- added
Input schema / properties / output_pathAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Output Path" +}
- Added
browser_select_combobox - Added
browser_set_input - Changed
browser_snapshot1 field changed- added
Input schema / properties / enrichAdded value: +{ + "default": false, + "title": "Enrich", + "type": "boolean" +}
- Removed
browser_start_recording - Removed
browser_stop_recording - Changed
browser_type5 fields changed- added
Input schema / properties / text / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / text / defaultAdded value: +null - removed
Input schema / properties / text / typeRemoved value: -"string" - added
Input schema / properties / valueAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Value" +} - changed
Input schema / requiredPrevious value: -[ - "ref", - "text" -]New value: +[ + "ref" +]
- Added
browser_type_otp - Added
browser_video_path - Changed
browser_wait_for2 fields changed- added
Input schema / properties / valueAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Value" +} - added
Input schema / properties / value_refAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Value Ref" +}
78 tool updates
v0.1.2- First observed
browser_block_urls - First observed
browser_clear_highlights - First observed
browser_click - First observed
browser_close_session - First observed
browser_console_messages - First observed
browser_cookie_clear - First observed
browser_cookie_delete - First observed
browser_cookie_get - First observed
browser_cookie_list - First observed
browser_cookie_set - First observed
browser_drag - First observed
browser_evaluate - First observed
browser_extract - First observed
browser_file_upload - First observed
browser_fill_form - First observed
browser_generate_locator - First observed
browser_grant_permissions - First observed
browser_handle_dialog - First observed
browser_har_export - First observed
browser_highlight - First observed
browser_hover - First observed
browser_keyboard_type - First observed
browser_list_sessions - First observed
browser_localstorage_clear - First observed
browser_localstorage_get - First observed
browser_localstorage_list - First observed
browser_localstorage_remove - First observed
browser_localstorage_set - First observed
browser_mock_url - First observed
browser_mouse_click - First observed
browser_mouse_down - First observed
browser_mouse_drag - First observed
browser_mouse_move - First observed
browser_mouse_up - First observed
browser_mouse_wheel - First observed
browser_navigate - First observed
browser_navigate_back - First observed
browser_navigate_forward - First observed
browser_network_request - First observed
browser_network_requests - First observed
browser_new_identity - First observed
browser_new_session - First observed
browser_press_key - First observed
browser_reload - First observed
browser_resize - First observed
browser_screenshot - First observed
browser_scroll - First observed
browser_scroll_to_bottom - First observed
browser_select_option - First observed
browser_sessionstorage_clear - First observed
browser_sessionstorage_get - First observed
browser_sessionstorage_list - First observed
browser_sessionstorage_remove - First observed
browser_sessionstorage_set - First observed
browser_set_extra_headers - First observed
browser_set_geolocation - First observed
browser_set_offline - First observed
browser_set_proxy - First observed
browser_snapshot - First observed
browser_snapshot_frame - First observed
browser_solve_captcha - First observed
browser_start_recording - First observed
browser_start_tracing - First observed
browser_stop_recording - First observed
browser_stop_tracing - First observed
browser_storage_state - First observed
browser_switch_to_popup - First observed
browser_tabs - First observed
browser_totp_generate - First observed
browser_type - First observed
browser_unblock_urls - First observed
browser_verify_element_hidden - First observed
browser_verify_element_visible - First observed
browser_verify_text_visible - First observed
browser_verify_value - First observed
browser_wait_for - First observed
browser_wait_for_download - First observed
browser_ws_messages
TDQS
Most tools have distinct purposes, but there are overlapping sets like multiple click methods (browser_click, browser_cdp_click, browser_mouse_click) and type methods (browser_type, browser_type_otp, browser_set_input). Descriptions help differentiate, but some ambiguity remains.
All tools follow a consistent 'browser_verb_noun' snake_case pattern. The naming is predictable and well-structured, with no mixing of conventions.
With 84 tools, the server is overly large for its scope. While browser automation is broad, this many tools risk overwhelming agents and could benefit from consolidation.
The tool set covers nearly every aspect of browser automation: navigation, clicks, typing, forms, storage, network, screenshots, PDF, permissions, captchas, TOTP, and more. There are no obvious gaps.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Stealth web browser for agents: search, fetch, click, download and type in persistent MCP sessions.
Stealth web automation for AI agents. Login, signup, navigate, screenshot.
Stealth web automation for AI agents. Login, signup, navigate, screenshot.
Browser MCP for logged-in tasks. Uses your Chrome β credentials stay local. Zero-token replay.
Related MCP Servers
- AlicenseBqualityDmaintenanceMulti-session browser MCP server that gives AI agents up to 15 fully-isolated browsers running in parallel. 36 tools including navigation, extraction, network intercept, stealth, and self-improvement. Each session has its own cookies, storage, and fingerprint so agents never collide.37625MIT
- AlicenseBqualityCmaintenanceProvides undetectable browser automation for LLM agents via MCP, enabling real Chrome interaction with stealth features, DOM accessibility, and DevTools integration.983MIT
- AlicenseNot gradedqualityDmaintenanceProvides a real browser that bypasses bot detection (Cloudflare, Turnstile) for AI agents, enabling navigation, clicking, typing, screenshots, and data collection through MCP tools.104MIT
- AlicenseNot gradedqualityBmaintenanceThis MCP server exposes an anti-detect Firefox browser that passes bot-detection tests, allowing LLMs to automate web interactions with humanized clicks and fingerprint randomization.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Evil-Bane/eyebrowse'
If you have feedback or need assistance with the MCP directory API, please join our Discord server