DrissionPage BetterMCP
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., "@DrissionPage BetterMCPOpen a new tab and navigate to https://example.com"
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.
DrissionPage BetterMCP
A better DrissionPage MCP server — covers most capabilities of the original library, 255 unit tests, 100% service coverage, AI-optimized tool calls and descriptions.
English | 中文
Why BetterMCP
BetterMCP | Note | |
55 Tools | Covers browser, tabs, navigation, elements, forms, screenshots, network, cookies, storage, iframes, files, and more | Most capabilities of the original library, ready out of the box |
255 Unit Tests | 17 test modules + 6 integration test suites | 100% service coverage, verifiable on every commit |
AI-Friendly | Clear tool descriptions, explicit parameter semantics, unified response structure | LLMs understand on first call — fewer retries, less token waste |
Element Cache |
| No repeated lookups, more efficient interactions |
Native Locator Syntax |
| Full DrissionPage syntax support |
Dual Transport |
| Works with all major AI coding tools |
Related MCP server: DrissionPage MCP Server
Quick Start
Prerequisites
Python >= 3.10
Chrome / Chromium browser
Install
git clone https://github.com/pureTrue/DrissionPage-BetterMCP.git
cd DrissionPage-BetterMCP
uv syncConfigure Your AI Tool
Claude Code
Project root .mcp.json:
{
"mcpServers": {
"drissionpage": {
"command": "uv",
"args": ["run", "--directory", "/path/to/DrissionPage-BetterMCP", "dp-mcp"]
}
}
}Or via CLI:
claude mcp add drissionpage -- uv run --directory /path/to/DrissionPage-BetterMCP dp-mcpCursor
.cursor/mcp.json (project-level) or ~/.cursor/mcp.json (global):
{
"mcpServers": {
"drissionpage": {
"command": "uv",
"args": ["run", "--directory", "/path/to/DrissionPage-BetterMCP", "dp-mcp"]
}
}
}VS Code (Copilot)
.vscode/mcp.json:
{
"servers": {
"drissionpage": {
"command": "uv",
"args": ["run", "--directory", "/path/to/DrissionPage-BetterMCP", "dp-mcp"]
}
}
}Note: VS Code uses
serversas the top-level key, notmcpServers.
Codex
.codex/config.toml (project-level) or ~/.codex/config.toml (global):
[mcp_servers.drissionpage]
command = "uv"
args = ["run", "--directory", "/path/to/DrissionPage-BetterMCP", "dp-mcp"]Or via CLI:
codex mcp add drissionpage -- uv run --directory /path/to/DrissionPage-BetterMCP dp-mcpReplace /path/to/DrissionPage-BetterMCP with the actual project path.
Environment Variables
Optional, prefixed with DP_MCP_:
Variable | Default | Description |
|
| Default tool timeout (seconds) |
|
| Logging level |
|
| Max network packets to capture |
Copy .env.example to .env and customize as needed.
Tool List
Browser Management
Tool | Description |
| Connect to an existing Chrome or launch a new instance; supports headless, proxy, user_agent |
| Get browser status: address, tab count, process ID |
| Close the browser and release all resources |
Tab Management
Tool | Description |
| Open a new tab, optionally navigate to a URL |
| Close a tab; defaults to the current tab |
| Switch to a specific tab |
| List all open tabs |
| Search tabs by title and/or URL |
| Get tab details |
Page Navigation
Tool | Description |
| Navigate to a URL; returns final URL and page title |
| Go back or forward in history |
| Refresh the page; optionally ignore cache |
| Stop page loading |
Element Interaction
Tool | Description |
| Find an element; returns a cached |
| Find all matching elements |
| Wait for an element state (present / visible / hidden / deleted) |
| Click an element; supports left / right / middle / double click |
| Type text into an input; optionally clear first |
| Clear an input field |
| Hover over an element |
| Drag to a target element or pixel offset |
| Get visible text content |
| Get an HTML attribute value |
| Get full details: tag, text, rect, attrs, HTML, states |
| Select an option in a |
| Get all options of a |
| Scroll until the element is visible |
Screenshots
Tool | Description |
| Screenshot the page; supports full-page capture |
| Screenshot a specific element |
Page Content
Tool | Description |
| Get the page's plain text |
| Get the HTML source |
| Wait for page load / URL change / title change |
| Scroll the page in a direction |
Iframes
Tool | Description |
| List all iframes |
| Switch into an iframe |
| Return to the parent frame |
| Return to the top-level page |
Network Capture
Tool | Description |
| Start listening for requests matching a URL pattern |
| Wait for and retrieve captured network packets |
Cookies & Storage
Tool | Description |
| Get all cookies; optionally filter by domain |
| Set a cookie |
| Remove a cookie or clear all |
| Read from localStorage / sessionStorage |
| Write to localStorage / sessionStorage |
Keyboard & Dialogs
Tool | Description |
| Press a key or combination (Enter, Ctrl+A, etc.) |
| Type text continuously |
| Handle an alert / confirm / prompt dialog |
| Enable or disable automatic dialog handling |
Advanced
Tool | Description |
| Execute an action sequence: move, click, drag, type, wait |
| Execute JavaScript on the page |
| Execute a raw Chrome DevTools Protocol command |
File Operations
Tool | Description |
| Upload a file; supports hidden inputs |
| Download a file via URL or click trigger |
| Save the page as PDF or MHTML |
Developer Guide
Project Structure
src/dp_mcp/
├── server.py # MCP server — 55 tool definitions
├── config.py # Settings (pydantic-settings)
├── models.py # ToolResult, BrowserInfo, TabInfo, etc.
├── core/ # Core services
│ ├── browser.py # Browser lifecycle
│ ├── tab.py # Multi-tab management
│ ├── navigation.py # Page navigation
│ └── element.py # Element finding & interaction
├── services/ # Domain services
│ ├── screenshot.py # Screenshots
│ ├── frame.py # Iframes
│ ├── scroll.py # Scrolling
│ ├── network.py # Network capture
│ ├── cookie.py # Cookies
│ ├── action.py # Action chains
│ ├── dialog.py # Dialogs
│ ├── cdp.py # CDP
│ └── file.py # File operations
└── utils/
└── locator.py # Locator parser + element cacheRunning Tests
# Unit tests (no browser needed)
uv run pytest tests/unit -v
# Integration tests (requires Chrome)
uv run pytest tests/integration -v -m integration
# All tests
uv run pytest -vLocator Syntax
Full DrissionPage locator syntax is supported:
Syntax | Example | Description |
|
| By ID |
|
| By class name |
|
| By attribute |
|
| By visible text |
|
| By tag name |
|
| CSS selector |
|
| XPath |
|
| AND condition |
|
| OR condition |
Use the optional by parameter to disambiguate: css, xpath, text, id, class, attr.
Contributing
Pull requests and issues are welcome.
Fork this repository
Create a feature branch:
git checkout -b feature/my-featureCommit your changes:
git commit -m "feat: add my feature"Push the branch:
git push origin feature/my-featureOpen a Pull Request
Please make sure all tests pass before submitting:
uv run pytest tests/unit -vLicense
This project's code is licensed under BSD 3-Clause.
Note: This project depends on DrissionPage, which uses a custom non-commercial license that prohibits unauthorized commercial use. Users must independently comply with DrissionPage's license terms.
Available Tools
31 toolsbrowser_quitA
Close the browser and release all resources.
Call browser_connect to start a new session.
| 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 exist, but the description fully discloses the tool's effect: closing the browser and releasing resources. No hidden side effects or contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff, with the action stated first and a follow-up tip. Excellent 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?
For a parameterless tool with no annotations and an output schema, the description is complete: it tells what the tool does and what to do next.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema coverage is 100%. The description does not need to elaborate on 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 'Close the browser and release all resources,' using a specific verb-noun pair. No sibling tool performs this action, so it is distinct.
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 mentions 'Call browser_connect to start a new session,' indicating the tool ends a session. It does not explicitly state when not to use, but the simplicity of the tool makes this sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cookie_get_allA
Get all cookies for the current page. Optionally filter by domain substring.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | ||
| tab_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 states 'for the current page' but is ambiguous about scope (cookies for page URL vs all cookies accessible). No mention of read-only behavior 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?
Two sentences, front-loaded with core purpose and optional filtering. No redundant 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?
Provides basic purpose and one parameter detail, but lacks behavioral context, usage guidance, and explanation of tab_id. Given output schema exists, return values are covered, but still incomplete for a 2-param 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?
Adds meaning for 'domain' parameter as substring filter, but 'tab_id' is not explained. Schema coverage is 0%, so description partially compensates but leaves 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?
Description clearly states 'Get all cookies for the current page' with optional filtering, making the verb and resource explicit. It distinguishes from siblings like cookie_remove and cookie_set by focusing on retrieval.
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 implies usage for retrieving cookies from the current page, but lacks explicit guidance on when to use vs alternatives (e.g., when to use cookie_get_all vs cookie_remove/set) and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cookie_removeB
Remove a cookie by name, or clear ALL cookies if name is not provided.
Warning: clearing all cookies affects the entire browser, not just the current tab.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| domain | No | ||
| tab_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The warning about clearing all cookies affecting the entire browser provides important behavioral context. However, it does not disclose how domain or tab_id parameters affect behavior (e.g., scoping), leaving ambiguity. No contradictions with annotations (none present).
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 extraneous information; the action and a critical warning are front-loaded. Could be slightly improved with structured bullets but is already 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?
Despite having an output schema (not shown), the description is incomplete for a mutation tool. It fails to explain the role of domain and tab_id, and does not clarify if the removal is scoped or applies across all contexts, leaving significant gaps 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?
Only the 'name' parameter is explained (null clears all). The 'domain' and 'tab_id' parameters are undocumented in the schema (0% coverage) and the description adds no meaning for them, leaving the agent unaware of their purpose or effect.
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 removes a cookie by name or clears all cookies if name is not provided. It differentiates two modes, but does not explicitly mention the domain or tab_id parameters.
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?
Usage is implied based on the action (remove specific cookie or clear all), but no explicit guidance on when to use this vs sibling tools like cookie_get_all or cookie_set, nor any conditions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cookie_setC
Set a cookie. Domain defaults to current page domain if not specified.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| path | No | ||
| value | Yes | ||
| domain | No | ||
| secure | No | ||
| tab_id | No | ||
| expires | No | ||
| http_only | No | ||
| same_site | 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 notes domain default but does not disclose whether it overwrites existing cookies, requires a page context, or any side effects. Behavior is largely opaque.
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 at two sentences with no wasted words. The structure is efficient and front-loads 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?
Despite having 9 parameters, no schema descriptions, and an output schema, the description provides almost no contextual information. It is inadequate for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds meaning for only one parameter (domain default). The other 8 parameters (name, value, path, etc.) are undocumented, leaving the agent without critical 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's action ('Set a cookie') and resource ('a cookie'), with a useful note about domain default. It differentiates from sibling tools like cookie_remove and cookie_get_all.
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, no prerequisites, and no exclusions. The description only states the action without contextual usage advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dialog_autoA
Enable or disable automatic handling of alert/confirm/prompt dialogs.
When enabled, all future dialogs are automatically accepted (accept=true)
or dismissed (accept=false) without manual intervention. Disable with
enabled=false when you need to inspect dialog content with dialog_handle.
Auto mode is automatically disabled on browser disconnect.
| Name | Required | Description | Default |
|---|---|---|---|
| accept | No | ||
| tab_id | No | ||
| enabled | 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 carries the full burden. It explains what happens when enabled (auto-accept/dismiss), the meaning of the 'accept' parameter, and auto-disable behavior. It could mention potential side effects or state persistence, but it is adequate for a toggle 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 concise (three sentences), front-loaded with the core purpose, and every sentence adds value. No redundant or vague language.
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 is complete. It covers behavior, parameter roles, usage context, and sibling differentiation. The presence of an output schema reduces the need to describe return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must elaborate on parameters. It explains 'enabled' and 'accept' clearly, but misses 'tab_id'. While optional and default null, the lack of explanation for 'tab_id' leaves a gap, especially for agents unaware of tab-scoping.
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 tool's purpose: 'Enable or disable automatic handling of alert/confirm/prompt dialogs.' It uses a specific verb-resource combination and distinguishes itself from the sibling 'dialog_handle' by mentioning that disabling auto mode allows manual inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear when-to-use guidance: 'When enabled, all future dialogs are automatically accepted or dismissed... Disable with enabled=false when you need to inspect dialog content with dialog_handle.' It also notes auto-disable on browser disconnect.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dialog_handleA
Handle the currently open alert/confirm/prompt dialog.
Returns dialog type, message, and whether it was accepted. Fails immediately
if no dialog is present — use dialog_auto for pre-emptive handling.
For prompt dialogs, pass text to fill the input field before accepting.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | ||
| accept | No | ||
| tab_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. Discloses return info (dialog type, message, accepted status), failure condition (no dialog), and handling of prompt dialogs with text input. Comprehensive for a dialog handler.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with main purpose, no unnecessary words. Efficient and clear.
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?
Main behavior well-described, but lacks explanation for tab_id parameter and accept parameter behavior (e.g., what happens if false). Output schema exists but param documentation is weak. Some 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?
Schema coverage is 0%, but description only explains text parameter partially (for prompt dialogs). Does not explain accept or tab_id parameters or their behavior. Considerable gap in 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?
Clearly states it handles open dialogs (alert/confirm/prompt), specifies verb 'handle' and resource 'dialog'. Distinguishes from sibling dialog_auto by mentioning pre-emptive handling.
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 when dialog is present, fails immediately otherwise, and suggests dialog_auto for pre-emptive handling. Provides clear when-to-use and when-not.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
element_clearC
Clear the value of an input element. Provide locator or element_id.
| Name | Required | Description | Default |
|---|---|---|---|
| by | No | ||
| by_js | No | ||
| tab_id | No | ||
| locator | No | ||
| element_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 for behavioral disclosure. It only says 'Clear the value' without mentioning whether this triggers DOM events, works on all input types, or what the state after clearing looks like. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise (single sentence). However, it sacrifices too much information for brevity. Structure is clean but content is too sparse.
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 5 parameters and no schema descriptions, the description is incomplete. It does not explain the purpose of optional parameters like by_js or tab_id, nor does it mention output schema (which exists but is unaddressed).
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 mentions 'locator or element_id' but ignores three other parameters (by, by_js, tab_id). The schema shows these exist but description adds no meaning for them.
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 value of input element) and the resource (input element). However, it does not differentiate from sibling tools like element_find or element_get_text, which could confuse an agent about when to use this specific 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?
No guidance on when to use this tool versus alternatives (e.g., element_get_text to read, element_find to locate). The instruction 'Provide locator or element_id' is minimal and doesn't explain prerequisites or appropriate contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
element_dragA
Drag an element to a target element or by pixel offset.
Provide either target_locator/target_element_id (drag to target) or
offset_x/offset_y (drag by pixels). Duration controls drag speed in seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| by | No | ||
| tab_id | No | ||
| locator | No | ||
| duration | No | ||
| offset_x | No | ||
| offset_y | No | ||
| element_id | No | ||
| target_locator | No | ||
| target_element_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 discloses the drag action and parameter modes but does not mention potential side effects, prerequisites (e.g., element must be draggable), or return value. This is adequate for a simple action tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short, front-loaded sentences with clear structure. Every sentence adds value without redundancy, making it concise and easy to parse.
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 9 parameters and no required ones, the description explains the core use case but omits several parameters and does not clarify what the output schema contains. It is minimally complete for an agent to use correctly, but leaves 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 coverage is 0%, so description must compensate. It explains the two parameter groups (target vs offset) and duration, but does not cover other parameters like by, tab_id, locator, or element_id. Some of these may be self-explanatory, but the description could be more thorough.
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 drags an element to a target or by pixel offset, specifying the verb 'drag' and the resource 'element', distinguishing it from sibling tools like element_clear or element_find.
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 provides usage guidance: use target_locator/target_element_id for drag-to-target or offset_x/offset_y for pixel drag, and mentions duration for speed control. However, it does not explicitly state when not to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
element_findA
Find a single element and return its info including element_id for future reference.
Locator syntax: #id | .class | @attr=val | text:str | tag:name |
css:selector | xpath:expr | @@a@@b (AND) | @|a@|b (OR)
Use element_id from result to interact with the element without re-finding it.
If parent is provided, finds the locator within the parent element (two-step find).
| Name | Required | Description | Default |
|---|---|---|---|
| by | No | ||
| parent | No | ||
| tab_id | No | ||
| locator | Yes | ||
| 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 carries full burden. It discloses that it returns element_id for future reference, explains locator syntax, and describes the two-step find behavior for parent. However, it does not explicitly state that it is a read-only operation, nor does it describe timeout behavior, failure handling, or side effects. The provided context is useful 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 four sentences plus a concise list of locator syntax options. It is front-loaded with the core purpose. The syntax list could be more structured, but overall it is efficient and clear.
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 (5 parameters, 1 required, no schema descriptions, no annotations, output schema exists but not described), the description is incomplete. It does not explain all parameters, does not describe the return info beyond element_id, and does not address error handling or waiting behavior. The gaps limit usability for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains the locator parameter in detail with syntax examples and explains the parent parameter as scoping. However, it does not explain the 'by', 'tab_id', or 'timeout' parameters. Only 2 of 5 parameters get meaningful description, leaving significant 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 it finds a single element and returns its info including element_id. It distinguishes from sibling tool element_find_all by explicitly saying 'single element', and explains the two-step find with parent. The verb 'Find' and resource 'single element' make the purpose specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context: use this to find an element for later interaction (by element_id). It explains locator syntax and the parent parameter for scoped finding. However, it lacks explicit when-not-to-use guidance versus alternatives like element_find_all, though the distinction is natural.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
element_find_allC
Find all matching elements. Returns list with element_id for each.
Locator syntax: #id | .class | @attr=val | text:str | tag:name |
css:selector | xpath:expr | @@a@@b (AND) | @|a@|b (OR)
Returns empty list (not error) when no elements match.
| Name | Required | Description | Default |
|---|---|---|---|
| by | No | ||
| limit | No | ||
| parent | No | ||
| tab_id | No | ||
| locator | Yes | ||
| timeout | 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 discloses the locator syntax and that empty results return an empty list, but fails to mention side effects such as scrolling, waiting, or state changes. The description is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is relatively short and front-loaded with the main purpose. However, it includes a lengthy locator syntax list that would be better placed in parameter docs. It could be more efficient by linking to a syntax reference.
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 6 parameters and an output schema, the description is incomplete. It omits parameter explanations and behavioral details. The note about empty results is helpful, but overall it lacks sufficient information for correct 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?
With 0% schema description coverage, the description must explain the 6 parameters. It only describes the 'locator' syntax implicitly but does not explain 'by', 'limit', 'parent', 'tab_id', or 'timeout'. This is a critical 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 'Find all matching elements. Returns list with element_id for each.' which specifies the verb (Find all), resource (matching elements), and distinguishes from the sibling 'element_find' (singular) by returning all matches.
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 any guidance on when to use this tool vs alternatives like 'element_find' or other search tools. It only mentions behavior on empty results but lacks explicit usage contexts or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
element_get_infoA
Get full element details: tag, text, rect, attrs, html, states.
Provide locator or element_id. Returns richer info than element_find.
| Name | Required | Description | Default |
|---|---|---|---|
| by | No | ||
| tab_id | No | ||
| locator | No | ||
| element_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 output fields but does not explicitly state read-only nature, error behavior, or that it does not modify the page. Adequate for a simple get but could be more 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?
Two sentences with no extra words. Front-loaded with the main action and returned fields. 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?
Has output schema so return values are covered. However, given 4 parameters and many siblings, missing details on when to use tab_id or how to combine parameters. Feels somewhat incomplete for a tool with multiple input options.
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 advises 'Provide locator or element_id', but does not explain the 'by' or 'tab_id' parameters, leaving ambiguity. Partially helpful 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?
Description clearly states 'Get full element details' and lists specific fields (tag, text, rect, attrs, html, states). It differentiates from sibling element_find by noting it returns 'richer info', making the tool's purpose distinct.
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 'Provide locator or element_id', guiding input choice. Implicitly suggests usage when full details are needed vs. element_find, but lacks explicit 'when not to use' or prerequisites like required permissions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
element_get_optionsA
Get all options of a element with text, value, index, and selected status.
Use before element_select to see available choices.
Provide locator or element_id.
| Name | Required | Description | Default |
|---|---|---|---|
| by | No | ||
| tab_id | No | ||
| locator | No | ||
| element_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 adds value by disclosing the return data structure (text, value, index, selected status). It implies a read-only operation without side effects, though it doesn't explicitly state safety or potential errors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences, each serving a clear purpose: function definition, usage context, and required inputs. 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 annotations and low schema coverage, the description provides essential context but omits explanation of two parameters ('by', 'tab_id') and potential error cases. The existence of an output schema reduces the need to describe return format, but parameter gaps remain.
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 only mentions 'locator' and 'element_id' as identifiers, failing to explain 'by' and 'tab_id'. This leaves ambiguity about when to use these other parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves options of a <select> element, specifying the data returned (text, value, index, selected status). It distinguishes from the sibling 'element_select' by indicating this tool is used before selection.
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 when to use the tool ('before element_select') and hints at required inputs ('Provide locator or element_id'). It lacks explicit when-not-to-use or alternative tools beyond element_select.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
element_get_textB
Get the visible text content of an element. Provide locator or element_id.
| Name | Required | Description | Default |
|---|---|---|---|
| by | No | ||
| tab_id | No | ||
| locator | No | ||
| element_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 discloses that only 'visible' text is returned, which is a behavioral trait, but it does not state whether the tool waits for the element, what happens if the element is not found, or any side effects. The output schema exists but is not described.
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 purpose. 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 has 4 parameters, many sibling tools, and no annotations, the description is too brief. It lacks details on parameter relationships, usage context, and behavioral guarantees. The presence of an output schema does not excuse the missing behavioral and guidance information.
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 only adds meaning for 'locator' and 'element_id' by stating they can be provided. It does not explain the 'by' or 'tab_id' parameters, leaving their semantics unclear. 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 clearly states the verb 'Get' and the resource 'visible text content of an element', which is specific and distinguishes it from siblings like element_get_info (which gets attributes) and page_get_text (which gets page-level text).
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 mentions 'Provide locator or element_id' but gives no guidance on when to use this tool over alternatives like element_get_info or when not to use it. No explicit context or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
element_waitA
Wait for an element to reach the given state.
state: present (default) | visible | hidden | deleted
Default timeout is 15s, max is 60s.
| Name | Required | Description | Default |
|---|---|---|---|
| by | No | ||
| state | No | present | |
| tab_id | No | ||
| locator | Yes | ||
| 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 carries the full burden. It discloses default and maximum timeout (15s/60s) and the states waited for, but omits details on failure behavior (e.g., timeout error), polling mechanism, or whether the tool is 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?
Two concise sentences front-load the purpose and key parameters (state and timeout). 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 5 parameters, 0% schema coverage, and no annotations, the description is incomplete. It explains only state and timeout, leaving locator, by, and tab_id unexplained. An output schema exists but does not compensate for the missing parameter documentation.
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 clarify parameters. It explains 'state' (enum values) and 'timeout' (default/max), but does not explain the critical 'locator' parameter, nor 'by' (locator strategy) or 'tab_id'. Two of five parameters remain 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 specifies the verb 'Wait' and the resource 'element', lists the four possible states (present, visible, hidden, deleted), and distinguishes this tool from sibling element tools like element_find or element_get_text which do not wait.
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 the tool should be used when needing to wait for an element to reach a specific state, but it does not explicitly compare with alternatives such as element_find (which might immediately check presence) or provide when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
frame_mainB
Return to the top-level page from any nested iframe. Clears frame context entirely.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_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 discloses the key behavioral trait 'Clears frame context entirely,' but does not detail side effects, permissions, or the output format, leaving some aspects unclear.
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 two sentences, no redundant information, and efficiently communicates the core action and a critical behavioral note.
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 simple nature of the tool, the description omits explanation of the 'tab_id' parameter and the return value (output schema exists), leaving gaps for an agent to understand how to use the tool 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?
The only parameter 'tab_id' has 0% schema description coverage and the tool description provides no explanation of its purpose or usage, failing 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's purpose: returning to the top-level page from any nested iframe. It uses a specific verb 'Return' and resource 'top-level page', distinguishing it from sibling tools focused on tabs or page navigation.
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 in a nested iframe but does not explicitly state when to use this tool versus alternatives. No exclusions or alternative tool names are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
js_executeA
Execute JavaScript code on the current page and return the result.
Code runs as a function body — access injected args via arguments[0], arguments[1], etc.
Returns serialized result: primitives directly, DOM elements as summary strings,
non-serializable values as "[object Object]". Fails if an alert dialog is open.
Use specific tools (element_click, page_navigate, etc.) when available;
this is an escape hatch for unsupported operations.
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | ||
| code | Yes | ||
| tab_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes execution context (function body, args via arguments object), serialization behavior (primitives, DOM elements, non-serializable values), and failure condition (alert dialog open). Lacks mention of side effects on page state, but overall 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?
Concise, front-loaded, and no extraneous information. Each sentence adds value in a compact format.
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 aspects: action, execution model, return value, and when to use alternatives. Output schema exists, so return details are covered. Could be more explicit about tab_id parameter, but overall complete for the complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description should compensate but only mentions how to access args (arguments[0], etc.) without explaining the 'code' parameter format or the purpose of 'tab_id'. Leaves significant gaps for agent understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Execute JavaScript code on the current page and return the result.' Differentiates from siblings by positioning as an escape hatch for unsupported operations, referencing specific alternatives like element_click and page_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 advises to use specific tools when available and to use this only as an escape hatch for unsupported operations, providing clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyboard_pressA
Press a key or key combination on the current page.
Single keys: "enter", "tab", "escape", "backspace", "delete", "f1".."f12".
Combinations: "ctrl+a", "ctrl+c", "ctrl+shift+t", "alt+f4".
Operates on the currently focused element. For typing text, use keyboard_type instead.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| tab_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 burden. States it operates on focused element and provides examples of keys. Does not disclose behavior for invalid keys or unfocused scenarios, but overall adequate for a simple key press.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose, followed by examples and usage notes. 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?
Simple tool with output schema present, but description omits parameter 'tab_id'. With low parameter coverage, completeness is moderate.
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% coverage in schema. Description only explains 'key' parameter with examples, but does not explain 'tab_id' parameter at all. Semantics are 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?
Description clearly states verb and resource ('Press a key or key combination on the current page'), provides examples, and explicitly distinguishes from sibling 'keyboard_type' by directing typing tasks elsewhere.
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 this tool vs 'keyboard_type', and states it operates on focused element. Lacks explicit prerequisites like focusing an element first, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyboard_typeA
Type text continuously on the current page as keyboard input.
Types each character sequentially. For filling form fields, prefer element_input
which targets a specific element. Use this for page-level typing when no specific
element reference is needed.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| tab_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses sequential character typing behavior. No annotations to contradict; description adds value beyond schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three well-structured sentences, front-loaded with purpose, no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple tool with output schema. Could clarify 'tab_id' but otherwise complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%. Description only mentions 'text' implicitly; does not explain 'tab_id' parameter, leaving semantics unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'type' and resource 'text continuously on current page'. Distinguishes from sibling 'element_input' by indicating page-level usage vs form fields.
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 to prefer 'element_input' for form fields and specifies when to use this tool (page-level typing without element reference).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
network_listen_startA
Start listening for network requests matching a URL pattern on the current tab.
Only one listener per tab — starting a new one stops the previous. The listener
auto-expires after `expire` seconds if network_listen_wait is not called. After
starting, perform the action that triggers the request (e.g., click a button),
then call network_listen_wait to capture packets.
| Name | Required | Description | Default |
|---|---|---|---|
| expire | No | ||
| method | No | ||
| tab_id | No | ||
| is_regex | No | ||
| res_type | No | ||
| url_pattern | 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 provided, the description carries the full burden of behavioral disclosure. It reveals key behaviors: listener is per-tab, auto-expires, and requires a subsequent wait call. However, it does not detail what happens to ongoing listeners when stopped, error conditions, or authorization needs.
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, using only three sentences to convey purpose, workflow, and key constraints. The most critical information (purpose and usage flow) is front-loaded, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters (some with defaults), an output schema (exists but not shown), and no annotations, the description covers the workflow and two key parameters but omits explanations for `method`, `is_regex`, `res_type`, and `tab_id`. This leaves gaps for correct parameter usage, though the output schema assumption reduces the need to describe return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description must add meaning. It clarifies the `url_pattern` (matches a URL pattern) and `expire` (auto-expire timeout), but fails to explain `method`, `is_regex`, `res_type`, and `tab_id` beyond the default 'current tab' implication. This leaves users guessing for these 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 tool's action ('Start listening for network requests matching a URL pattern on the current tab') with a specific verb and resource. It also distinguishes itself from the sibling tool 'network_listen_wait' by explaining the workflow of starting then waiting.
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 when-to-use guidance: start listening, perform the action triggering the request, then call network_listen_wait. It also notes important constraints: only one listener per tab (starting a new one stops the previous) and auto-expiry after `expire` seconds if not called.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
network_listen_waitA
Wait for network packets captured by a previously started listener.
Returns captured packets written to a JSONL file. Automatically stops the listener after waiting. If timeout occurs with partial captures, returns what was captured (not an error). Use count=1 for a single expected request, higher for multiple.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| tab_id | No | ||
| timeout | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that the tool automatically stops the listener after waiting and returns partial captures on timeout instead of error. Without annotations, this is valuable 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?
Three sentences, each adding value: purpose, output behavior, and parameter guidance. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers core behavior and main parameter (count) adequately. Tab_id is omitted, but output schema exists to fill return value gap. Acceptable for a simple 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?
With 0% schema description coverage, the description adds meaning for the count parameter but does not explain tab_id or timeout parameter semantics beyond implication.
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 ('wait') and resource ('network packets captured by a previously started listener'), and distinguishes it from siblings like network_listen_start which starts the listener.
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 guidance on when to use (after starting a listener) and how to set the count parameter for different scenarios, but does not explicitly state when not to use or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
page_forwardA
Go forward in browser history. Optionally specify number of steps.
| Name | Required | Description | Default |
|---|---|---|---|
| steps | No | ||
| tab_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 expose behavior. It describes the action but omits details like error handling when history is exceeded or per-tab 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 extremely concise with a single clear sentence, no redundant 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 navigation tool with optional parameters and an output schema, the description is nearly complete. The only gap is not mentioning the 'tab_id' parameter.
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 the description partially explains the 'steps' parameter ('number of steps') while ignoring 'tab_id'. This adds some but not complete parameter 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 the action ('Go forward in browser history') and distinguishes it from sibling tools like 'page_navigate' or 'page_scroll' by specifying the browser history context.
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 moving forward in browser history, optionally specifying steps, but does not explicitly state when not to use or provide alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
page_get_textB
Get the plain text content of the current page (no HTML tags).
Useful for reading page content without markup.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_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 aspects. It only states the output type but omits details like dependencies (page must be loaded), potential limitations (hidden text, rendering), or behavior of the tab_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?
The description is extremely concise with two short sentences. The first sentence front-loads the core purpose, and the second adds a relevant usage note. 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?
The tool is simple (get page text), and with an output schema present, the description does not need to detail return values. However, the lack of parameter documentation and behavior details reduces completeness for a tool with one optional parameter 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?
The input schema has one parameter (tab_id) with 0% description coverage. The description does not mention or explain this parameter, leaving its meaning and usage unclear to the agent.
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 (plain text content of the current page) and specifies that it returns text without HTML tags. However, it does not explicitly differentiate from sibling tools like element_get_text, which could cause confusion about 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 second sentence provides a usage hint ('useful for reading page content without markup'), implying when to use it. But it lacks explicit guidance on when not to use it (e.g., if HTML structure is needed) or alternatives among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
page_refreshA
Refresh the current page. Set ignore_cache=true to bypass browser cache.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | ||
| ignore_cache | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Basic behavior is described: refresh with optional cache bypass. No annotations are provided, so the description must carry the burden, but it does not disclose any additional behavioral traits such as impact on scripts or data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with front-loaded purpose and clear parameter detail. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple refresh tool, the description is adequate. It covers the main action and the key parameter. An output schema exists but is not needed for 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 description explains ignore_cache, but tab_id is not explained beyond being optional. Since schema description coverage is 0%, the description adds only partial value.
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: 'Refresh the current page.' It also specifies an optional parameter to bypass cache, distinguishing it from navigation tools like page_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?
No explicit guidance on when to use this vs. sibling tools. The description implies it refreshes the current page, but does not contrast with page_forward or page_navigate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
page_scrollA
Scroll the page in a direction.
direction: up | down | left | right | top | bottom.
pixels is ignored for top/bottom (they scroll to absolute position).
| Name | Required | Description | Default |
|---|---|---|---|
| pixels | No | ||
| tab_id | No | ||
| direction | Yes |
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 discloses that 'pixels is ignored for top/bottom' which is helpful, but does not mention other behavioral aspects such as whether the scroll is smooth, if it can fail on certain pages, or if it's a non-destructive action.
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 two sentences plus a list. It is front-loaded with the core action. Minor improvement could be integrating the list more naturally, but overall it's 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?
The tool has low complexity and an output schema (not shown). The description covers the core scrolling semantics but omits explanation of the tab_id parameter and potential return values, leaving it somewhat incomplete for a fully autonomous 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?
With 0% schema coverage, the description adds meaning to the direction parameter by listing valid values, and explains pixel behavior for top/bottom. However, it does not explain the tab_id parameter or provide enum constraints, leaving a partial 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 'Scroll the page in a direction.' and lists specific direction values, making the purpose unambiguous. It distinguishes from sibling tools like page_navigate and page_refresh by focusing on scrolling within the current page.
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 scrolling but does not explicitly state when to use this tool versus alternatives (e.g., keyboard scrolling or other navigation tools). No when-not or context cues are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
storage_getB
Read a value from localStorage or sessionStorage.
Set storage_type to 'local' (default) or 'session'.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| tab_id | No | ||
| storage_type | No | local |
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 convey behavior. It only states 'read a value,' which implies a safe operation, but it does not discuss error handling (e.g., missing key), return format, or any side effects. More detail is needed.
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 sentences. The first sentence immediately states the tool's purpose, and each sentence adds value. Minor improvement: could be slightly more 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 three parameters, no annotations, and an output schema (assumed to cover return info), the description provides the essential purpose but lacks details on the tab_id parameter and potential edge cases. 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 schema has 0% parameter description coverage, so the description must compensate. It only explains the 'storage_type' parameter's options ('local' or 'session'). The 'key' and 'tab_id' parameters are not elaborated beyond their schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Read a value from localStorage or sessionStorage,' specifying the verb (read) and resource (storage), and distinguishes it from the sibling 'storage_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?
The description mentions how to set 'storage_type' to 'local' or 'session,' but does not provide guidance on when to use this tool versus alternatives like cookie_get_all, nor does it specify prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
storage_setB
Write a value to localStorage or sessionStorage.
Set storage_type to 'local' (default) or 'session'.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| value | Yes | ||
| tab_id | No | ||
| storage_type | No | local |
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 does not disclose what happens on overwrite, storage limits, or error conditions. Only states basic 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?
Two sentences, no fluff. However, it could be better structured with a brief list or clearer separation of parameter info.
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, the description covers basics but lacks important details like overwrite behavior and when to use different storage types. With an output schema present, return values are not needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description only explains 'storage_type' with its options, leaving 'key', 'value', and 'tab_id' 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 ('Write a value') and the resource ('localStorage or sessionStorage'), and distinguishes from sibling tool 'storage_get' which reads.
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, nor any context about when not to use it. The description is minimally informative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tab_findA
Search tabs by title and/or URL substring. Returns matching tabs.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| title | 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 substring search behavior but lacks details on case sensitivity, exact matching, or output format (though output schema covers return values).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two clear sentences with no wasted words. Front-loaded with action and resource, then result.
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 optional parameters and existing output schema, description covers core functionality sufficiently. Does not need to explain return values due to 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?
Schema description coverage is 0%, so description compensates by linking parameters to search criteria: title and URL substring. Adds meaning beyond schema names, though format details are omitted.
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 searches tabs by title and/or URL substring, using specific verbs and resources. It distinguishes from siblings like tab_list and tab_info by focusing on substring search.
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?
Usage is implied but no explicit guidance on when to use this tool versus alternatives like tab_list or tab_info. No when-not-to-use or context for exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tab_infoB
Get details of a specific tab or the current tab.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_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 does not disclose what happens if tab_id is invalid or if no tabs exist. Behavioral traits like error handling or return format are missing.
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 redundant words. Front-loaded with essential information. 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?
For a simple tool with one optional parameter and output schema, description covers the parameter behavior adequately. Does not detail return fields, but output schema can fill that 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 coverage is 0%, so description adds meaning: it explains that tab_id can be a specific id or null to get current tab. This adds value beyond the schema's type definition.
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 gets details of a specific tab or the current tab. It uses a specific verb-resource pair and implies distinction from siblings like tab_list and tab_new.
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. The description implies behavior when tab_id is omitted but does not explicitly state conditions or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tab_listA
List all open tabs with their tab_id, title, URL, and which is current.
| 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 must disclose behavioral traits. It states the tool lists tabs with certain fields, but omits details like behavior when no tabs are open (likely empty list), potential for large lists, or whether the output is sorted. As a read operation, it is non-destructive but this is 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 concise sentence that efficiently communicates the tool's function and output. It is front-loaded with the action 'List all open tabs' and specifies exact fields returned. 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 (no parameters, output schema exists), the description is mostly complete. It specifies what is listed and the fields returned. However, it lacks context on ordering, whether the list includes all browser tabs or just the current window, and how the 'current' flag works. Still, it covers the essential information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so schema description coverage is 100% trivially. The description does not need to add parameter details. Baseline for zero parameters is 4, and the description adds no unnecessary information.
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: listing all open tabs with specific details (tab_id, title, URL, current flag). It uses specific verb 'List' and distinguishes the resource 'open tabs'. It differentiates from siblings like tab_find (single tab lookup) and tab_info (specific tab details).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The description implies it is for obtaining an overview of all open tabs, but does not mention when not to use it (e.g., for a specific tab, use tab_find or tab_info) or provide context about prerequisites or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tab_newA
Open a new browser tab. Optionally navigate to URL. Automatically switches to the new tab.
| Name | Required | Description | Default |
|---|---|---|---|
| url | 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 adds 'Automatically switches to the new tab' but lacks details on what happens to the previous tab, output format, or whether URL validation occurs.
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, front-loaded sentences with no redundant information. Every phrase 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 one-parameter tool with an output schema, the description covers opening a tab and automatic switching. Minor omission: no mention of URL requirements (absolute, special URLs) or error conditions.
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 to the 'url' parameter by stating it's optional and used for navigation, compensating for zero schema coverage. However, no format or default behavior (e.g., blank tab) is specified.
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 specific action: opening a new browser tab with optional URL navigation. It distinguishes from sibling tools like tab_find (find existing tabs) and page_navigate (navigate current tab).
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 (e.g., page_navigate, tab_find). The automatic switch behavior is implied but not explicitly contrasted with other tab operations.
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.
31 tool updates
v0.1.0- First observed
browser_quit - First observed
cookie_get_all - First observed
cookie_remove - First observed
cookie_set - First observed
dialog_auto - First observed
dialog_handle - First observed
element_clear - First observed
element_drag - First observed
element_find - First observed
element_find_all - First observed
element_get_info - First observed
element_get_options - First observed
element_get_text - First observed
element_wait - First observed
frame_main - First observed
js_execute - First observed
keyboard_press - First observed
keyboard_type - First observed
network_listen_start - First observed
network_listen_wait - First observed
page_forward - First observed
page_get_text - First observed
page_navigate - First observed
page_refresh - First observed
page_scroll - First observed
storage_get - First observed
storage_set - First observed
tab_find - First observed
tab_info - First observed
tab_list - First observed
tab_new
TDQS
Each tool targets a distinct action or domain (cookies, dialogs, elements, etc.) with clear boundaries. Overlap is minimal and mitigated by different scopes (e.g., element_get_text vs page_get_text).
All tools use a consistent snake_case pattern with domain_verb (e.g., cookie_get_all, element_find). No mixed conventions; the naming is predictable and easy to follow.
31 tools cover the major facets of browser automation (navigation, elements, cookies, dialogs, network, keyboard, storage, tabs, frames, JS) without redundancy. The count is well-scoped for a comprehensive MCP server.
Core operations are well covered: CRUD-like for cookies, elements, storage, and tabs. Missing advanced features like screenshots or file handling, but the existing surface enables most common workflows.
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
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A paid remote MCP for AI agent browser DevTools MCP, built to return verdicts, receipts, usage logs,
Live browser debugging for AI assistants — DOM, console, network via MCP.
Stealth web browser for agents: search, fetch, click, download and type in persistent MCP sessions.
Related MCP Servers
- AlicenseBqualityDmaintenanceAn MCP server providing robust browser automation tools for AI assistants, including page navigation, element interaction, and screenshot capabilities. It leverages the DrissionPage library to enable standardized DOM analysis, network monitoring, and complex web task automation.17MIT
- AlicenseAqualityBmaintenanceA professional browser automation server that enables MCP clients to perform structured web navigation, element interaction, and data extraction using the DrissionPage framework. It features 14 deterministic tools optimized for LLMs to automate web workflows efficiently without relying on vision-based models.69489Apache 2.0
- FlicenseNot gradedqualityBmaintenanceMCP server that enables AI agents to automate browser testing via Chromium, providing tools for navigation, interaction, and inspection.-
- FlicenseNot gradedqualityDmaintenanceA browser automation MCP server providing 30 tools for navigation, interaction, page information, state checks, tab management, and more, enabling natural language control of browsers via MCP-compatible clients.-
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/crmmc/DrissionPage-BetterMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server