Better Playwright MCP
The Better Playwright MCP server enables efficient, AI-friendly browser automation through a robust client-server architecture with semantic HTML snapshots that reduce token usage by up to 90%.
Page Management: Create, activate, close, and list multiple managed and unmanaged browser pages with customizable names and descriptions, enabling multi-tab automation scenarios.
Web Interaction: Perform diverse browser actions including clicking, typing, hovering, selecting options, pressing keys, uploading files, and handling dialogs (alerts, prompts, confirms) using precise xp identifiers.
Navigation & Control: Navigate to URLs, move through browsing history, scroll pages or elements, and wait for specific elements to appear or for specified durations.
Content Extraction & Capture: Generate highly compressed semantic HTML snapshots with unique xp identifiers, capture full-page or element-specific screenshots (PNG/JPEG), generate PDF snapshots, retrieve element HTML for debugging, and download images to temporary directories.
Advanced Features: Capture complete webpage snapshots with automatic scrolling and content trimming, save processed HTML to temporary files, and utilize stealth features with persistent browser profiles for robust, long-running automation tasks.
Enables web automation for Amazon's shopping platform, allowing navigation, search, and interaction with product pages through semantic HTML snapshots.
Identifies and preserves semantic HTML5 tags when generating page snapshots, maintaining the structural meaning of web content while reducing token usage.
Handles JavaScript-based web interactions through Playwright, enabling automation of dynamic web applications built with JavaScript.
Supports Linux as a platform for running the MCP server, with specific file paths for operation records.
Supports macOS as a platform for running the MCP server, with specific file paths for operation records.
Built on Node.js with requirements for Node.js >= 18.0.0 for running the server components.
Built with TypeScript for type safety, with development resources for TypeScript contributors.
Includes WebGL vendor spoofing as part of its stealth features to prevent browser fingerprinting during web automation.
Click on "Deploy 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., "@Better Playwright MCPsearch the current page for all email addresses"
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.
better-playwright-mcp3
A high-performance Playwright MCP (Model Context Protocol) server with intelligent DOM compression and content search capabilities for browser automation.
Features
š Full Playwright browser automation via MCP
šļø Client-server architecture with HTTP API
š Ref-based element identification system (
[ref=e1],[ref=e2], etc.)š Powerful regex-based content search using ripgrep
š¾ Persistent browser profiles with Chrome
š 91%+ DOM compression with intelligent list folding
š Semantic HTML snapshots using Playwright's internal APIs
ā” High-performance search with safety limits
Related MCP server: Enhanced Browser MCP Server
Installation
Global Installation (for CLI usage)
npm install -g better-playwright-mcp3Local Installation (for SDK usage)
npm install better-playwright-mcp3Usage
As a JavaScript/TypeScript SDK
Prerequisites:
First, start the HTTP server:
npx better-playwright-mcp3@latest serverThen use the SDK in your code:
import { PlaywrightClient } from 'better-playwright-mcp3';
async function automateWebPage() {
// Connect to the HTTP server (must be running)
const client = new PlaywrightClient('http://localhost:3102');
// Create a page
const { pageId, success } = await client.createPage(
'my-page', // page name
'Test page', // description
'https://example.com' // URL
);
// Get page structure with intelligent folding
const outline = await client.getOutline(pageId);
console.log(outline);
// Returns compressed outline (~90% reduction) with list folding
// Search for specific content (regex by default)
const searchResult = await client.searchSnapshot(pageId, 'Example', { ignoreCase: true });
console.log(searchResult);
// Search with regular expressions (default behavior)
const prices = await client.searchSnapshot(pageId, '\\$[0-9]+\\.\\d{2}', { lineLimit: 10 });
// Search multiple patterns (OR)
const links = await client.searchSnapshot(pageId, 'link|button|input', { ignoreCase: true });
// Interact with the page using ref identifiers
await client.browserClick(pageId, 'e3'); // Click element
await client.browserType(pageId, 'e4', 'Hello World'); // Type text
await client.browserHover(pageId, 'e2'); // Hover over element
// Navigation
await client.browserNavigate(pageId, 'https://google.com');
await client.browserNavigateBack(pageId);
await client.browserNavigateForward(pageId);
// Scrolling
await client.scrollToBottom(pageId);
await client.scrollToTop(pageId);
// Waiting
await client.waitForTimeout(pageId, 2000); // Wait 2 seconds
await client.waitForSelector(pageId, 'body');
// Take screenshots
const screenshot = await client.screenshot(pageId, true); // Full page
// Clean up
await client.closePage(pageId);
}Available Methods:
Page Management:
createPage,closePage,listPagesNavigation:
browserNavigate,browserNavigateBack,browserNavigateForwardInteraction:
browserClick,browserType,browserHover,browserSelectOption,fillAdvanced Actions:
browserPressKey,browserFileUpload,browserHandleDialogPage Structure:
getOutline- Get intelligently compressed page structure with list folding (NEW in v3.2.0)Content Search:
searchSnapshot- Search page content with regex patterns (powered by ripgrep)Screenshots:
screenshot- Capture page as imageScrolling:
scrollToBottom,scrollToTopWaiting:
waitForTimeout,waitForSelector
MCP Server Mode
The MCP server requires an HTTP server to be running. You need to start both:
Step 1: Start the HTTP server
npx better-playwright-mcp3@latest serverStep 2: In another terminal, start the MCP server
npx better-playwright-mcp3@latestThe MCP server will:
Start listening on stdio for MCP protocol messages
Connect to the HTTP server on port 3102
Route browser automation commands through the HTTP server
Standalone HTTP Server Mode
You can run the HTTP server independently:
npx better-playwright-mcp3@latest serverOptions:
-p, --port <number>- Server port (default: 3102)--host <string>- Server host (default: localhost)--headless- Run browser in headless mode--chromium- Use Chromium instead of Chrome--no-user-profile- Do not use persistent user profile--user-data-dir <path>- User data directory
MCP Tools
When used with AI assistants, the following tools are available:
Page Management
createPage- Create a new browser page with name and descriptionclosePage- Close a specific pagelistPages- List all managed pages with titles and URLs
Browser Actions
browserClick- Click an element using its ref identifierbrowserType- Type text into an elementbrowserHover- Hover over an elementbrowserSelectOption- Select options in a dropdownbrowserPressKey- Press keyboard keysbrowserFileUpload- Upload files to file inputbrowserHandleDialog- Handle browser dialogs (alert, confirm, prompt)browserNavigate- Navigate to a URLbrowserNavigateBack- Go back to previous pagebrowserNavigateForward- Go forward to next pagescrollToBottom- Scroll to bottom of page/elementscrollToTop- Scroll to top of page/elementwaitForTimeout- Wait for specified millisecondswaitForSelector- Wait for element to appear
Content Search & Screenshots
searchSnapshot- Search page content using regex patterns (powered by ripgrep)screenshot- Take a screenshot (PNG/JPEG)
Architecture
Intelligent DOM Compression (NEW in v3.2.0)
The outline generation uses a three-step compression algorithm:
Unwrap - Remove meaningless generic wrapper nodes
Text Truncation - Limit text content to 50 characters
List Folding - Detect and compress repetitive patterns using SimHash
Original DOM (5000+ lines)
ā
[Remove empty wrappers]
ā
[Detect similar patterns]
ā
Compressed Outline (<500 lines, ~91% reduction)Example compression:
// Before: 48 similar product cards
- listitem [ref=e234]: Product 1 details...
- listitem [ref=e235]: Product 2 details...
- listitem [ref=e236]: Product 3 details...
... (45 more items)
// After: Folded representation
- listitem [ref=e234]: Product 1 details...
- listitem (... and 47 more similar) [refs: e235, e236, ...]System Architecture
This project implements a two-tier architecture optimized for minimal token usage:
MCP Server - Communicates with AI assistants via Model Context Protocol
HTTP Server - Controls browser instances and provides grep-based search
AI Assistant <--[MCP Protocol]--> MCP Server <--[HTTP]--> HTTP Server <---> Browser
|
v
ripgrep engineKey Design Principles
Minimal Token Usage: Intelligent compression reduces DOM by ~91%
On-Demand Search: Content retrieved via regex patterns when needed
Performance: Uses ripgrep for 10x+ faster searching
Safety: Automatic result limiting to prevent context overflow
Ref-Based Element System
Elements in snapshots are identified using ref attributes (e.g., [ref=e1], [ref=e2]). This system:
Provides stable identifiers for elements
Works with Playwright's internal
aria-refselectorsEnables precise element targeting across page changes
Example snapshot:
- generic [ref=e2]:
- heading "Example Domain" [level=1] [ref=e3]
- paragraph [ref=e4]: This domain is for use in illustrative examples
- link "More information..." [ref=e5] [cursor=pointer]Examples
Creating and Navigating Pages
// Create a page
const { pageId, success } = await client.createPage(
'shopping',
'Amazon shopping page',
'https://amazon.com'
);
// Navigate to another URL
await client.browserNavigate(pageId, 'https://google.com');
// Go back/forward
await client.browserNavigateBack(pageId);
await client.browserNavigateForward(pageId);Getting Page Structure (Enhanced in v3.2.0)
// Get intelligently compressed page outline
const outline = await client.getOutline(pageId);
console.log(outline);
// Example output showing list folding:
// Page Outline (473/5257 lines):
// - banner [ref=e1]
// - navigation [ref=e2]
// - list "Products" [ref=e3]
// - listitem "Product 1" [ref=e4]
// - listitem (... and 47 more similar) [refs: e5, e6, ...]
//
// Compression: 91% reduction while preserving all refsSearching Content
// Search for text (case insensitive)
const results = await client.searchSnapshot(pageId, 'product', { ignoreCase: true });
// Search with regular expression (default behavior)
const emails = await client.searchSnapshot(pageId, '[a-zA-Z0-9]+@[a-zA-Z0-9]+\\.[a-z]+');
// Search multiple patterns (OR)
const buttons = await client.searchSnapshot(pageId, 'button|submit|click', { ignoreCase: true });
// Search for prices with dollar sign
const prices = await client.searchSnapshot(pageId, '\\$\\d+\\.\\d{2}');
// Limit number of result lines
const firstTen = await client.searchSnapshot(pageId, 'item', { lineLimit: 10 });Search Options:
pattern(required) - Regex pattern to search forignoreCase(optional) - Case insensitive search (default: false)lineLimit(optional) - Maximum lines to return (default: 100, max: 100)
Response Format:
result- Matched text contentmatchCount- Total number of matches foundtruncated- Whether results were truncated due to line limit
Interacting with Elements
// Click on element using its ref identifier
await client.browserClick(pageId, 'e3');
// Type text into input field
await client.browserType(pageId, 'e4', 'search query');
// Hover over element
await client.browserHover(pageId, 'e2');
// Press keyboard key
await client.browserPressKey(pageId, 'Enter');Scrolling and Waiting
// Scroll page
await client.scrollToBottom(pageId);
await client.scrollToTop(pageId);
// Wait operations
await client.waitForTimeout(pageId, 2000); // Wait 2 seconds
await client.waitForSelector(pageId, '#my-element');Best Practices for AI Assistants
Recommended Workflow: Outline First, Then Precise Actions
When using this library with AI assistants, follow this optimized workflow for maximum efficiency:
1. Start with Page Outline (Always First Step)
// Always begin by getting the compressed page structure
const outline = await client.getOutline(pageId);
// Returns intelligently compressed view with ~91% reductionThe outline provides:
Complete page structure with intelligent list folding
First element of each pattern preserved as sample
All ref identifiers for precise element targeting
Clear indication of repetitive patterns (e.g., "... and 47 more similar")
2. Use Outline to Guide Precise Searches
// Based on outline understanding, perform targeted searches
const searchResults = await client.searchSnapshot(pageId, 'specific term', {
ignoreCase: true,
lineLimit: 10
});
// Now you know exactly what to search for and where it might be3. Take Actions with Verified Ref IDs
// Use ref IDs discovered from outline or grep, not guesswork
await client.browserClick(pageId, 'e42'); // Ref ID confirmed from outlineWhy This Approach?
Token Efficiency: Compressed outline (typically <500 lines) + targeted searches use far fewer tokens than full snapshots (often 5000+ lines)
Accuracy: The outline shows actual page structure, preventing incorrect assumptions about element locations
Smart Compression: The algorithm preserves one sample from each pattern group, so AI understands the structure without seeing all repetitions
Anti-Patterns to Avoid
ā Don't blindly try random ref IDs without verification ā Don't request full snapshots that exceed token limits ā Don't make assumptions about page structure without checking the outline first ā Don't use generic search patterns when specific ones would be more efficient
Example: Searching Amazon Products
// GOOD: Outline-first approach
const outline = await client.getOutline(pageId);
// Shows: "- listitem [ref=e234]: [first product]"
// "- listitem (... and 47 more similar) [refs: e235, e236, ...]"
// Now search for specific product attributes
const prices = await client.searchSnapshot(pageId, '\\$\\d+\\.\\d{2}', { lineLimit: 10 });
// BAD: Blind searching without context
const results = await client.searchSnapshot(pageId, 'product', { ignoreCase: true }); // Too generic
await client.browserClick(pageId, 'e1'); // Guessing ref IDsDevelopment
Prerequisites
Node.js >= 18.0.0
TypeScript
Chrome or Chromium browser
Building from Source
# Clone the repository
git clone https://github.com/yourusername/better-playwright-mcp.git
cd better-playwright-mcp
# Install dependencies
npm install
# Build the project
npm run build
# Run in development mode
npm run devProject Structure
better-playwright-mcp3/
āāā src/
ā āāā index.ts # Main export file
ā āāā mcp-server.ts # MCP server implementation
ā āāā client/
ā ā āāā playwright-client.ts # HTTP client for browser automation
ā āāā server/
ā ā āāā playwright-server.ts # HTTP server controlling browsers
ā āāā utils/
ā āāā smart-outline-simple.ts # Intelligent outline generation
ā āāā list-detector.ts # Pattern detection using SimHash
ā āāā dom-simhash.ts # SimHash implementation
ā āāā remove-useless-wrappers.ts # DOM cleanup
āāā bin/
ā āāā cli.js # CLI entry point
āāā docs/
ā āāā architecture.md # Detailed architecture documentation
āāā package.json
āāā tsconfig.json
āāā README.mdTroubleshooting
Common Issues
Port already in use
Change the port using
-pflag:npx better-playwright-mcp3 server -p 3103Or set environment variable:
PORT=3103 npx better-playwright-mcp3 server
Browser not launching
Ensure Chrome or Chromium is installed
Try using
--chromiumflag for ChromiumCheck system resources
Element not found
Verify the ref identifier exists in outline
Use
searchSnapshot()to search for elementsWait for elements using
waitForSelector()
Search returns too many results
Use more specific patterns
Use
lineLimitoption to limit resultsLeverage regex features for precise matching
Debug Mode
Enable detailed logging:
DEBUG=* npx better-playwright-mcp3Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT
Available Tools
28 toolsactivatePageC
ęæę“»ęå®ē锵é¢
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | 锵é¢ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It states 'activate' implies a mutation, but doesn't specify if this changes page state, requires permissions, has side effects, or what happens on failure. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence 'ęæę“»ęå®ē锵é¢' that directly states the action. It's front-loaded with the core purpose, though it could be more informative. There's no wasted text, making it appropriately concise for its limited content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (a mutation action with no annotations and no output schema), the description is incomplete. It doesn't explain what 'activate' entails, the expected outcome, error conditions, or how it relates to sibling tools. For a tool that likely changes browser/page state, more context is needed to guide effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the parameter 'pageId' documented as '锵é¢ID' (page ID). The description adds no additional meaning beyond this, such as format examples or constraints. With high schema coverage, the baseline score of 3 is appropriate as the schema handles parameter documentation adequately.
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 'ęæę“»ęå®ē锵é¢' (Activate the specified page) provides a basic verb+resource combination, indicating it performs an activation action on a page. However, it's vague about what 'activate' means operationally and doesn't differentiate from siblings like 'createPage' or 'browserNavigate', which also involve page manipulation. The purpose is understandable but lacks specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. With siblings like 'createPage', 'browserNavigate', and 'listPages', the description doesn't clarify if 'activate' is for switching focus, reloading, or another purpose, nor does it mention prerequisites or exclusions. This leaves usage context ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browserClickC
ē¹å»é”µé¢å ē“
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | 锵é¢ID | |
| ref | Yes | å ē“ ēxpå¼ēØå¼ | |
| waitForTimeout | No | ęä½åēå¾ č·ååæ«ē §ēå»¶čæę¶é“ļ¼ęÆ«ē§ļ¼é»č®¤2000ļ¼ |
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. 'ē¹å»é”µé¢å ē“ ' only states the action but doesn't describe what happens after clicking (e.g., page navigation, element state change, error handling). It doesn't mention authentication needs, rate limits, or whether this is a read-only or mutating operation. The description is too minimal for a tool that performs interactive browser actions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise - a single Chinese phrase. While this may be too brief for adequate tool understanding, it's perfectly front-loaded with zero wasted words. Every character serves the core purpose statement, making it maximally efficient in terms of word economy.
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 this is a browser interaction tool with 3 parameters, no annotations, and no output schema, the description is insufficiently complete. It doesn't explain what the tool returns (success/failure status, page state changes), doesn't mention error conditions, and provides minimal context for a tool that performs potentially complex browser automation. The agent would need to guess about the tool's behavior and outcomes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters (pageId, ref, waitForTimeout) are documented in the schema. The description adds no additional parameter information beyond what's already in the structured schema. According to scoring rules, when schema coverage is high (>80%), the baseline score is 3 even without parameter details in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'ē¹å»é”µé¢å ē“ ' (click page element) is a tautology that essentially restates the tool name 'browserClick' in Chinese. It doesn't specify what type of clicking occurs (single click, double click, right click) or what happens after the click. While it mentions the resource ('锵é¢å ē“ ' - page element), it lacks the specificity needed to distinguish it from similar tools like browserPressKey or browserSelectOption.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives. The description doesn't mention prerequisites (e.g., needing an active page), exclusions, or comparison to sibling tools like browserPressKey (for keyboard interactions) or browserSelectOption (for dropdown selections). The agent must infer usage from context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browserFileUploadC
äøä¼ ęä»¶å°ęå®å ē“
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | 锵é¢ID | |
| paths | Yes | č¦äøä¼ ēęä»¶č·Æå¾ę°ē» | |
| ref | Yes | ęä»¶č¾å „å ē“ ēxpå¼ēØå¼ | |
| waitForTimeout | No | ęä½åēå¾ č·ååæ«ē §ēå»¶čæę¶é“ļ¼ęÆ«ē§ļ¼é»č®¤2000ļ¼ |
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 of behavioral disclosure. It states the action (upload files) but lacks details on permissions needed, whether it's destructive (e.g., overwrites existing files), rate limits, error handling, or what happens after upload (e.g., page changes). For a mutation tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence ('äøä¼ ęä»¶å°ęå®å ē“ ') that directly states the tool's function without unnecessary words. It's front-loaded and appropriately sized for its purpose, though it could benefit from more context to improve completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no annotations, no output schema, and involves mutation (uploading files), the description is incomplete. It doesn't cover behavioral aspects like side effects, return values, or error conditions. For a 4-parameter tool in a browser automation context, more detail is needed to ensure safe and 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?
Schema description coverage is 100%, so the schema already documents all parameters (pageId, paths, ref, waitForTimeout) with descriptions. The tool description adds no additional meaning beyond what's in the schema, such as explaining how 'ref' identifies the element or format of 'paths'. Baseline 3 is appropriate when schema does the heavy lifting.
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 'äøä¼ ęä»¶å°ęå®å ē“ ' (Upload files to specified element) states a clear verb+resource combination, indicating it uploads files to an element. However, it doesn't distinguish this tool from other browser interaction tools like 'browserClick' or 'browserType', which also target elements. The purpose is understandable but lacks sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There are no explicit instructions on prerequisites (e.g., needing an open page or specific element type), exclusions, or comparisons to other tools like 'downloadImage' or general file handling. Usage is implied by the action but not contextualized.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browserHandleDialogC
å¤ēęµč§åØåƹčÆę”
| Name | Required | Description | Default |
|---|---|---|---|
| accept | Yes | ęÆå¦ę„å对čÆę” | |
| pageId | Yes | 锵é¢ID | |
| promptText | No | ę示对čÆę”ēåēęę¬ | |
| waitForTimeout | No | ęä½åēå¾ č·ååæ«ē §ēå»¶čæę¶é“ļ¼ęÆ«ē§ļ¼é»č®¤2000ļ¼ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral insight. 'å¤ē' (handle) implies a mutation action on browser dialogs, but it doesn't disclose critical traits: whether it requires specific dialog states, what happens on acceptance vs. dismissal, if it affects page navigation, or potential side effects like page reloads. For a mutation tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with a single phrase 'å¤ēęµč§åØåƹčÆę”', which is front-loaded and wastes no words. However, this brevity borders on under-specification rather than optimal conciseness, as it omits necessary details for clarity. It earns a 4 for being compact but loses points for not including even minimal operational context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (handling browser dialogs with mutation), lack of annotations, and no output schema, the description is incomplete. It doesn't cover return values, error conditions (e.g., what if no dialog exists), or integration with sibling tools like waitForSelector for dialog detection. For a 4-parameter tool with behavioral implications, this minimal description fails to provide adequate context for safe and effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear parameter descriptions in the schema (e.g., 'accept' as boolean for dialog acceptance, 'promptText' for response text). The description adds no additional meaning beyond the schema, such as explaining parameter interactions (e.g., 'promptText' is only relevant for prompt dialogs) or default behaviors. Given high schema coverage, the baseline score of 3 is appropriate as the schema adequately documents 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 'å¤ēęµč§åØåƹčÆę”' (Handle browser dialog) is a tautology that essentially restates the tool name 'browserHandleDialog' in Chinese. It doesn't specify what type of browser dialog (alert, confirm, prompt) or what 'handle' means (accept, dismiss, respond). While it distinguishes from siblings like browserClick or browserType by focusing on dialogs, the purpose remains vague without clarifying the specific action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an open page with a dialog), exclusions (e.g., not for non-dialog interactions), or related tools like browserPressKey for keyboard-based dialog handling. The description alone offers no context for appropriate usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browserHoverC
ę¬ååØé”µé¢å ē“ äø
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | 锵é¢ID | |
| ref | Yes | å ē“ ēxpå¼ēØå¼ | |
| waitForTimeout | No | ęä½åēå¾ č·ååæ«ē §ēå»¶čæę¶é“ļ¼ęÆ«ē§ļ¼é»č®¤2000ļ¼ |
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 but offers minimal information. It states the action (hover) but doesn't describe what happens after hovering (e.g., whether it triggers UI changes, waits for effects, or captures snapshots), error conditions, or performance implications. The input schema's 'waitForTimeout' parameter suggests timing behavior, but the description doesn't explain this. For a browser interaction tool with zero annotation coverage, this is inadequate.
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āa single Chinese phraseāwith zero wasted words. It's front-loaded and to the point, though this brevity comes at the cost of completeness. Every sentence (in this case, the single phrase) earns its place by directly stating the action, making it structurally efficient despite informational gaps.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a browser interaction tool with 3 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain the tool's behavior, return values (e.g., whether it provides feedback or snapshots), or how it fits into workflows with sibling tools. The lack of output schema means the description should ideally hint at results, but it doesn't. This is inadequate for guiding an AI agent effectively.
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 description coverage is 100%, with all parameters documented in the schema itself (pageId, ref, waitForTimeout). The description adds no additional meaning beyond what the schema providesāit doesn't clarify parameter relationships, usage examples, or edge cases. According to the scoring rules, when schema coverage is high (>80%), the baseline is 3 even with no parameter info in the description, which applies here.
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 'ę¬ååØé”µé¢å ē“ äø' (hover over a page element) is a tautology that essentially restates the tool name 'browserHover' in Chinese. It doesn't specify what resource is being hovered over (browser page element) or distinguish this from sibling tools like 'browserClick' or 'browserPressKey' that also interact with page elements. The purpose is clear at a basic level but lacks specificity and differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'browserClick' for clicking or 'waitForSelector' for waiting on elements, nor does it specify use cases like triggering hover effects, tooltips, or dropdown menus. There's no indication of prerequisites, timing considerations, or when this tool would be preferred over other interaction methods.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browserPressKeyC
ęé®ēęé®
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ęé®åē§°ļ¼å¦ 'Enter', 'Tab', 'ArrowDown' ē | |
| pageId | Yes | 锵é¢ID | |
| ref | No | åÆéļ¼å ē“ ēxpå¼ēØå¼ļ¼å¦ęęå®ååØčÆ„å ē“ äøęé® | |
| waitForTimeout | No | ęä½åēå¾ č·ååæ«ē §ēå»¶čæę¶é“ļ¼ęÆ«ē§ļ¼é»č®¤2000ļ¼ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. The description only states the action ('press keyboard key') without mentioning any behavioral traits such as what happens after pressing (e.g., page navigation, form submission), error conditions, or performance implications. It lacks context about browser state changes or interaction effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with just three Chinese characters ('ęé®ēęé®'), which translates to 'Press keyboard key'. It's front-loaded with zero wasted words, making it easy to parse quickly. Every character serves the core purpose without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (browser automation with 4 parameters) and lack of annotations and output schema, the description is incomplete. It doesn't explain what the tool returns, how it interacts with browser state, or potential side effects. For a tool that performs actions in a browser environment, more context about behavior and outcomes is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 4 parameters thoroughly. The description adds no additional meaning beyond what's in the schema (e.g., it doesn't explain parameter relationships or usage examples). With high schema coverage, the baseline score of 3 is appropriate as the description doesn't compensate but doesn't detract either.
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 'ęé®ēęé®' (Press keyboard key) is a tautology that essentially restates the tool name 'browserPressKey' in Chinese. It doesn't specify what resource is being acted upon (a browser page) or distinguish this from sibling tools like 'browserType' (which also involves keyboard input). The purpose is stated but lacks specificity and differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives. For example, it doesn't explain when to use 'browserPressKey' versus 'browserType' (which types text) or other browser interaction tools. The description offers no context about appropriate use cases or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browserSelectOptionC
åØäøęę”äøéę©é锹
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | 锵é¢ID | |
| ref | Yes | å ē“ ēxpå¼ēØå¼ | |
| values | Yes | č¦éę©ēé锹å¼ę°ē» | |
| waitForTimeout | No | ęä½åēå¾ č·ååæ«ē §ēå»¶čæę¶é“ļ¼ęÆ«ē§ļ¼é»č®¤2000ļ¼ |
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 of behavioral disclosure. While 'éę©é锹' implies a UI interaction, the description doesn't mention what happens after selection (e.g., page changes, validation), error conditions, or performance characteristics like timeouts beyond what's in the schema. This leaves significant gaps 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?
The description is extremely concise - a single phrase that directly states the tool's purpose with zero wasted words. It's appropriately sized for what it communicates, though it could benefit from additional context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a UI interaction tool with 4 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain what happens after selection, what the tool returns, error conditions, or how it differs from similar sibling tools. The 100% schema coverage helps with parameters but doesn't compensate for missing behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds no additional meaning about parameters beyond what the schema provides - it doesn't explain how 'values' should match dropdown options or provide examples of 'ref' XPath patterns.
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 ('éę©é锹' - select options) and the target ('äøęę”' - dropdown), which is a specific verb+resource combination. However, it doesn't distinguish this tool from sibling tools like 'browserClick' or 'browserPressKey' that might also interact with UI elements, so it doesn't reach the highest clarity level.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'browserClick' and 'browserType' available, there's no indication of when dropdown selection is appropriate versus other interaction methods, nor any mention of prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browserTypeC
åØé”µé¢å ē“ äøč¾å „ęę¬
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | 锵é¢ID | |
| ref | Yes | å ē“ ēxpå¼ēØå¼ | |
| slowly | No | ęÆå¦ę ¢éč¾å „ļ¼é»č®¤falseļ¼ | |
| submit | No | č¾å „åęÆå¦ęå车ęäŗ¤ļ¼é»č®¤falseļ¼ | |
| text | Yes | č¦č¾å „ēęę¬ | |
| waitForTimeout | No | ęä½åēå¾ č·ååæ«ē §ēå»¶čæę¶é“ļ¼ęÆ«ē§ļ¼é»č®¤2000ļ¼ |
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 mentions the action ('č¾å „ęę¬' - input text) but doesn't describe what happens after input (e.g., whether it triggers events, waits for page updates, or handles errors). It also doesn't cover permissions, rate limits, or side effects like page navigation after submission. This leaves significant gaps 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?
The description is a single, efficient sentence in Chinese ('åØé”µé¢å ē“ äøč¾å „ęę¬'), which is appropriately sized and front-loaded. There's no wasted text, though it could benefit from slightly more detail to improve clarity without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a browser automation tool with 6 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain the return value (e.g., success/failure status), error conditions, or how it interacts with other tools like waitForSelector. For a mutation tool in a rich sibling set, this lacks necessary context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the schema already documents all 6 parameters thoroughly. The description adds no additional meaning beyond what the schema provides (e.g., it doesn't explain how 'ref' relates to XPath or what 'slowly' entails in practice). Baseline 3 is appropriate when the schema does the heavy lifting.
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 'åØé”µé¢å ē“ äøč¾å „ęę¬' (Input text into a page element) states a clear verb ('č¾å „' - input) and resource ('锵é¢å ē“ ' - page element), but it's vague about what distinguishes this tool from siblings like browserPressKey or browserSelectOption. It doesn't specify that this is for typing text into input fields, which would help differentiate it from other text-related actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose browserType over browserPressKey (for key presses) or browserSelectOption (for dropdowns), nor does it specify prerequisites like needing an active page or element reference. Usage is implied but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
captureSnapshotB
ęč·ē½é”µēå®ę“åæ«ē §ļ¼ęÆęę»åØćēå¾ åčŖåØäæ®åŖåč½
| Name | Required | Description | Default |
|---|---|---|---|
| pageDescription | No | 锵é¢ęčæ°ļ¼é»č®¤'Auto snapshot page'ļ¼ | |
| pageName | No | 锵é¢åē§°ļ¼é»č®¤'snapshot'ļ¼ | |
| scrollDelay | No | ę»åØé“éę¶é“ļ¼ęÆ«ē§ļ¼é»č®¤5000ļ¼ | |
| scrolls | No | ę»åØę¬”ę°ļ¼é»č®¤1ļ¼ | |
| trim | No | ęÆå¦äæ®åŖéå¤å 容ļ¼é»č®¤trueļ¼ | |
| url | Yes | č¦ęč·ēē½é”µURL | |
| wait | No | åå§ēå¾ ę¶é“ļ¼ęÆ«ē§ļ¼é»č®¤5000ļ¼ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While it mentions 'scrolling, waiting and auto-trimming' which describes some behavior, it doesn't cover important aspects like: what format the snapshot returns (image? PDF? HTML?), whether this is a read-only operation, potential performance implications, or error conditions. For a tool with 7 parameters and no annotation coverage, this is insufficient behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise - a single Chinese sentence that efficiently communicates the core functionality. Every word earns its place: 'capture webpage complete snapshot' establishes purpose, 'support scrolling, waiting and auto-trimming' highlights key features. No wasted words or 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 the tool's complexity (7 parameters, no output schema, no annotations), the description is insufficiently complete. It doesn't explain what 'snapshot' means in terms of output format, doesn't mention whether this requires an active browser page (context from sibling tools suggests it might), and provides no guidance on error handling or performance considerations. For a tool that likely produces visual/structured output, the lack of output information is a significant 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 description coverage is 100%, so all parameters are documented in the schema. The description adds minimal value beyond the schema - it mentions 'scrolling, waiting and auto-trimming' which maps to scrolls, wait, and trim parameters, but doesn't provide additional context about how these interact or best practices. The baseline of 3 is appropriate when the schema does the heavy lifting.
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 as 'capture webpage snapshot' with specific capabilities (scrolling, waiting, auto-trimming). It distinguishes itself from siblings like getPageSnapshot and getScreenshot by emphasizing 'complete snapshot' with scrolling functionality. However, it doesn't explicitly differentiate from getPDFSnapshot which might also capture full pages.
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 through 'complete snapshot, support scrolling, waiting and auto-trimming' which suggests this is for capturing entire pages that require scrolling. However, it doesn't provide explicit guidance on when to use this versus alternatives like getPageSnapshot (which might be simpler) or getPDFSnapshot (which might produce different output formats). No explicit exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
closeAllPagesB
å ³éęęē®”ēē锵é¢
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('å ³é' - close) but doesn't clarify what 'close' entails (e.g., whether it destroys page state, requires confirmation, or affects browser sessions). It also omits details like error handling, side effects, or performance implications. For a mutation tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence ('å ³éęęē®”ēē锵é¢') that directly states the tool's purpose without unnecessary words. It's front-loaded and wastes no space, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (a mutation operation closing multiple pages), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what 'managed' means, what happens after closing (e.g., return values, errors), or how it interacts with sibling tools. For a potentially destructive action, more context is needed to ensure safe use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter details, which is appropriate. Baseline 4 applies as it doesn't compensate for missing info but aligns with the schema's completeness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'å ³éęęē®”ēē锵é¢' (Close all managed pages) clearly states the action (close) and target (all managed pages). It distinguishes from sibling tools like 'closePage' (singular) and 'closePageByIndex' (specific index), though it doesn't explicitly mention these alternatives. The purpose is specific but could be more precise about what 'managed' means.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'closePage', 'closePagesWithoutId', or 'listPages'. It doesn't specify prerequisites (e.g., whether pages must be open), exclusions, or typical scenarios. Without such context, an agent might misuse it when a more targeted tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
closePageC
å ³éęå®ē锵é¢
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | 锵é¢ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the action ('å ³é') but doesn't disclose behavioral traits such as whether this is destructive (likely yes, as closing a page typically removes it), what happens if the page doesn't exist, or if there are side effects (e.g., affecting other pages or browser state). This leaves significant gaps for an agent to understand the tool's 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 a single, efficient sentence ('å ³éęå®ē锵é¢') that directly states the tool's purpose without any wasted words. It's front-loaded and appropriately sized for a simple tool, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (a mutation tool with no annotations and no output schema), the description is incomplete. It lacks information on behavioral traits (e.g., destructiveness, error handling), usage context versus siblings, and output expectations. For a tool that likely modifies browser state, this leaves the agent with insufficient guidance to use it 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 schema description coverage is 100%, with the parameter 'pageId' documented as '锵é¢ID' (page ID). The description adds no additional meaning beyond what the schema provides, such as format examples or context about where to obtain the ID. With high schema coverage, the baseline is 3, and the description doesn't compensate with extra insights.
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 ('å ³é' meaning 'close') and the resource ('ęå®ē锵é¢' meaning 'specified page'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'closeAllPages' or 'closePageByIndex', which would require mentioning that this tool closes a single page by ID specifically.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'closeAllPages', 'closePageByIndex', or 'closePagesWithoutId'. The description only states what it does, not when it's appropriate or what prerequisites might exist (e.g., needing an open page with the specified ID).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
closePageByIndexC
éčæē“¢å¼å ³é锵é¢
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | 锵é¢ē“¢å¼ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the action (close page) but lacks details on behavioral traits: e.g., whether this destroys page content, requires specific permissions, has side effects, or returns any output. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasteāit directly states the tool's function. It's appropriately sized and front-loaded, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (a mutation tool closing pages), lack of annotations, no output schema, and incomplete behavioral disclosure, the description is inadequate. It doesn't explain what 'close' entails, potential errors, or how it interacts with sibling tools, leaving critical gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the parameter 'index' documented as '锵é¢ē“¢å¼' (page index). The description adds no additional meaning beyond the schema, such as index format or range. Baseline is 3 since the schema does the heavy lifting, but no extra value is provided.
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 'éčæē“¢å¼å ³é锵é¢' (close page by index) states the verb (close) and resource (page) with a method (by index), which is clear. However, it doesn't distinguish from sibling tools like 'closePage' or 'closeAllPages'āit's vague about how this differs from those alternatives, leaving the purpose somewhat ambiguous in 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?
There is no guidance on when to use this tool versus alternatives such as 'closePage' or 'closeAllPages'. The description implies usage by index but doesn't specify scenarios, prerequisites, or exclusions, offering minimal context for selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
closePagesWithoutIdB
å ³éęęęŖč¢«ē®”ēē锵é¢
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the action (close) but does not disclose behavioral traits such as whether this is destructive (likely yes, as it closes pages), what 'unmanaged' means, if there are permissions or side effects, or what happens after execution (e.g., confirmation, error handling). This is a significant gap for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence in Chinese ('å ³éęęęŖč¢«ē®”ēē锵é¢') that directly states the tool's purpose with zero waste. It is appropriately sized and front-loaded, making it easy to understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (a mutation tool that closes pages), no annotations, no output schema, and the description's lack of behavioral details (e.g., what 'unmanaged' means, effects, or return values), the description is incomplete. It should provide more context to guide safe and correct usage, especially since it involves a potentially destructive action.
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?
There are 0 parameters, and schema description coverage is 100%, so no parameter information is needed. The description does not add parameter semantics, but with no parameters, the baseline is 4 as it adequately describes the tool's purpose without parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'å ³éęęęŖč¢«ē®”ēē锵é¢' (Close all unmanaged pages) clearly states the action (close) and target (unmanaged pages). It distinguishes from siblings like 'closeAllPages' (closes all pages) and 'closePage' (closes a specific page) by specifying 'unmanaged' pages, though 'unmanaged' is not explicitly defined. It's not a tautology of the name 'closePagesWithoutId'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you want to close pages that are 'unmanaged', but it does not explicitly state when to use this tool versus alternatives like 'closeAllPages' or 'closePage'. The context is clear (closing unmanaged pages), but no exclusions or specific scenarios are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createPageC
å建ę°ēęµč§åØé”µé¢
| Name | Required | Description | Default |
|---|---|---|---|
| description | Yes | 锵é¢ęčæ° | |
| name | Yes | 锵é¢åē§° | |
| url | No | åÆéļ¼å建åčŖåØåƼčŖå°ēURL | |
| waitForTimeout | No | åÆéļ¼ęä½åēå¾ č·ååæ«ē §ēå»¶čæę¶é“ļ¼ęÆ«ē§ļ¼é»č®¤2000ļ¼ |
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. 'å建ę°ēęµč§åØé”µé¢' implies a write operation that creates a new page, but it doesn't disclose behavioral traits like: what happens after creation (does it become active?), whether it requires specific permissions, if there are rate limits, or what the return value is (since no output schema exists). The description is too minimal 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?
The description is a single, efficient sentence ('å建ę°ēęµč§åØé”µé¢') that directly states the purpose with zero waste. It's appropriately sized and front-loaded, though its brevity contributes to gaps in other dimensions.
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 (a mutation tool with 4 parameters, no annotations, and no output schema), the description is incomplete. It doesn't explain what the tool returns, behavioral implications, or usage context. For a tool that creates browser pagesāpotentially involving navigation and timingāmore detail is needed to guide an AI agent effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all parameters documented in the schema (name, description, url, waitForTimeout). The description adds no parameter-specific information beyond what's in the schema, so it meets the baseline of 3 where the schema does the heavy lifting.
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 'å建ę°ēęµč§åØé”µé¢' (Create a new browser page) clearly states the verb ('å建' - create) and resource ('ęµč§åØé”µé¢' - browser page). It distinguishes from siblings like 'activatePage' (activates existing page) or 'listPages' (lists pages), but doesn't explicitly mention how it differs from other creation-related tools since none exist in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., whether a browser context must be active), when not to use it, or how it relates to sibling tools like 'browserNavigate' (which navigates existing pages) or 'listPages' (which lists existing pages).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
downloadImageC
äøč½½å¾ēå°ę¬å°äø“ę¶ē®å½ļ¼čæåę¬å°ęä»¶č·Æå¾
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | å¾ēURL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the tool downloads to a temporary directory and returns a local file path, which is useful behavioral context. However, it lacks details on error handling (e.g., invalid URLs, network failures), file format support, or whether the file persists beyond the session. For a tool with no annotations, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely conciseāa single sentence in Chinese that directly states the tool's purpose and output. It's front-loaded with the core action and has no unnecessary words, making it efficient 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 no annotations, no output schema, and a single parameter with full schema coverage, the description is minimal. It covers the basic purpose and output but lacks context on error cases, file management (e.g., cleanup), or integration with sibling tools. For a tool that interacts with external resources and local files, more completeness is needed to guide safe and effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the parameter 'url' clearly documented in the schema as 'å¾ēURL'. The description doesn't add any parameter-specific information beyond what the schema provides, such as URL format requirements or supported protocols. With high schema coverage, the baseline score of 3 is appropriate as the schema handles the parameter documentation adequately.
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 ('äøč½½å¾ēå°ę¬å°äø“ę¶ē®å½') and the resource ('å¾ē'), specifying it downloads an image to a local temporary directory. It distinguishes from siblings like 'getScreenshot' or 'captureSnapshot' which capture browser content rather than download external images. However, it doesn't explicitly mention the input parameter 'url' in the description 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 provides no guidance on when to use this tool versus alternatives like 'getScreenshot' (which captures browser content) or other file-related tools. It doesn't mention prerequisites, limitations, or typical scenarios for downloading images versus capturing them from the browser.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getElementHTMLC
éčæxpå¼ēØč·åå ē“ ēouterHTMLē»ęļ¼ēØäŗč°čÆéę©åØ
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | 锵é¢ID | |
| ref | Yes | å ē“ ēxpå¼ēØå¼ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions the tool retrieves outerHTML for debugging purposes, but doesn't describe what happens if the element isn't found, whether this requires an active page session, what permissions are needed, or what the return format looks like. For a tool that interacts with browser elements, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded with the core purpose in the first clause. Every word earns its place: it states what the tool does, how it works (via XP reference), and the primary use case. No wasted words or 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 this is a browser interaction tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what happens on success/failure, what format the HTML is returned in, whether the page needs to be loaded first, or how this differs from similar sibling tools. The debugging context is helpful but doesn't compensate for missing behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters (pageId and ref) clearly documented in the schema. The description doesn't add any parameter-specific information beyond what's in the schema descriptions ('锵é¢ID' and 'å ē“ ēxpå¼ēØå¼'). This meets the baseline for high schema coverage where the description doesn't need to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'éčæxpå¼ēØč·åå ē“ ēouterHTMLē»ę' (get element's outerHTML structure via XP reference). It specifies both the action (č·å/č·å) and resource (å ē“ outerHTMLē»ę), though it doesn't explicitly differentiate from sibling tools like getPageSnapshot or getScreenshot that also retrieve content. The debugging context ('ēØäŗč°čÆéę©åØ') adds useful specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides minimal usage guidance. While it mentions the tool is 'ēØäŗč°čÆéę©åØ' (for debugging selectors), it doesn't specify when to use this tool versus alternatives like getPageSnapshot (which captures full page) or waitForSelector (which waits for elements). No explicit when-not-to-use or prerequisite information is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getPageSnapshotC
č·å锵é¢ēčÆä¹åē®ååæ«ē §ļ¼čæåęø ę°ē缩čæē»ę
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | 锵é¢ID |
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 of behavioral disclosure. While it mentions the tool returns a 'čÆä¹åē®ååæ«ē §' (semantic simplified snapshot) with 'ęø ę°ē缩čæē»ę' (clear indented structure), it doesn't explain what 'semantic simplification' means, whether this is a read-only operation, what permissions might be needed, or how the output is structured. For a tool with no annotation coverage, this leaves significant behavioral questions unanswered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise - just one sentence in Chinese. It's front-loaded with the core purpose. While efficient, it might be too brief given the complexity of what 'semantic simplified snapshot' implies and the lack of other documentation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this is a tool with no annotations, no output schema, and a potentially complex operation (semantic simplification of page content), the description is insufficient. It doesn't explain what 'semantic simplification' entails, what format the output takes, or how this differs from other snapshot tools. The description leaves too many questions unanswered for effective tool selection and use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides no information about parameters. However, with 100% schema description coverage (the single parameter 'pageId' has a description in the schema), the baseline score is 3. The description doesn't add any value beyond what's already documented in the input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'č·å锵é¢ēčÆä¹åē®ååæ«ē §' (get a semantic simplified snapshot of a page) and 'čæåęø ę°ē缩čæē»ę' (return a clear indented structure). It specifies the verb (č·å/get) and resource (锵é¢/page), but doesn't explicitly differentiate from sibling tools like 'captureSnapshot' or 'getPDFSnapshot' which might serve similar purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'captureSnapshot', 'getPDFSnapshot', and 'getScreenshot' that might produce different types of page snapshots, there's no indication of what makes this tool unique or when it should be preferred over those options.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getPDFSnapshotC
č·å锵é¢ēPDFåæ«ē §
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | PDFę ¼å¼ļ¼é»č®¤A4ļ¼ | |
| landscape | No | 横å樔å¼ļ¼é»č®¤falseļ¼ | |
| pageId | Yes | 锵é¢ID | |
| printBackground | No | ęå°čęÆļ¼é»č®¤trueļ¼ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the tool generates PDFs but doesn't disclose behavioral traits like whether it's a read-only operation, if it requires specific page states, what happens on failure, or any performance/rate limit considerations. The description is minimal and leaves critical behavior undefined.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence in Chinese that directly states the tool's purpose. It's appropriately concise without unnecessary words, though it could be more informative given the tool's complexity.
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, no output schema, and a tool that performs a non-trivial PDF generation operation, the description is incomplete. It doesn't explain what the output contains, error conditions, or how it interacts with page state. For a tool with 4 parameters and significant functionality, this minimal description leaves too much undefined.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 4 parameters. The description adds no parameter semantics beyond what's in the schema (e.g., it doesn't explain format options beyond 'A4' or clarify pageId requirements). Baseline 3 is appropriate since the schema handles parameter documentation adequately.
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 'č·å锵é¢ēPDFåæ«ē §' (Get PDF snapshot of a page) states the basic action and resource (page), but it's vague about scope and doesn't distinguish from siblings like 'getPageSnapshot' or 'captureSnapshot'. It specifies PDF output but lacks detail about what constitutes a 'snapshot' versus other capture tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'getPageSnapshot' or 'getScreenshot'. The description implies it's for PDF generation from pages, but doesn't mention prerequisites, exclusions, or specific scenarios where it's preferred over other capture methods.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getScreenshotB
č·å锵é¢ęŖå¾å¹¶äæåå°äø“ę¶ē®å½ļ¼čæåęä»¶č·Æå¾
| Name | Required | Description | Default |
|---|---|---|---|
| clip | No | ęŖå¾åŗå | |
| element | No | å ē“ éę©åØļ¼ęŖåē¹å®å ē“ ļ¼ | |
| fullPage | No | å Øé”µé¢ęŖå¾ļ¼é»č®¤trueļ¼ | |
| pageId | Yes | 锵é¢ID | |
| quality | No | JPEG蓨éļ¼é»č®¤80ļ¼ | |
| type | No | å¾ēę ¼å¼ļ¼é»č®¤pngļ¼ |
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 mentions saving to a temporary directory and returning a file path, which adds some context about output behavior. However, it doesn't cover critical aspects like whether this requires an active browser session, potential side effects (e.g., page loading), error handling, or performance implications (e.g., large page sizes).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action and outcome. Every word earns its place with no redundancy or unnecessary details, making it highly concise and well-structured for quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (6 parameters, nested objects) and lack of annotations or output schema, the description is minimally adequate. It covers the basic action and result but misses details like error cases, file format specifics, or dependencies on other tools (e.g., needing 'createPage' first). For a tool with no annotations, it should provide more behavioral context to be fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema (e.g., it doesn't explain interactions between 'clip', 'element', and 'fullPage'). Baseline 3 is appropriate as the schema does the heavy lifting.
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 ('č·å锵é¢ęŖå¾å¹¶äæåå°äø“ę¶ē®å½') and the outcome ('čæåęä»¶č·Æå¾'), making the purpose understandable. It specifies the resource (page screenshot) and the result (file path). However, it doesn't explicitly differentiate from sibling tools like 'captureSnapshot' or 'getPageSnapshot', which may have overlapping functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'captureSnapshot' or 'getPageSnapshot'. It lacks context about prerequisites (e.g., needing an active page) or exclusions (e.g., not for PDFs). Usage is implied through the action but without explicit comparison to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listPagesB
ååŗęęē®”ēē锵é¢ļ¼å å«ę é¢åURLļ¼
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the tool lists pages with title and URL, but doesn't disclose behavioral traits like whether it requires authentication, how it handles pagination or large result sets, or what 'managed pages' means (e.g., scope, permissions). For a listing tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence in Chinese that directly states the tool's function. It's front-loaded with the core action and includes essential details (title and URL) without unnecessary elaboration. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the context: no annotations, no output schema, and 0 parameters, the description is minimal. It explains what the tool does but lacks completeness for a listing operationāit doesn't cover return format, error handling, or how 'managed pages' are defined. With no structured data to rely on, the description should provide more context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameters need documentation. The description doesn't add param info, but that's fine since there are none. Baseline is 4 for 0 parameters, as the description doesn't need to compensate for any gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'ååŗęęē®”ēē锵é¢ļ¼å å«ę é¢åURLļ¼' translates to 'List all managed pages (including title and URL)'. It specifies the verb ('list'), resource ('managed pages'), and what information is included ('title and URL'). However, it doesn't explicitly distinguish it from sibling 'listPagesWithoutId', which is a similar listing tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to use it over 'listPagesWithoutId' or other page-related tools like 'createPage' or 'closeAllPages'. There's no context about prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listPagesWithoutIdB
ååŗęęęŖč¢«ē®”ēē锵é¢
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states it lists pages but doesn't disclose behavioral traits like whether this is a read-only operation, what format the output returns, potential performance considerations, or how 'unmanaged' is defined. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence in Chinese that directly states the tool's purpose with zero wasted words. It's appropriately sized and front-loaded, making it easy to understand immediately.
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 no parameters (simplifying context) but lacks annotations and an output schema, the description is minimally adequate. It states what the tool does but doesn't address output format, error conditions, or what constitutes 'unmanaged' pages. For a listing tool with no structured behavioral data, it should provide more context about results.
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 0 parameters with 100% schema description coverage. The description appropriately doesn't discuss parameters since none exist. It earns a 4 because it focuses on the tool's purpose without unnecessary parameter discussion, though not a 5 as it could briefly note the lack of parameters for clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('ååŗęę' = list all) and resource ('ęŖč¢«ē®”ēē锵é¢' = unmanaged pages), providing a specific verb+resource combination. However, it doesn't explicitly differentiate from its sibling 'listPages' (which presumably lists all pages including managed ones), so it falls short of a perfect 5.
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 by specifying 'ęŖč¢«ē®”ēē' (unmanaged), suggesting this tool should be used when you need pages that aren't managed. However, it doesn't provide explicit guidance on when to use this versus 'listPages' or other page-related tools, nor does it mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scrollToBottomC
ę»åØå°é”µé¢ęå ē“ åŗéØ
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | 锵é¢ID | |
| selector | No | å ē“ ēxpå¼ēØå¼ļ¼å¦ęäøęä¾åę»åØé”µé¢å°åŗéØ | |
| waitForTimeout | No | ęä½åēå¾ č·ååæ«ē §ēå»¶čæę¶é“ļ¼ęÆ«ē§ļ¼é»č®¤2000ļ¼ |
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 of behavioral disclosure. It states the action but lacks details on side effects (e.g., whether it triggers page reloads), error conditions (e.g., if the selector is invalid), or performance implications (e.g., timeouts). This leaves gaps in understanding how the tool behaves in practice.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that directly states the tool's purpose without unnecessary words. It's front-loaded with the core action and target, making it efficient and easy to parse. Every part of the sentence contributes essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a browser interaction tool with 3 parameters and no annotations or output schema, the description is incomplete. It doesn't cover behavioral aspects like what happens after scrolling (e.g., does it return a snapshot?), error handling, or integration with sibling tools. This leaves significant gaps for an agent to understand the tool's full context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the input schema already documents all parameters thoroughly. The description adds no additional meaning beyond what's in the schema (e.g., it doesn't explain why 'selector' is optional or how 'waitForTimeout' affects the operation). Baseline 3 is appropriate as the schema handles parameter documentation adequately.
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 ('ę»åØå°' meaning 'scroll to') and the target ('锵é¢ęå ē“ åŗéØ' meaning 'page or element bottom'), which is specific and unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'scrollToTop' or 'waitForSelector', which might have overlapping use cases for element interaction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention scenarios where scrolling is necessary (e.g., loading dynamic content) or when other tools like 'waitForSelector' might be more appropriate. Without such context, the agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scrollToTopB
ę»åØå°é”µé¢ęå ē“ é”¶éØ
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | 锵é¢ID | |
| selector | No | å ē“ ēxpå¼ēØå¼ļ¼å¦ęäøęä¾åę»åØé”µé¢å°é”¶éØ | |
| waitForTimeout | No | ęä½åēå¾ č·ååæ«ē §ēå»¶čæę¶é“ļ¼ęÆ«ē§ļ¼é»č®¤2000ļ¼ |
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 of behavioral disclosure. It mentions scrolling but does not cover aspects like whether this action is read-only, if it requires specific permissions, potential side effects (e.g., page reload), or error handling. The description is minimal and lacks behavioral context beyond the basic 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 a single, efficient sentence in Chinese that directly states the tool's purpose without any unnecessary words. It is front-loaded and appropriately sized for the tool's complexity, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and a tool with 3 parameters (one required), the description is incomplete. It lacks details on behavioral traits, return values, error conditions, or how it integrates with sibling tools. For a browser interaction tool, more context is needed to ensure safe and effective use by an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all parameters well. The description does not add any additional meaning or context beyond what the schema provides, such as explaining parameter interactions or usage nuances. With high schema coverage, the baseline score of 3 is appropriate as the description does not compensate or enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'ę»åØå°é”µé¢ęå ē“ é”¶éØ' clearly states the action (scroll to top) and target (page or element), which is specific and actionable. However, it does not explicitly differentiate from its sibling 'scrollToBottom', though the distinction is implied by the action name. This makes it clear but lacks explicit sibling differentiation.
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 to the top of a page or element, but does not provide explicit guidance on when to use this tool versus alternatives like 'scrollToBottom' or other navigation tools. It offers some context through the parameter description for 'selector', but no clear when-not-to-use or alternative recommendations are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
waitForSelectorC
ēå¾ ęå®éę©åØēå ē“ åŗē°
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | 锵é¢ID | |
| selector | Yes | CSSéę©åØęxpå¼ēØå¼ | |
| state | No | ēå¾ ēē¶ęļ¼é»č®¤visibleļ¼ | |
| timeout | No | č¶ ę¶ę¶é“ļ¼ęÆ«ē§ļ¼é»č®¤30000ļ¼ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions waiting for an element to appear, implying it's a blocking operation, but doesn't disclose key behavioral traits: that it waits up to a timeout (default 30000ms), can wait for different states (attached/detached/visible/hidden), might throw errors on timeout, or that it's specific to browser/page interactions. This leaves significant gaps for a tool with potential side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence in Chinese that directly states the tool's purpose without any fluff. It's appropriately sized and front-loaded, with every word contributing to understanding. No wasted words or unnecessary elaboration.
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, no output schema, and a tool with 4 parameters (including timeout and state with behavioral implications), the description is incomplete. It doesn't cover return values (e.g., success/failure, element reference), error conditions, or the interactive nature in a browser context. For a waiting tool with potential timeouts and state dependencies, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters (pageId, selector, state, timeout) with descriptions and defaults. The description adds no additional meaning beyond what's in the schemaāit doesn't explain parameter interactions, provide examples, or clarify semantics. Baseline 3 is appropriate when schema does the heavy lifting.
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 ('ēå¾ ' meaning 'wait for') and the target ('ęå®éę©åØēå ē“ åŗē°' meaning 'element matching specified selector to appear'), which is specific and unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'waitForTimeout' or mention that this is for browser/page interaction context, leaving room for slight improvement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention that this is for waiting on DOM elements in a browser context, nor does it differentiate from sibling tools like 'waitForTimeout' (which waits for a time period) or 'getElementHTML' (which retrieves without waiting). No explicit when/when-not or alternative recommendations are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
waitForTimeoutC
ēå¾ ęå®ęÆ«ē§ę°
| Name | Required | Description | Default |
|---|---|---|---|
| ms | Yes | ēå¾ ē毫ē§ę° | |
| pageId | Yes | 锵é¢ID |
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 of behavioral disclosure. It only states the action ('ēå¾ ') without details on execution (e.g., blocking vs. non-blocking, error handling, or effects on browser state). For a tool with potential side effects in automation, this is inadequate, leaving key behavioral traits unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence in Chinese ('ēå¾ ęå®ęÆ«ē§ę°'), which is front-loaded and wastes no words. It directly conveys the core function without unnecessary elaboration, making it highly concise and well-structured for its purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a browser automation tool with two parameters and no annotations or output schema, the description is incomplete. It doesn't cover behavioral aspects, usage context, or return values, leaving gaps that could hinder correct tool invocation. For a tool in this domain, more context is needed to ensure proper use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear parameter descriptions in the schema ('ēå¾ ē毫ē§ę°' for 'ms', '锵é¢ID' for 'pageId'). The description adds no additional meaning beyond the schema, such as explaining why both parameters are needed or their interaction. Baseline 3 is appropriate since the schema fully documents 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 'ēå¾ ęå®ęÆ«ē§ę°' (wait for specified milliseconds) states a clear purpose with a verb ('ēå¾ ') and resource ('毫ē§ę°'), but it's vague about context. It doesn't specify this is for browser/page operations or distinguish it from generic timing tools, though sibling tools suggest a browser automation context. The purpose is understandable but lacks specificity about its domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention use cases like waiting for page loads, animations, or delays in browser automation, nor does it reference sibling tools like 'waitForSelector' for comparison. Without context, users might misuse it for generic delays outside its intended scope.
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.
28 tool updates
v1.0.0- First observed
activatePage - First observed
browserClick - First observed
browserFileUpload - First observed
browserHandleDialog - First observed
browserHover - First observed
browserNavigate - First observed
browserNavigateBack - First observed
browserNavigateForward - First observed
browserPressKey - First observed
browserSelectOption - First observed
browserType - First observed
captureSnapshot - First observed
closeAllPages - First observed
closePage - First observed
closePageByIndex - First observed
closePagesWithoutId - First observed
createPage - First observed
downloadImage - First observed
getElementHTML - First observed
getPageSnapshot - First observed
getPDFSnapshot - First observed
getScreenshot - First observed
listPages - First observed
listPagesWithoutId - First observed
scrollToBottom - First observed
scrollToTop - First observed
waitForSelector - First observed
waitForTimeout
TDQS
Scored across 28 tools
Most tools have distinct purposes, but there is some overlap in page management: closePage, closePageByIndex, and closePagesWithoutId could be confusing, as they all close pages with slight variations. Similarly, listPages and listPagesWithoutId serve similar listing functions. However, the core browser interaction tools (click, type, navigate, etc.) are clearly differentiated.
Tool names follow a highly consistent snake_case pattern with clear verb_noun structure (e.g., browser_click, create_page, wait_for_selector). All tools adhere to this convention, making them predictable and easy to parse for an agent.
With 28 tools, the count is on the high side for a Playwright automation server. While it covers many operations, it may feel heavy and could potentially be streamlined by consolidating overlapping tools (e.g., multiple close and list functions).
The tool set provides comprehensive coverage for web automation tasks, including navigation, interaction (click, type, upload), waiting, scrolling, snapshot capture (HTML, PDF, screenshot), and page management (create, close, list). No obvious gaps are present for typical Playwright workflows.
Maintenance
Related MCP Connectors
AI-powered browser automation ā navigate, click, fill forms, and extract data from any website.
AI-powered web automation. Navigate websites using AI agents for one page or a thousand
AI-powered web automation. Navigate websites using AI agents for one page or a thousand
Hosted browser for AI agents: screenshots, post-JS DOM, console, WCAG. No install, no API key.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceA semantic browser runtime for AI agents that replaces raw HTML with structured data and dynamic, page-specific tools. It features built-in site memory and automated bot detection bypass to enable efficient, self-healing web automation.1-
- AlicenseAqualityDmaintenanceAn enhanced browser automation MCP server that solves token limit issues through intelligent semantic compression, enabling universal web automation with context-aware snapshot modes.121Apache 2.0

BAP MCPofficial
AlicenseNot gradedqualityCmaintenanceLightweight browser automation server for AI agents, enabling fast (10-25ms per action), structured observations and semantic selectors with zero token overhead.6Apache 2.0- FlicenseNot gradedqualityDmaintenanceToken-efficient browser automation for AI agents, filtering the DOM to only interactive elements and grouping them by page section, reducing token usage by 3-13x compared to Playwright MCP.-