Puppeteer MCP Server
Provides browser automation capabilities including navigation, element interaction, content extraction, screenshot capture, PDF generation, cookie management, and multi-tab support for web scraping and testing workflows.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Puppeteer MCP Servertake a screenshot of the homepage and save it as example.png"
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.
Puppeteer MCP Server
A Model Context Protocol (MCP) server that provides browser automation capabilities through Puppeteer. This server enables AI agents to interact with web pages, take screenshots, execute JavaScript, and perform various browser operations.
Features
Multi-tab Support: Manage multiple browser tabs with unique IDs
Comprehensive Tools: 27 tools for navigation, interaction, content extraction, and more
Dual Transport: Supports both stdio (for Claude Desktop/Code) and HTTP transports
Result Types: Consistent error handling with structured Result types
Related MCP server: Puppeteer Swarm MCP
Installation
npm install
npm run buildUsage
Stdio Mode (Default)
For use with Claude Desktop or Claude Code:
npm start
# or
node dist/index.jsHTTP Mode
For remote or containerized deployments:
npm start -- --http
# or
node dist/index.js --http --port=3000Claude Desktop Configuration
Add to your Claude Desktop config:
{
"mcpServers": {
"puppeteer": {
"command": "node",
"args": ["/path/to/puppeteer-mcp/dist/index.js"]
}
}
}Available Tools
Tab Management
Tool | Description |
| List all open browser tabs |
| Create a new tab (optionally with URL) |
| Close a tab |
| Switch to a different tab |
Navigation
Tool | Description |
| Navigate to a URL |
| Reload the current page |
| Navigate back in history |
| Navigate forward in history |
Interaction
Tool | Description |
| Click an element |
| Fill a text input |
| Select dropdown option(s) |
| Hover over an element |
| Focus an element |
Input
Tool | Description |
| Press keyboard keys |
| Perform mouse actions |
| Scroll the page or element |
Content
Tool | Description |
| Execute JavaScript |
| Get page/element HTML or text |
| Get element information |
Waiting
Tool | Description |
| Wait for element to appear |
| Wait for navigation |
| Wait for specified time |
Media
Tool | Description |
| Capture screenshot |
| Generate PDF |
Cookies
Tool | Description |
| Get cookies |
| Set cookies |
| Delete cookies |
Tool Parameters
All tools that operate on pages accept an optional tabId parameter. If not specified, the active tab is used.
Example: Navigate and Take Screenshot
// Navigate
{ "name": "navigate", "arguments": { "url": "https://example.com" } }
// Take screenshot
{ "name": "screenshot", "arguments": { "fullPage": true, "format": "png" } }Example: Multi-tab Workflow
// Create new tab
{ "name": "new_tab", "arguments": { "url": "https://site-a.com" } }
// Returns: { "id": "tab_abc123", "url": "https://site-a.com", ... }
// Create another tab
{ "name": "new_tab", "arguments": { "url": "https://site-b.com" } }
// Returns: { "id": "tab_def456", "url": "https://site-b.com", ... }
// List all tabs
{ "name": "list_tabs", "arguments": {} }
// Interact with specific tab
{ "name": "click", "arguments": { "selector": "button", "tabId": "tab_abc123" } }Environment Variables
Variable | Description | Default |
| HTTP server port |
|
| Run browser headless |
|
| Default operation timeout (ms) |
|
Development
# Install dependencies
npm install
# Run in development mode
npm run dev
# Type check
npm run typecheck
# Run tests
npm test
# Build
npm run buildArchitecture
src/
├── index.ts # Entry point, transport setup
├── server.ts # MCP server configuration
├── browser.ts # Browser lifecycle management
├── tabs.ts # Multi-tab state management
├── types.ts # TypeScript interfaces
├── errors.ts # Result types and error handling
├── schemas.ts # Zod validation schemas
└── tools/
├── tab-tools.ts # Tab management tools
├── navigation.ts # Navigation tools
├── interaction.ts # Click, fill, select, etc.
├── content.ts # Evaluate, get content
├── waiting.ts # Wait tools
├── media.ts # Screenshot, PDF
├── cookies.ts # Cookie management
└── input.ts # Keyboard, mouse, scrollLicense
MIT
puppeteer-mcp
Available Tools
27 toolsclickC
Click an element on the page
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | CSS selector for the element | |
| button | No | Mouse button to click | left |
| clickCount | No | Number of clicks | |
| delay | No | Delay between mousedown and mouseup in ms | |
| timeout | No | Timeout in milliseconds | |
| tabId | No | Tab ID to operate on (uses active tab if not specified) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the basic action without disclosing behavioral traits. It doesn't mention potential side effects (e.g., page navigation, form submissions), error conditions (e.g., if selector fails), or performance considerations (e.g., waiting for element). This leaves significant gaps for a tool that interacts with dynamic web content.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with zero wasted words. It's front-loaded with the core action and target, making it immediately understandable without 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?
For a tool with 6 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain what happens after clicking (e.g., returns success/failure, triggers events), error handling, or interaction with page state. Given the complexity of web automation, more context is needed 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%, so parameters are fully documented in the schema. The description adds no additional meaning beyond implying a 'selector' parameter, which is already covered. This meets the baseline for high schema coverage but doesn't enhance 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 'Click an element on the page' clearly states the action (click) and target (element on page), which is specific and unambiguous. However, it doesn't differentiate from sibling tools like 'mouse' or 'hover' that also interact with page elements, preventing a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'mouse' (which might offer more granular control) or 'hover' (for non-click interactions). The description lacks context about prerequisites (e.g., needing an element to be visible) or exclusions, offering minimal usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_tabA
Close a browser tab. If no tabId provided, closes the active tab.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | No | Tab ID to operate on (uses active tab if not specified) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the tool's behavior (closing tabs, defaulting to active tab) but lacks details on permissions needed, whether the action is reversible, potential side effects (e.g., losing unsaved data), or error handling. It adds basic context but misses deeper behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence and adds conditional behavior in the second. Every sentence earns its place with no wasted words, making it highly 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 the tool's moderate complexity (destructive action with one parameter) and no annotations or output schema, the description is minimally adequate. It covers the basic operation but lacks information on return values, error cases, or integration with sibling tools, leaving gaps for an AI agent to infer behavior.
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 the 'tabId' parameter. The description adds value by explaining the default behavior (closes active tab if not specified), which clarifies semantics beyond the schema's technical details. However, it does not elaborate on parameter format or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Close a browser tab') and the resource ('browser tab'), distinguishing it from siblings like 'list_tabs', 'new_tab', or 'switch_tab'. It precisely defines the verb and target, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use it (to close a tab) and specifies behavior based on parameter presence (closes active tab if no tabId). However, it does not explicitly state when not to use it or mention alternatives like 'switch_tab' for changing tabs without closing, which could help differentiate usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_cookiesC
Delete cookies by name
| Name | Required | Description | Default |
|---|---|---|---|
| names | Yes | Cookie names to delete | |
| tabId | No | Tab ID to operate on (uses active tab if not specified) |
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 states the action ('Delete') which implies mutation, but doesn't describe side effects (e.g., whether deletion is permanent, if it affects browser state), authentication needs, rate limits, or error conditions. For a destructive operation 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 a single, efficient sentence with zero wasted words. It's front-loaded with the core action and immediately communicates the essential functionality. 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?
For a destructive tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens after deletion (success/failure indicators), whether multiple cookies can be deleted atomically, or how it interacts with browser state. The agent lacks critical 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 both parameters ('names' and 'tabId') clearly documented in the schema. The description adds no additional parameter semantics beyond what's already in the schema (e.g., format of cookie names, what happens if tabId is invalid). 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 ('Delete') and target resource ('cookies by name'), making the purpose immediately understandable. It distinguishes from sibling tools like 'set_cookies' and 'get_cookies' by specifying deletion rather than creation or retrieval. However, it doesn't explicitly mention the browser context or differentiate from other deletion tools, keeping it at 4 rather than 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 provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an active browser session), when not to use it, or how it relates to sibling tools like 'set_cookies' or 'get_cookies'. The agent must infer usage from the name and schema alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evaluateB
Execute JavaScript code in the browser context and return the result
| Name | Required | Description | Default |
|---|---|---|---|
| script | Yes | JavaScript code to execute | |
| tabId | No | Tab ID to operate on (uses active tab if not specified) |
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 execution in the browser context and returning a result, but lacks details on error handling, execution timeouts, security implications, or whether it requires specific browser permissions. This is a significant gap for a tool that executes arbitrary code.
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 ('Execute JavaScript code') and includes essential context and outcome. There is no wasted verbiage, 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 of executing JavaScript in a browser, the lack of annotations, and no output schema, the description is incomplete. It does not cover critical aspects like error responses, return value formats, or safety considerations, leaving gaps that could hinder effective tool 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 schema already documents both parameters ('script' and 'tabId') with clear descriptions. The description does not add any additional meaning beyond what the schema provides, such as examples of valid JavaScript code or details on how 'tabId' interacts with browser tabs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Execute JavaScript code') and the context ('in the browser context'), distinguishing it from sibling tools that perform different browser automation tasks like clicking, navigating, or taking screenshots. It explicitly mentions the return value ('and return the result'), which is crucial for understanding its function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for executing JavaScript in a browser, but it does not explicitly state when to use this tool versus alternatives like 'query_selector' for DOM queries or 'get_content' for content extraction. No guidance is provided on prerequisites, such as requiring an active browser session or specific permissions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fillC
Fill a text input or textarea with a value
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | CSS selector for the element | |
| value | Yes | Text value to fill | |
| clearFirst | No | Clear the field before filling | |
| timeout | No | Timeout in milliseconds | |
| tabId | No | Tab ID to operate on (uses active tab if not specified) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only states the basic action. It doesn't disclose behavioral traits like whether it waits for the element to be visible, handles errors if the selector fails, or interacts with page state. This leaves significant gaps for a tool that modifies web page content.
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. Every word earns its place with no redundancy or fluff, making it easy to parse quickly while conveying the essential function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain return values, error conditions, or interaction with page state, leaving the agent with incomplete context for safe and effective use in a browser automation scenario.
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 parameters are well-documented in the schema itself. The description adds no additional meaning beyond implying 'value' is for text input, which is already clear from schema descriptions. Baseline 3 is appropriate as the schema handles 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 ('fill') and target ('text input or textarea'), making the purpose immediately understandable. It doesn't differentiate from siblings like 'select' or 'keyboard' that might also input text, but it's specific enough to convey the core function without being tautological.
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 'keyboard' for typing or 'select' for dropdowns. The description only states what it does, not when it's appropriate, leaving the agent to infer usage from context without explicit direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
focusC
Focus an element on the page
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | CSS selector for the element | |
| timeout | No | Timeout in milliseconds | |
| tabId | No | Tab ID to operate on (uses active tab if not specified) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. While 'focus an element' implies a non-destructive UI interaction, it doesn't disclose behavioral traits like what happens if the element isn't focusable, whether it waits for the element to appear, what visual feedback occurs, or error conditions. The description is too minimal for a tool that interacts with browser elements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with zero wasted words. It's front-loaded with the core action and target. Every word earns its place, making it highly efficient 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 of browser automation (interacting with dynamic pages) and lack of annotations or output schema, the description is insufficient. It doesn't explain what 'focus' means in this context (e.g., UI focus vs. programmatic focus), what happens on success/failure, or how it relates to other browser tools. For a tool with 3 parameters and no structured safety hints, 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 fully documents all three parameters (selector, timeout, tabId). The description adds no additional parameter semantics beyond what's in the schema. This meets the baseline of 3 since the schema does the heavy lifting, but the description doesn't compensate or provide extra context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('focus') and target ('an element on the page'), making the purpose immediately understandable. It distinguishes itself from siblings like 'click' or 'hover' by specifying a different interaction type. However, it doesn't explicitly differentiate from similar tools like 'select' or 'query_selector' which might also involve element targeting.
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 many sibling tools available (e.g., 'click', 'hover', 'select'), there's no indication of when focusing an element is appropriate versus other interactions. No prerequisites, exclusions, or complementary tools are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_contentC
Get the HTML or text content of the page or a specific element
| Name | Required | Description | Default |
|---|---|---|---|
| selector | No | Element selector (returns full page content if not specified) | |
| type | No | Content type to return | text |
| tabId | No | Tab ID to operate on (uses active tab if not specified) |
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 mentions what the tool does but lacks behavioral details such as permissions needed, rate limits, error handling, or what happens if the selector doesn't exist. This is inadequate for a tool that interacts with web content.
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 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 of interacting with web content, no annotations, and no output schema, the description is incomplete. It doesn't cover behavioral aspects like return format, error cases, or dependencies on other tools (e.g., requiring a page to be loaded), leaving significant 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%, so the schema already documents all parameters well. The description adds minimal value by implying the tool can retrieve full page content or specific elements, but doesn't provide additional semantics beyond what the schema specifies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'HTML or text content of the page or a specific element', making the purpose evident. However, it doesn't explicitly differentiate from sibling tools like 'query_selector' or 'evaluate', which might also retrieve content, so it lacks sibling distinction.
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 siblings like 'query_selector' and 'evaluate' that might overlap in functionality, there's no explicit context or exclusions mentioned, leaving usage unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cookiesC
Get cookies for the current page or specified URLs
| Name | Required | Description | Default |
|---|---|---|---|
| urls | No | URLs to get cookies for (uses current page URL if not specified) | |
| tabId | No | Tab ID to operate on (uses active tab if not specified) |
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 states what the tool does but lacks details on permissions needed, rate limits, whether it returns all cookies or specific types, or how errors are handled. This is insufficient for a tool that interacts with browser data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose and scope without any unnecessary words. It's front-loaded and appropriately sized for its function.
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 browser cookie retrieval, no annotations, and no output schema, the description is incomplete. It doesn't explain what the output looks like (e.g., cookie objects with attributes), potential security considerations, or error cases, leaving significant 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?
The input schema has 100% description coverage, clearly documenting both parameters ('urls' and 'tabId') with their purposes and default behaviors. The description adds no additional parameter semantics beyond what the schema provides, so it meets the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('cookies'), specifying it can target the current page or specified URLs. However, it doesn't explicitly differentiate from sibling tools like 'delete_cookies' or 'set_cookies' beyond the verb difference, which is why it doesn't reach a 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 provides minimal guidance by mentioning the default behavior (current page if no URLs specified), but it doesn't explain when to use this tool versus alternatives like 'delete_cookies' or 'set_cookies', nor does it outline any prerequisites or exclusions for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
go_backB
Navigate back in browser history
| Name | Required | Description | Default |
|---|---|---|---|
| waitUntil | No | ||
| timeout | No | Timeout in milliseconds | |
| tabId | No | Tab ID to operate on (uses active tab if not specified) |
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 'Navigate back' implies a navigation action, it doesn't specify what happens on success/failure, whether it waits for page load, or if it requires specific browser state. The description lacks crucial 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 with zero wasted words. It's front-loaded with the core action and resource, making it immediately understandable. Every word earns its place in conveying the essential function.
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 navigation tool with 3 parameters, no annotations, and no output schema, the description is insufficient. It doesn't address behavioral aspects like error conditions, success indicators, or interaction with browser state. The minimal description leaves too many contextual gaps for effective tool 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?
With 67% schema description coverage (2 of 3 parameters documented) and 0 required parameters, the description adds value by implying the core navigation behavior. However, it doesn't explain parameter purposes like 'waitUntil' options or 'tabId' usage, leaving some semantic gaps despite decent schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Navigate back') and resource ('browser history'), distinguishing it from sibling tools like 'go_forward' (forward navigation) and 'reload' (page refresh). It uses precise terminology that directly communicates the tool's function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'go_forward', 'reload', or 'navigate'. It doesn't mention prerequisites (e.g., requiring browser context or existing history) or typical use cases (e.g., after clicking links).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
go_forwardB
Navigate forward in browser history
| Name | Required | Description | Default |
|---|---|---|---|
| waitUntil | No | ||
| timeout | No | Timeout in milliseconds | |
| tabId | No | Tab ID to operate on (uses active tab if not specified) |
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 states the action but doesn't mention what happens if no forward history exists, whether it waits for page load, or what the expected outcome is. The description lacks crucial behavioral context for a navigation operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose with zero wasted words. It's appropriately sized for a simple navigation operation and front-loads the 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 this is a browser navigation tool with no annotations, no output schema, and 3 parameters (even if optional), the description is insufficient. It doesn't explain what happens on success/failure, what the return value might be, or important behavioral constraints. The description leaves too many contextual gaps for proper agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67% (2 of 3 parameters have descriptions). The description adds no parameter-specific information beyond what the schema provides. However, with 0 required parameters and relatively complete schema documentation, the baseline is high. The description doesn't compensate for the 33% gap but doesn't need to heavily given the optional nature of 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 'Navigate forward in browser history' clearly states the specific action (navigate forward) and resource (browser history). It distinguishes from sibling tools like 'go_back' (backward navigation) and 'navigate' (new URL navigation), providing precise 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 prerequisites (e.g., having forward history available), exclusions, or compare with similar tools like 'go_back' or 'reload'. Usage is implied but not explicitly defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hoverC
Hover over an element on the page
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | CSS selector for the element | |
| timeout | No | Timeout in milliseconds | |
| tabId | No | Tab ID to operate on (uses active tab if not specified) |
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 but lacks details on side effects (e.g., if it triggers events), error handling, or performance implications. This is a significant gap for a tool that interacts with web elements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with zero waste, front-loading the core action. It's appropriately sized for a simple tool, making it highly efficient and easy to understand.
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 (interacting with web elements) and lack of annotations and output schema, the description is incomplete. It doesn't cover what happens on hover (e.g., tooltips, state changes), success/failure indicators, or integration with sibling tools, leaving 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%, so the schema fully documents all parameters. The description adds no additional meaning beyond what's in the schema, such as examples or edge cases, resulting in the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('hover over') and target ('an element on the page'), providing a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'mouse' or 'click', which might have overlapping functionality, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives like 'mouse' or 'click' from the sibling list, nor does it mention any prerequisites or exclusions. It's a basic statement of function without contextual usage advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyboardC
Press a key or key combination
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Key to press (e.g., "Enter", "Tab", "a") | |
| modifiers | No | Modifier keys to hold | |
| tabId | No | Tab ID to operate on (uses active tab if not specified) |
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 states what the tool does ('Press') but doesn't describe important behavioral aspects: whether this simulates physical key presses, how it interacts with browser focus, what happens if the target isn't keyboard-focusable, or any side effects. The description is minimal and lacks operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise - a single, clear sentence that communicates the core functionality without any wasted words. It's front-loaded with the essential action and doesn't include unnecessary elaboration or examples.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain what 'pressing' means in this context (simulation vs. actual input), what happens after key press, error conditions, or typical use cases. The description leaves too many operational questions unanswered.
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 three parameters. The description adds no parameter-specific information beyond what's in the schema. The baseline score of 3 reflects adequate parameter documentation through the schema alone, with no additional value from the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Press') and target ('a key or key combination'), making the purpose immediately understandable. It distinguishes from siblings like 'click' or 'mouse' by focusing on keyboard input rather than mouse actions. However, it doesn't explicitly differentiate from all possible keyboard-related tools that might exist.
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 keyboard input is preferred over other input methods (like 'fill' for text entry or 'click' for button activation), nor does it specify prerequisites or context for effective use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tabsA
List all open browser tabs with their IDs, URLs, and titles
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states what the tool returns (IDs, URLs, titles) without disclosing behavioral traits like whether it lists tabs across all windows, if it requires specific permissions, how it handles private/incognito tabs, or what format the output takes. This leaves significant gaps for a 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 that front-loads the core action ('List all open browser tabs') followed by the return details. Every word earns its place with zero redundancy 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?
For a zero-parameter tool with no output schema, the description adequately covers the basic purpose but lacks completeness regarding behavioral context (e.g., scope, permissions, output format). Given the sibling tools involve browser interactions, more context about tab enumeration behavior would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters with 100% schema description coverage, so the baseline is 4. The description appropriately doesn't waste space discussing non-existent parameters, maintaining focus on the tool's purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('List all open browser tabs') and resources involved ('with their IDs, URLs, and titles'). It distinguishes itself from siblings like 'get_content' or 'query_selector' by focusing on tab enumeration rather than content extraction or DOM querying.
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 needing to enumerate tabs, but provides no explicit guidance on when to use this versus alternatives like 'switch_tab' (for navigation) or 'new_tab' (for creation). It lacks explicit when-not-to-use statements or prerequisite context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mouseC
Perform mouse actions at specific coordinates
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | X coordinate | |
| y | Yes | Y coordinate | |
| button | No | left | |
| action | No | Mouse action to perform | click |
| tabId | No | Tab ID to operate on (uses active tab if not specified) |
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 'Perform mouse actions' implies interaction with the UI, it doesn't specify whether this requires focus on a specific window/tab, potential side effects (e.g., triggering events), or error conditions. The description is too vague for a tool that manipulates user interface elements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It's front-loaded with the core purpose, making it easy to parse quickly, 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 of a mouse interaction tool with 5 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain return values, error handling, coordinate systems, or how it integrates with sibling tools (e.g., 'click' vs. 'mouse' with action='click'), leaving critical gaps for an AI agent to use it 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 80%, providing a solid baseline. The description adds minimal value beyond the schema—it mentions 'specific coordinates' (implied by x and y parameters) and 'mouse actions' (implied by the action parameter), but doesn't clarify coordinate systems (e.g., screen vs. viewport), action sequences, or tab context. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Perform mouse actions at specific coordinates' clearly states the verb ('perform mouse actions') and resource ('at specific coordinates'), making the purpose understandable. However, it doesn't distinguish this tool from sibling tools like 'click' or 'hover', which also involve mouse interactions, leaving some ambiguity about its specific role.
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 'click' or 'hover'. It lacks context about scenarios where this tool is preferred, prerequisites, or exclusions, leaving the agent to infer usage from the tool name and parameters alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
new_tabA
Open a new browser tab, optionally navigating to a URL. The new tab becomes active.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | URL to navigate to in the new tab |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and adds valuable behavioral context beyond the basic action: it specifies that the new tab becomes active (important UI state information) and that URL navigation is optional. However, it doesn't mention potential side effects like browser focus changes or tab management implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with zero waste: first states core functionality with optional parameter, second adds crucial behavioral detail. Every word earns its place, and the most important information (opening new tab) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter tool with no annotations and no output schema, the description is reasonably complete: it explains what the tool does, the optional parameter, and key behavioral outcome. However, it could mention what happens if no URL is provided (opens blank tab) for full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents the single optional 'url' parameter. The description adds marginal value by mentioning 'optionally navigating to a URL' but doesn't provide additional semantic context beyond what the schema provides. 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 verb ('Open') and resource ('a new browser tab'), with specific scope ('optionally navigating to a URL') and behavioral detail ('The new tab becomes active'). It distinguishes from siblings like 'navigate' (which changes current tab) and 'switch_tab' (which activates existing tab).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool (to open new tabs, optionally with URL navigation), but doesn't explicitly state when not to use it or name specific alternatives. It implies differentiation from 'navigate' (changes current tab) and 'switch_tab' (activates existing tab), but lacks explicit exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pdfC
Generate a PDF of the current page
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | A4 | |
| landscape | No | ||
| printBackground | No | ||
| margin | No | ||
| tabId | No | Tab ID to operate on (uses active tab if not specified) |
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 states the action ('Generate a PDF') but doesn't describe what 'current page' means, whether this requires specific page states, what happens if generation fails, or any performance characteristics. The description provides minimal 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, clear sentence that states the core functionality without unnecessary words. It's perfectly front-loaded with the essential information. Every word earns its place, making this an excellent example of conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 parameters, nested objects, no annotations, and no output schema, the description is inadequate. It doesn't explain what 'current page' means in context of browser automation, doesn't describe the PDF generation process or output format, and provides no guidance on parameter usage. The description leaves too many open questions for effective tool invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 20% schema description coverage (only 'tabId' has a description), the description provides no information about any parameters. It doesn't mention format options, layout settings, or margin configurations that the schema reveals. The description fails to compensate for the low schema coverage, leaving most parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Generate') and resource ('PDF of the current page'), making the purpose immediately understandable. It distinguishes from sibling tools like 'screenshot' by specifying PDF generation rather than image capture. However, it doesn't explicitly differentiate from all possible document generation tools, keeping it at a 4 rather than 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 provides no guidance on when to use this tool versus alternatives like 'screenshot' for visual captures or other document generation methods. It doesn't mention prerequisites (e.g., requires an active page/tab) or contextual constraints, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_selectorC
Get information about an element matching a CSS selector
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | CSS selector for the element | |
| tabId | No | Tab ID to operate on (uses active tab if not specified) |
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 'Get information' but does not specify what type of information (e.g., text, attributes, position), whether it's read-only, potential errors (e.g., if selector not found), or interaction effects. This leaves significant gaps in understanding 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, clear sentence that efficiently conveys the core purpose without unnecessary words. It is front-loaded and appropriately sized, making it easy to parse and 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 of interacting with web elements, the lack of annotations and output schema means the description should do more to explain behavior, return values, and error handling. It fails to provide sufficient context for effective use, especially compared to sibling tools in a browser automation 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 ('selector' and 'tabId') well-documented in the schema. The description adds no additional meaning beyond the schema, such as examples or constraints, so it meets the baseline for adequate but not enhanced parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Get information') and resource ('an element matching a CSS selector'), making it easy to understand what the tool does. However, it does not explicitly differentiate from sibling tools like 'get_content' or 'select', which might have overlapping functionality, preventing a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as 'get_content' for broader content retrieval or 'select' for element interaction. It lacks context about prerequisites, exclusions, or specific scenarios where this tool is preferred, leaving usage unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reloadC
Reload the current page
| Name | Required | Description | Default |
|---|---|---|---|
| waitUntil | No | ||
| timeout | No | Timeout in milliseconds | |
| tabId | No | Tab ID to operate on (uses active tab if not specified) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. 'Reload' implies a page refresh, but it doesn't disclose behavioral traits like whether it waits for page load, handles authentication persistence, affects browser state, or has side effects. The description is minimal and lacks operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's front-loaded and appropriately sized for a simple action, avoiding 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 3 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain what 'reload' entails operationally, success/failure conditions, or interaction with browser state. For a tool with parameters and no structured safety hints, 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 67% (2 of 3 parameters have descriptions). The description adds no parameter semantics beyond the schema. With moderate coverage, the baseline is 3, as the schema documents 'waitUntil' enum values, 'timeout' range/meaning, and 'tabId' default behavior, but the description doesn't enhance this.
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 'Reload the current page' clearly states the action (reload) and target (current page) with a specific verb+resource. It distinguishes from siblings like 'navigate' (loads a new URL) or 'go_back' (navigates back), but doesn't explicitly contrast with them. The purpose is unambiguous but could be more differentiated.
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 like refreshing content after dynamic updates, handling stale pages, or when to prefer 'navigate' to the same URL. With many browser interaction siblings, explicit usage context is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screenshotB
Capture a screenshot of the page or a specific element
| Name | Required | Description | Default |
|---|---|---|---|
| fullPage | No | Capture full scrollable page | |
| selector | No | Element to screenshot (screenshots viewport if not specified) | |
| format | No | png | |
| quality | No | Image quality (jpeg/webp only) | |
| width | No | Viewport width in pixels (default 1024) | |
| height | No | Viewport height in pixels (default 768) | |
| scale | No | Device scale factor (default 1, use 2 for retina) | |
| tabId | No | Tab ID to operate on (uses active tab if not specified) |
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 disclosure. It mentions capturing 'page or a specific element' but doesn't describe what happens (e.g., returns image data, saves to file, requires permissions, has visual rendering delays, or affects browser state). For a tool with 8 parameters and no annotation coverage, this leaves significant behavioral unknowns.
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 immediately communicates the core function. Every word earns its place with no redundancy or unnecessary elaboration. It's perfectly front-loaded with the 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?
For a complex screenshot tool with 8 parameters, no annotations, and no output schema, the description is insufficiently complete. It doesn't explain what the tool returns (image data format, file location, etc.), performance characteristics, error conditions, or how it interacts with the browser context. The agent lacks crucial information to use this tool 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 high at 88%, providing good documentation for most parameters. The description adds minimal value beyond the schema - it hints at the 'selector' parameter's behavior ('screenshots viewport if not specified') but this is already covered in the schema. With high schema coverage, the baseline of 3 is appropriate as the description doesn't significantly 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 specific action ('capture a screenshot') and the target ('page or a specific element'), distinguishing it from all sibling tools which perform different browser automation functions like navigation, interaction, or content extraction. It uses precise language that immediately communicates the tool's function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context (when you need visual capture of a webpage or element) but provides no explicit guidance on when to choose this over alternatives like 'pdf' (which captures as PDF) or 'get_content' (which extracts text/HTML). There's no mention of prerequisites or limitations, leaving the agent to infer appropriate usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scrollC
Scroll the page or a specific element
| Name | Required | Description | Default |
|---|---|---|---|
| direction | No | down | |
| amount | No | Scroll amount in pixels | |
| selector | No | Element to scroll (scrolls page if not specified) | |
| smooth | No | Use smooth scrolling | |
| tabId | No | Tab ID to operate on (uses active tab if not specified) |
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 states what the tool does but doesn't describe important behavioral aspects like whether scrolling is immediate or animated, what happens if the selector doesn't exist, whether it waits for page load, or what the return value is. The description is minimal and lacks operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at just 6 words, front-loaded with the core functionality. Every word serves a purpose: 'scroll' defines the action, 'the page or a specific element' defines the scope. There's zero wasted verbiage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 parameters, no annotations, and no output schema, the description is insufficiently complete. It doesn't explain the tool's behavior in different scenarios, error conditions, or what constitutes successful execution. The minimal description leaves too many operational questions unanswered.
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 mentions scrolling 'the page or a specific element' which hints at the 'selector' parameter's purpose, but doesn't add meaningful semantics beyond what the 80% schema coverage already provides. The schema descriptions adequately explain each parameter's function, so the description doesn't significantly 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') and specifies what can be scrolled ('the page or a specific element'), which provides a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'navigate' or 'go_back' which involve page movement but not scrolling.
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 scrolling is appropriate compared to navigation tools, nor does it specify prerequisites like needing an active page or tab context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
selectC
Select option(s) from a dropdown/select element
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | CSS selector for the element | |
| values | Yes | Option values to select | |
| timeout | No | Timeout in milliseconds | |
| tabId | No | Tab ID to operate on (uses active tab if not specified) |
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. It mentions the action but doesn't disclose whether this requires the element to be in a particular state (visible, enabled), what happens with invalid selectors/values, or if it waits for page updates. This leaves significant gaps for a mutation tool interacting with web elements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized for a straightforward tool and front-loads the essential information, 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?
For a tool with 4 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain return values, error conditions, or behavioral nuances (like multi-select support implied by 'option(s)'). Given the complexity of web automation and lack of structured data, more context is needed for reliable 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%, providing complete parameter documentation. The description adds no additional parameter semantics beyond what's in the schema (e.g., explaining what 'values' represents or selector syntax). This meets the baseline for high schema coverage but doesn't enhance 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 ('Select option(s)') and target ('from a dropdown/select element'), providing a specific verb+resource combination. However, it doesn't explicitly distinguish this tool from similar siblings like 'click' or 'fill' that might also interact with form elements, which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'click' for buttons or 'fill' for text inputs. It doesn't mention prerequisites (e.g., needing the element to be visible) or exclusions (e.g., not working on non-select elements), leaving the agent with minimal context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_cookiesC
Set cookies in the browser
| Name | Required | Description | Default |
|---|---|---|---|
| cookies | Yes | ||
| tabId | No | Tab ID to operate on (uses active tab if not specified) |
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 but offers minimal information. It states the action is 'set' (implying mutation) but doesn't cover permission requirements, side effects (e.g., whether cookies persist across sessions), error conditions, or what happens if cookies already exist. This leaves significant behavioral 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 with zero wasted words. It's front-loaded with the core action and resource, making it immediately scannable. Every word earns its place by conveying essential 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?
For a mutation tool with no annotations, no output schema, and moderate schema coverage, the description is inadequate. It doesn't address behavioral aspects like side effects, error handling, or success indicators. Given the complexity of cookie management (multiple attributes, browser context), more context is needed to help an agent use this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50% (only 'expires' and 'tabId' have descriptions). The description adds no parameter-specific information beyond implying cookies are set. It doesn't explain the structure of the cookies array, required vs optional fields, or the meaning of cookie attributes like 'sameSite' or 'httpOnly'. The baseline 3 reflects that schema coverage is moderate but description adds little compensatory value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Set cookies in the browser' clearly states the action (set) and target resource (cookies in browser), making the purpose immediately understandable. However, it doesn't differentiate from the sibling tool 'delete_cookies' beyond the verb, missing explicit contrast between setting and deleting operations.
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 browser session), contrast with 'get_cookies' for reading cookies, or specify scenarios where setting cookies is appropriate versus other browser automation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
switch_tabB
Switch to a different tab, making it the active tab for subsequent operations.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | Tab ID to switch to |
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 changes the active tab but does not disclose behavioral traits such as whether it requires specific permissions, if it affects browser state irreversibly, potential errors (e.g., invalid tab ID), or side effects. 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 that is front-loaded with the core action and outcome. Every word earns its place, with no redundant or vague phrasing, 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 the tool's complexity (a mutation with no annotations and no output schema), the description is incomplete. It lacks details on behavioral transparency, usage guidelines, and error handling, which are crucial for an agent to invoke it correctly in a browser automation context with many sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the 'tabId' parameter. The description does not add any meaning beyond what the schema provides (e.g., format examples, source of tab IDs, or constraints), resulting in the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Switch to a different tab') and the resource ('tab'), distinguishing it from siblings like 'list_tabs' (which lists tabs) and 'new_tab' (which creates tabs). It also specifies the outcome ('making it the active tab for subsequent operations'), which adds clarity beyond just the verb.
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 does not mention prerequisites (e.g., needing an existing tab ID from 'list_tabs'), exclusions, or comparisons to similar tools like 'focus' or 'navigate', leaving usage context unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
waitA
Wait for a specified number of milliseconds
| Name | Required | Description | Default |
|---|---|---|---|
| ms | Yes | Time to wait in milliseconds |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the behavioral trait of waiting for a specified time, but it does not mention potential side effects like blocking execution, thread behavior, or error handling. It adds basic context but lacks depth for a tool with no 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 that directly states the tool's function without any unnecessary words. It is appropriately sized and front-loaded, making it easy to understand at a glance.
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 low complexity (one parameter, no output schema, no annotations), the description is minimally complete. It explains what the tool does but does not address potential issues like maximum wait times or interaction with other tools, leaving some contextual gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with the parameter 'ms' fully documented in the schema. The description adds no additional meaning beyond what the schema provides, such as usage examples or edge cases, so it meets the baseline of 3 for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('wait') and resource ('milliseconds'), and it distinguishes itself from siblings like 'wait_for_navigation' and 'wait_for_selector' by focusing on a simple time delay rather than event-based waiting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for timing delays, but it does not explicitly state when to use this tool versus alternatives like 'wait_for_navigation' or 'wait_for_selector'. It provides clear context for a basic wait but lacks explicit exclusions or comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_for_selectorC
Wait for an element matching the selector to appear in the page
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | CSS selector for the element | |
| visible | No | Wait for element to be visible | |
| hidden | No | Wait for element to be hidden | |
| timeout | No | Timeout in milliseconds | |
| tabId | No | Tab ID to operate on (uses active tab if not specified) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but lacks behavioral details. It doesn't mention what happens on timeout, whether it blocks execution, error conditions, or interaction with page state. This is inadequate for a tool that likely involves asynchronous operations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. It's front-loaded and efficiently communicates the core functionality without 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?
For a tool with 5 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain return values, error behavior, or interaction with other tools like 'query_selector'. The agent lacks context about what 'appear in the page' means operationally.
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 parameters are well-documented in the schema. The description adds no additional semantic context beyond implying the tool operates on a page, which is minimal value. Baseline 3 is appropriate as the schema handles parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('wait for') and resource ('element matching the selector'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'wait' or 'wait_for_navigation', which could cause confusion about when to choose this specific waiting tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'wait' or 'wait_for_navigation'. The description only states what it does without context about appropriate scenarios or prerequisites, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have distinct purposes, such as navigation (navigate, go_back), interaction (click, fill, hover), and waiting (wait, wait_for_selector). However, some overlap exists between mouse actions: 'mouse' (perform actions at coordinates) and 'click' (click an element) could be confused for similar tasks, though descriptions clarify their differences.
All tool names follow a consistent snake_case pattern with clear verb_noun or verb_preposition_noun structures, such as 'click', 'close_tab', 'get_content', and 'wait_for_selector'. There are no deviations in naming conventions, making the set predictable and readable.
With 27 tools, the count is borderline high for a Puppeteer server, as it includes many specific actions like 'hover' and 'keyboard' that might be consolidated. While comprehensive, it risks feeling heavy compared to typical well-scoped sets of 3-15 tools, but it's reasonable for browser automation.
The tool set provides complete coverage for browser automation, including navigation, interaction, content retrieval, tab management, cookies, and waiting mechanisms. There are no obvious gaps; agents can perform full CRUD-like operations (e.g., get/set cookies, open/close tabs) and handle common workflows without dead ends.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Stealth web automation for AI agents. Login, signup, navigate, screenshot.
Stealth web automation for AI agents. Login, signup, navigate, screenshot.
AI-powered browser automation — navigate, click, fill forms, and extract data from any website.
Provides cloud browser automation capabilities using Stagehand and Browserbase, enabling LLMs to i…
Related MCP Servers
- AlicenseCqualityDmaintenanceEnables LLMs to perform web browsing tasks, take screenshots, and execute JavaScript using Puppeteer for browser automation.428,3661MIT
- AlicenseAqualityDmaintenanceEnables browser automation with concurrent tab pool management using Puppeteer. Supports navigation, content extraction, screenshots, element interaction, and JavaScript execution across multiple browser tabs with auto-recovery and idle timeout features.11161MIT
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to perform browser automation including web navigation, element interaction, and screenshot capture using Puppeteer. It provides capabilities for executing JavaScript in the browser and monitoring console logs for debugging and data extraction.28,366MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI assistants to control a browser for web automation tasks like navigation, typing, clicking, and taking screenshots.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/andytango/puppeteer-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server