Daytona Playwright MCP Server
The Daytona Playwright MCP Server lets you control a stealth Chrome browser running in a secure Daytona cloud sandbox, enabling full web automation and interaction through an MCP-compatible client.
Browser Lifecycle
Start, stop, and check the status of a browser session in a cloud sandbox.
Navigation
Navigate to URLs, go back/forward in history, and refresh pages.
Page Interaction
Click elements using CSS, XPath, or text selectors
Type text, press keyboard keys (e.g., Enter, Tab, Ctrl+C), hover, select dropdown options, and scroll pages or specific elements.
Content Extraction
Take full-page or element-specific screenshots
Extract visible text, inner/outer HTML, element attributes, and execute arbitrary JavaScript.
Waiting
Wait for elements to appear/disappear/become visible or for navigation to complete.
Tab Management
Open new tabs, list all open tabs (with URLs and titles), switch between them by index, and close tabs.
File Operations
Upload local files to file input elements and wait for/capture file downloads.
Additionally, a live VNC view of the sandbox desktop is available to observe browser actions, with all browsing running in a secure, isolated cloud environment.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Daytona Playwright MCP Servergo to github.com and take a screenshot of the trending repositories"
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.
Daytona Playwright MCP Server
An MCP (Model Context Protocol) server that lets you control a stealth patchright+Chrome browser running inside a Daytona cloud sandbox. Use it with Claude Code, Claude Desktop, or any MCP-compatible client to browse the web, take screenshots, fill forms, and more.
https://github.com/user-attachments/assets/23b13e1f-4ed3-4204-ad0d-b2fdb1f77d0d
Features
Stealth Chrome: Real Chrome (not headless, via patchright's stealth patches) rendered into a virtual display
Live VNC view: The signed preview URL returned by
browser_startstreams the sandbox desktop, so you can watch what Claude is doingCloud Sandbox: Browser runs securely in a Daytona sandbox, isolated from your local machine
Rich Tool Set: Navigate, click, type, scroll, take screenshots, extract content, manage tabs
Screenshot Support: Returns screenshots as images that Claude can see and analyze
Multiple Transports: Works with stdio (default), SSE, or HTTP
Related MCP server: Glance
Quick Start
1. Install the Package
pipx install git+https://github.com/jamesmurdza/playwright-daytona-mcp-server.git2. Get a Daytona API Key
Sign up at daytona.io
Go to your dashboard and generate an API key
3. Configure Claude Code / Claude Desktop
Add to your MCP settings:
{
"mcpServers": {
"daytona-playwright": {
"command": "daytona-playwright-mcp",
"env": {
"DAYTONA_API_KEY": "your-api-key-here"
}
}
}
}Usage
Once configured, you can ask Claude to browse the web:
"Start a browser and go to https://news.ycombinator.com"
"Take a screenshot of the page"
"Click on the first article link"
"Search for 'AI news' on Google and show me the results"
"Fill out the contact form on example.com with test data"Workflow
Start the browser: Claude will call
browser_startto create a Daytona sandbox and launch ChromeNavigate and interact: Use navigation, clicking, typing, and other tools
Take screenshots: See what's on the page with
browser_screenshotClean up: Call
browser_stopwhen done to delete the sandbox
Available Tools
Browser Lifecycle
Tool | Description |
| Start a new browser session in a Daytona sandbox |
| Stop the browser and clean up the sandbox |
| Check if the browser is running |
Navigation
Tool | Description |
| Navigate to a URL |
| Go back in history |
| Go forward in history |
| Refresh the current page |
Interaction
Tool | Description |
| Click on an element (CSS, XPath, or text selector) |
| Type text into an input field |
| Press keyboard keys (Enter, Tab, etc.) |
| Hover over an element |
| Select from a dropdown |
| Scroll the page or an element |
Content Extraction
Tool | Description |
| Take a screenshot (full page or element) |
| Get text content from the page |
| Get HTML content |
| Get an element's attribute |
| Run JavaScript and get results |
Waiting
Tool | Description |
| Wait for an element to appear/disappear |
| Wait for navigation to complete |
Tab Management
Tool | Description |
| Open a new tab |
| List all open tabs |
| Switch to a different tab |
| Close a tab |
File Operations
Tool | Description |
| Upload a file to a file input |
Running with Different Transports
Stdio (Default - for Claude Code/Desktop)
daytona-playwright-mcpHTTP Transport (for remote connections)
daytona-playwright-mcp --transport http --host 0.0.0.0 --port 8765Then connect via: http://localhost:8765/mcp
SSE Transport (legacy)
daytona-playwright-mcp --transport sse --host 0.0.0.0 --port 8765Environment Variables
Variable | Description | Default |
| Your Daytona API key (required) | - |
| Daytona API server URL |
|
Development
Run from Source
# Clone the repository
git clone https://github.com/jamesmurdza/playwright-daytona-mcp-server.git
cd playwright-daytona-mcp-server
# Install dependencies
uv sync
# Run the server
uv run daytona-playwright-mcpConfigure MCP for Development
When developing locally, use this MCP configuration:
{
"mcpServers": {
"daytona-playwright": {
"command": "uv",
"args": ["run", "--directory", "/path/to/playwright-daytona-mcp-server", "daytona-playwright-mcp"],
"env": {
"DAYTONA_API_KEY": "your-api-key-here"
}
}
}
}Run Tests
uv run pytestHow It Works
When you call
browser_start, the server:Builds a minimal Daytona sandbox image declaratively (xfce + VNC stack for
computer_use, plus patchright with the Chrome channel)Starts
computer_useso the sandbox desktop is streamed on port 6080 (the returned "Live view" URL)Launches Chrome via patchright into
DISPLAY=:0with CDP bound on0.0.0.0:9222— no TCP proxy needed, since patchright's stealth patches are applied at launch timeConnects to Chrome over a signed CDP WebSocket through Daytona's secure preview URL
All browser commands are executed through the async Playwright API connected to the remote browser
Screenshots are captured as PNG images and returned via MCP's image content type
When you call
browser_stop, the sandbox is deleted and all resources are freed
Credits
Based on the Daytona browser-in-sandbox pattern by synacktraa
Uses Patchright for Playwright CDP connectivity
Built with FastMCP for the MCP server
Powered by Daytona cloud sandboxes
Available Tools
26 toolsbrowser_backB
Navigate back in browser history.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states the action but doesn't describe what happens if there's no history to navigate back to, whether this affects the current page state, or what the output might contain. For a browser navigation tool, this leaves significant behavioral questions unanswered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that communicates the core functionality without any wasted words. It's appropriately sized for a simple navigation operation and gets straight to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this is a simple navigation tool with zero parameters and an output schema exists (so return values don't need description), the description is minimally adequate. However, it lacks important context about when this operation is possible and what happens in edge cases, which would be helpful for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters with 100% schema description coverage, so the baseline is 4. The description appropriately doesn't discuss parameters since none exist, which is correct for this parameterless tool.
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 ('Navigate back') and resource ('browser history'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from its sibling 'browser_forward', which would be the natural alternative for navigation in the opposite direction.
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 like 'browser_forward' or 'browser_navigate'. The description doesn't mention prerequisites such as requiring an active browser session or having history to navigate back through.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_clickA
Click on an element on the page.
Supports CSS selectors, XPath, and text selectors. Examples:
CSS: "button.primary", "#submit-btn", "[data-testid='login']"
XPath: "//button[@type='submit']"
Text: "text=Sign In", "text=Submit"
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | CSS selector, XPath, or text to click (e.g., 'button.submit', '//button[@id="login"]', 'text=Sign In') | |
| button | No | Mouse button to use | left |
| click_count | No | Number of clicks (1 for single, 2 for double) | |
| timeout | No | Timeout in milliseconds |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions supported selector types but doesn't describe what happens on failure (e.g., if element not found), whether it waits for element visibility, or any side effects like page navigation. For a browser interaction tool with zero annotation coverage, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly structured: a clear purpose statement followed by supporting information and concrete examples. Every sentence earns its place, with no redundant or unnecessary information. The examples are directly relevant and enhance understanding without verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (browser interaction with 4 parameters), no annotations, but 100% schema coverage and an output schema exists, the description is adequate but incomplete. It covers the core action and selector examples but misses important behavioral context like error conditions, waiting behavior, or interaction consequences that would be valuable 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 4 parameters thoroughly. The description adds examples for the 'selector' parameter (CSS, XPath, text formats) which provides helpful context beyond the schema's generic description, but doesn't add meaningful semantics for other parameters. 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 specific action ('Click on an element') and resource ('on the page'), distinguishing it from sibling tools like browser_hover, browser_press, or browser_type. The first sentence directly communicates the tool's function without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through examples of selector types (CSS, XPath, text) but doesn't explicitly state when to use this tool versus alternatives like browser_press (for keyboard) or browser_hover. It provides some context but lacks explicit guidance on tool selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_close_tabB
Close a browser tab.
| Name | Required | Description | Default |
|---|---|---|---|
| index | No | Index of the tab to close (defaults to current tab) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('Close') but doesn't explain what happens after closure (e.g., if the browser switches to another tab, if data is lost, or if it requires specific permissions). For a mutation tool with zero annotation coverage, this lack of detail about consequences and side effects is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence ('Close a browser tab.') that is front-loaded and wastes no words. It efficiently conveys the core action without unnecessary elaboration, making it easy for an agent 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 tool's low complexity (one optional parameter) and the presence of an output schema (which handles return values), the description is minimally complete. However, it lacks context about behavioral aspects (e.g., what happens post-closure) and usage guidelines, which are important for a mutation tool with no annotations. This makes it adequate but with clear gaps in guidance.
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, with the 'index' parameter well-documented as 'Index of the tab to close (defaults to current tab)'. The description adds no additional meaning beyond this, as it doesn't clarify tab indexing specifics (e.g., zero-based) or edge cases. With high schema coverage, the baseline score of 3 is appropriate, as the schema handles the parameter semantics adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Close') and resource ('a browser tab'), making the purpose immediately understandable. It distinguishes this tool from siblings like browser_list_tabs or browser_new_tab by focusing on tab closure rather than listing or creating tabs. However, it doesn't explicitly differentiate from browser_stop (which might close the entire browser) or specify if it closes only one tab versus multiple.
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 open browser or tab), exclusions (e.g., not for closing windows), or comparisons to siblings like browser_stop or browser_switch_tab. Without such context, an agent might misuse it or overlook better options.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_download_waitA
Wait for a download to start and complete, returning the downloaded file path.
Call this before triggering the download action.
| Name | Required | Description | Default |
|---|---|---|---|
| timeout | No | Timeout in milliseconds to wait for download |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It describes the core behavior (waiting for download completion and returning file path) but lacks details about error handling (e.g., what happens if no download starts), file management (e.g., where files are saved), or system dependencies. It adds basic context but misses important behavioral aspects.
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 perfectly concise with two sentences that each serve a distinct purpose: the first states what the tool does, the second provides critical usage guidance. There's zero wasted language or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (monitoring asynchronous downloads), no annotations, but with an output schema (implied by 'Has output schema: true'), the description is reasonably complete. It covers the purpose and sequencing but could better address behavioral nuances like what constitutes a 'download' or failure modes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% description coverage for its single parameter (timeout), so the baseline is 3. The description doesn't add parameter-specific details beyond what the schema provides, but since there's only one optional parameter with good schema documentation, the minimal impact justifies a 4 rather than a 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 ('Wait for a download to start and complete') and the resource/outcome ('returning the downloaded file path'). It distinguishes itself from sibling tools by focusing on download monitoring rather than navigation, interaction, or other browser 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?
The description explicitly provides when-to-use guidance: 'Call this before triggering the download action.' This tells the agent the proper sequence and context for using this tool relative to other actions that might initiate downloads.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_evaluateA
Execute JavaScript in the page context and return the result.
Examples:
"document.title"
"window.location.href"
"document.querySelectorAll('a').length"
"JSON.stringify(localStorage)"
| Name | Required | Description | Default |
|---|---|---|---|
| script | Yes | JavaScript code to execute in the page context |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but lacks behavioral details. It mentions execution 'in the page context' but doesn't specify security implications, error handling, performance impact, or whether it requires a loaded page. This is inadequate for a tool that executes arbitrary JavaScript.
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, followed by concise, relevant examples. Every sentence earns its place by clarifying usage without redundancy, making it efficient 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 (executing arbitrary JavaScript) and lack of annotations, the description is incomplete—it doesn't cover safety, errors, or dependencies. However, the presence of an output schema reduces the need to explain return values, and the schema covers parameters adequately.
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 'script' parameter fully. The description adds minimal value through examples that illustrate possible script content, but doesn't provide additional syntax, constraints, or best practices beyond what the schema states.
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 in the page context') and the outcome ('return the result'), distinguishing it from sibling tools that perform navigation, interaction, or content extraction rather than script execution. The examples reinforce this purpose by showing typical JavaScript 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?
The description implies usage through examples (e.g., accessing document properties, querying elements), but does not explicitly state when to use this tool versus alternatives like browser_get_html or browser_get_text for content extraction. No guidance on prerequisites or exclusions is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_forwardB
Navigate forward in browser history.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral insight. It states what the tool does but doesn't disclose critical traits like whether it waits for page load, handles errors if no forward history exists, or requires an active browser session. This leaves significant gaps for agent decision-making.
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 ('Navigate forward') and efficiently specifies the context ('in browser history'). Every word earns its place, making it 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 low complexity (no parameters, simple action) and the presence of an output schema (which handles return values), the description is minimally adequate. However, it lacks context about behavioral constraints (e.g., history availability) and sibling differentiation, which could improve completeness for agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, focusing instead on the tool's action. A baseline of 4 is applied since no parameters exist to document.
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 ('Navigate forward') and target ('in browser history'), making the purpose immediately understandable. It distinguishes from siblings like 'browser_back' by specifying forward direction, though it doesn't explicitly contrast with other navigation tools like 'browser_navigate' or 'browser_refresh'.
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 forward history available), exclusions (e.g., not for new navigation), or sibling comparisons (e.g., use 'browser_back' for backward navigation, 'browser_navigate' for new URLs).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_get_attributeB
Get an attribute value from an element.
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | CSS selector for the element | |
| attribute | Yes | Name of the attribute to get (e.g., 'href', 'src', 'class') | |
| timeout | No | Timeout in milliseconds |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action but lacks details on error handling (e.g., what happens if the selector doesn't match), performance implications, or whether it requires specific permissions. This is a significant gap for a tool with potential side effects in a browser 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 that directly states the tool's purpose without unnecessary words. It is front-loaded and every part earns its place by clearly conveying the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (interacting with browser elements), lack of annotations, and presence of an output schema (which handles return values), the description is minimally adequate. However, it could benefit from more context on usage scenarios or behavioral traits to fully compensate for the missing annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear documentation for all parameters (selector, attribute, timeout). The description adds no additional meaning beyond what the schema provides, such as examples of common attributes or selector best practices, so it 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 clearly states the specific action ('Get') and resource ('attribute value from an element'), distinguishing it from siblings like browser_get_text or browser_get_html by focusing on attributes rather than text content or HTML structure.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives is provided. While the purpose implies it's for retrieving attribute values, it doesn't specify scenarios where this is preferred over other get methods or mention prerequisites like requiring an active browser session.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_get_htmlB
Get HTML content from the page or a specific element.
| Name | Required | Description | Default |
|---|---|---|---|
| selector | No | CSS selector to get HTML from specific element. If not provided, gets full page HTML. | |
| outer | No | Whether to include the element itself (outer) or just its contents (inner) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states what the tool does but lacks behavioral details: it doesn't mention if this requires an active browser session, potential performance impacts for large pages, error handling for invalid selectors, or that it's a read-only operation. For a tool with no annotations, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose ('Get HTML content') and adds essential qualification ('from the page or a specific element'). Every word earns its place with zero waste, 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 moderate complexity (2 parameters, no annotations, but with output schema), the description is minimally adequate. The output schema likely covers return values, reducing the need for description detail. However, without annotations, it should do more to explain behavioral aspects like session requirements or error cases, leaving gaps in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear documentation for both parameters (selector and outer). The description adds minimal value beyond the schema, only implying the selector's purpose without details. Since the schema fully covers parameters, the baseline is 3, and the description doesn't enhance semantics significantly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('HTML content'), specifying it can target 'the page or a specific element'. It distinguishes from siblings like browser_get_text (text vs HTML) and browser_get_attribute (attributes vs HTML), though not explicitly named. However, it lacks explicit sibling differentiation, 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?
No guidance is provided on when to use this tool versus alternatives. It doesn't mention scenarios like preferring browser_get_text for plain text, browser_screenshot for visual capture, or browser_evaluate for JavaScript execution. The description implies usage through 'page or a specific element' but offers no explicit when/when-not context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_get_textB
Get text content from the page or specific elements.
| Name | Required | Description | Default |
|---|---|---|---|
| selector | No | CSS selector to get text from specific element(s). If not provided, gets all visible text. | |
| timeout | No | Timeout in milliseconds |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states what the tool does but doesn't describe important behavioral traits like whether this is a read-only operation (implied but not stated), potential performance implications, what happens with invisible text, how it handles multiple elements matching the selector, or error conditions. The description is minimal and lacks the behavioral context needed for a tool interacting with a browser.
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 gets straight to the point with zero wasted words. It's appropriately sized for a straightforward tool and front-loads the core purpose immediately. Every word earns its place in communicating 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?
Given that there's an output schema (which handles return values), 100% schema description coverage, and this is a relatively simple read operation, the description is minimally complete. However, for a browser interaction tool with no annotations, it should provide more behavioral context about how text extraction works, what 'visible text' means, and potential limitations. The description meets the minimum viable threshold but leaves gaps in understanding the tool's 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 fully documents both parameters. The description doesn't add any meaningful parameter semantics beyond what's in the schema - it mentions 'specific elements' which relates to the selector parameter, but this is already covered in the schema description. With high schema coverage, the baseline score of 3 is appropriate as the description doesn't compensate for any gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('text content from the page or specific elements'), making the purpose immediately understandable. It distinguishes this from siblings like browser_get_html (which gets HTML) and browser_get_attribute (which gets attributes), though it doesn't explicitly name these alternatives. The description is specific enough to understand what the tool does 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?
The description implies when to use this tool (to extract text content) versus alternatives like browser_get_html for HTML structure, but doesn't explicitly state when-not-to-use scenarios or name specific sibling tools. The parameter description for 'selector' provides some implicit guidance ('If not provided, gets all visible text'), but there's no explicit comparison with other text-extraction methods or context about when this is preferred over other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_hoverB
Hover over an element on the page.
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | CSS selector or text selector for the element to hover over | |
| timeout | No | Timeout in milliseconds |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states what the tool does but doesn't explain what 'hover over' means in practice (e.g., simulates mouse movement, may trigger CSS events), potential side effects (e.g., could change page state), error conditions (e.g., if selector not found), or response behavior. For a browser automation tool with no annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded with the core action and target, making it easy to parse. Every word earns its place, and there's no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there's an output schema (which likely describes the return value), the description doesn't need to explain return values. However, for a browser interaction tool with no annotations and multiple similar siblings, the description is minimal. It covers the basic purpose but lacks context about behavior, usage scenarios, and differentiation from other tools, making it only adequate for simple use cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear documentation for both parameters (selector and timeout). The description doesn't add any parameter-specific information beyond what's in the schema, such as examples of valid selectors or typical timeout values. However, since the schema fully covers the parameters, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 distinguish this from sibling tools like 'browser_click' or 'browser_press', which also interact with page elements, leaving some ambiguity about when to choose hover versus other interaction methods.
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 typical use cases (e.g., triggering dropdown menus, tooltips), prerequisites (e.g., element must be visible), or exclusions (e.g., not for clicking). With multiple sibling interaction tools available, this lack of context makes it harder for an agent to select appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_list_tabsA
List all open tabs with their URLs and titles.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states what the tool does (list tabs with URLs and titles) but does not mention behavioral traits such as whether it requires an active browser session, potential performance impacts, or how it handles errors. This leaves gaps in understanding 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 that front-loads the core action ('List all open tabs') and adds necessary detail ('with their URLs and titles') without any waste. It is appropriately sized for a simple tool with no parameters, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (0 parameters, no annotations), the description is complete enough for basic understanding. It specifies what is listed (tabs, URLs, titles), and since an output schema exists, it need not explain return values. However, it lacks context on prerequisites like an active browser session, which could 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 0 parameters, and schema description coverage is 100%, so no parameter information is needed. The description does not add parameter details beyond the schema, but this is appropriate as there are no parameters to document. Baseline is 4 for zero parameters, as it avoids unnecessary complexity.
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 tabs') and the resources returned ('with their URLs and titles'), distinguishing it from siblings like browser_switch_tab or browser_close_tab that manipulate tabs rather than list them. It uses precise verbs and specifies the scope (all open tabs), 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 implies usage by stating 'List all open tabs,' suggesting it should be used when needing to enumerate tabs, but it does not explicitly mention when to use this tool versus alternatives like browser_status or browser_switch_tab. No exclusions or prerequisites are provided, leaving some ambiguity in context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_new_tabA
Open a new browser tab and switch to it.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | URL to open in the new tab |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action but does not cover important traits such as whether it requires an existing browser session, what happens if no URL is provided (e.g., opens a blank page), error handling, or performance implications. This leaves significant gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action ('Open a new browser tab and switch to it') with zero wasted words. It is appropriately sized for the tool's simplicity and gets straight to the point 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?
Given the tool's low complexity (one optional parameter) and the presence of an output schema (which handles return values), the description is minimally adequate. However, it lacks details on behavioral aspects like prerequisites (e.g., requires an active browser session) or side effects, which are important for a mutation tool with no annotations, making it incomplete for full contextual understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the 'url' parameter documented as 'URL to open in the new tab'. The description does not add any additional meaning beyond this, such as URL format requirements or default behavior when null. With high schema coverage, the baseline score of 3 is appropriate as the schema handles the parameter documentation adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Open a new browser tab and switch to it'), which directly addresses the verb+resource combination. It distinguishes itself from siblings like 'browser_switch_tab' (which switches to an existing tab) and 'browser_navigate' (which navigates within the current tab), 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 implies usage when a new tab is needed and switching to it is required, but it does not explicitly state when to use this tool versus alternatives like 'browser_navigate' for in-tab navigation or 'browser_switch_tab' for existing tabs. It provides clear context but lacks explicit exclusions or named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_pressB
Press a keyboard key, optionally on a specific element.
Key examples: Enter, Tab, Escape, Backspace, Delete, ArrowUp, ArrowDown, Control+a, Control+c, Control+v, Shift+Tab, Alt+F4
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Key to press (e.g., 'Enter', 'Tab', 'Escape', 'ArrowDown', 'Control+a') | |
| selector | No | Optional selector to focus before pressing key | |
| timeout | No | Timeout in milliseconds |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions pressing keys and optional element targeting but lacks critical behavioral details: whether this requires focus, what happens if the selector isn't found, if it waits for page changes, or any error conditions. The key examples are helpful but don't constitute full behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded: the first sentence states the core purpose, and the second provides helpful examples without redundancy. Every sentence earns its place, and there's zero waste in the text.
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 (keyboard interaction in a browser), no annotations, and an output schema (which handles return values), the description is minimally adequate. It covers the basic action but lacks details on behavior, error handling, or integration with sibling tools, leaving gaps for an AI agent to infer 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 100%, so the schema already documents all parameters thoroughly. The description adds minimal value beyond the schema: it reiterates the optional element targeting and provides key examples, but these examples are already hinted in the schema's key description. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Press a keyboard key, optionally on a specific element.' This is a specific verb+resource combination that distinguishes it from siblings like browser_type (typing text) or browser_click (mouse clicks). However, it doesn't explicitly differentiate from all keyboard-related operations that might exist in other contexts.
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 through the phrase 'optionally on a specific element,' suggesting this tool is for keyboard interactions in a browser context. However, it doesn't provide explicit guidance on when to use this vs. alternatives like browser_type (for text input) or browser_click (for mouse actions), nor does it mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_refreshB
Refresh the current page.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action but doesn't explain what 'refresh' entails—e.g., whether it reloads the page from cache or server, if it preserves form data, or if it triggers page events. This leaves 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 with no wasted words. It's front-loaded and efficiently communicates the core action, 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 (0 parameters) and the presence of an output schema, the description is minimally adequate. However, without annotations and with behavioral aspects unexplained, it doesn't fully cover what the agent needs to know about the refresh operation's effects and prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter details, which is appropriate here, but it also doesn't mention any implicit context (e.g., requiring an active browser session), keeping it slightly incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Refresh') and the target ('the current page'), providing a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'browser_navigate' or 'browser_forward', which might also affect page content.
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 'browser_navigate' (for loading a new URL) or 'browser_forward/back' (for navigation history). It lacks context about when refreshing is appropriate, such as after dynamic content updates or to reload stale data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_screenshotC
Take a screenshot of the current page or a specific element.
Returns the screenshot as an image that can be displayed.
| Name | Required | Description | Default |
|---|---|---|---|
| full_page | No | Whether to capture the full scrollable page | |
| selector | No | Optional selector to screenshot a specific element |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions the return format ('image that can be displayed'), which is helpful. However, it doesn't address important behavioral aspects: whether this requires an active browser session, what happens if the selector isn't found, performance/rate limits, file format details, or whether this is a read-only operation. The description is minimal beyond the basic return statement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with just two sentences that directly state the action and return value. Every word earns its place with zero redundancy. It's front-loaded with the primary purpose and follows with essential return information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this is a browser interaction tool with no annotations and no output schema, the description is incomplete. It doesn't address session requirements, error conditions, image format specifics, or how the returned image can actually be used/displayed. For a tool that interacts with a browser and returns binary data, more contextual information would be helpful 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 both parameters thoroughly. The description mentions 'current page or a specific element' which aligns with the full_page and selector parameters, but adds no additional semantic context beyond what's in the schema descriptions. This meets the baseline expectation when schema coverage is complete.
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 ('Take a screenshot') and resource ('current page or a specific element'), making the purpose immediately understandable. It distinguishes from sibling tools like browser_get_html or browser_get_text by focusing on visual capture rather than content extraction. However, it doesn't explicitly differentiate from all possible screenshot-related tools that might exist in other contexts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to prefer full_page vs selector, or how this relates to other browser tools like browser_get_html for content extraction. There's no context about prerequisites (e.g., needing an active browser session) or performance considerations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_scrollB
Scroll the page or a specific element.
| Name | Required | Description | Default |
|---|---|---|---|
| direction | No | Direction to scroll | down |
| amount | No | Amount to scroll in pixels | |
| selector | No | Optional selector for a scrollable element |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states what the tool does but lacks critical details: whether scrolling is smooth or instant, how it handles invalid selectors or directions, if it waits for page load, or what happens on errors. For a mutation tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action ('Scroll') and target. There is zero waste—every word contributes directly to understanding the tool's function, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (3 parameters, no annotations, but with an output schema), the description is minimally adequate. It covers the basic purpose but lacks behavioral context, error handling, or integration details. The output schema may help, but the description doesn't reference it, leaving gaps in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear parameter descriptions in the schema. The description adds minimal value beyond the schema—it hints at the 'selector' parameter's purpose ('specific element') but doesn't explain parameter interactions or provide examples. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('scroll') and the target ('the page or a specific element'), making the purpose immediately understandable. It distinguishes itself from siblings like browser_click or browser_navigate by focusing on scrolling functionality, though it doesn't explicitly contrast with similar tools (none exist in the sibling list).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an active browser session), edge cases (e.g., scrolling beyond page limits), or comparisons to other navigation tools like browser_navigate. 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.
browser_selectA
Select an option from a dropdown ( element).
Provide one of: value, label, or index.
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | CSS selector for the <select> element | |
| value | No | Value attribute to select | |
| label | No | Visible text label to select | |
| index | No | Index of option to select (0-based) | |
| timeout | No | Timeout in milliseconds |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but provides minimal behavioral context. It mentions the three selection methods (value, label, index) but doesn't disclose important behaviors like whether it waits for page updates after selection, what happens if multiple options match, error conditions, or interaction with JavaScript-driven dropdowns. The description is functional but lacks operational transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with only two sentences that both earn their place. The first sentence states the core purpose, and the second provides essential parameter guidance. There's zero wasted text or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (dropdown interaction with multiple selection methods), no annotations, but 100% schema coverage and an output schema, the description is minimally adequate. It covers the basic purpose and parameter approach but lacks important behavioral context that would help an agent use it effectively in real scenarios. The output schema existence means return values don't need description, but operational guidance is sparse.
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 5 parameters. The description adds minimal value by mentioning the three selection methods (value, label, index) which correspond to parameters, but doesn't provide additional semantic context beyond what's in the schema descriptions. 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 clearly states the specific action ('Select an option from a dropdown') and identifies the target resource ('<select> element'). It distinguishes from sibling tools like browser_click or browser_type by focusing specifically on dropdown interaction, not general clicking or typing.
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 (for dropdown selection) but doesn't explicitly state when NOT to use it or mention alternatives. It implies usage for <select> elements but doesn't compare to other selection methods or sibling tools that might handle similar UI interactions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_startA
Start a new browser session in a Daytona sandbox.
This creates a cloud sandbox with Chrome installed, launches the browser, and establishes a connection for remote control. Must be called before using any other browser tools.
| Name | Required | Description | Default |
|---|---|---|---|
| timeout | No | Timeout in seconds to wait for browser to be ready |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses key behavioral traits: creates a cloud sandbox, installs Chrome, launches browser, establishes remote control connection, and has prerequisite sequencing. However, it doesn't mention potential costs, rate limits, authentication needs, or what happens if called multiple times. The description adds useful context but doesn't fully compensate for the lack of annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Perfectly structured with two sentences: first states the core purpose, second provides critical usage guidance. Every word earns its place with zero redundancy. The information is front-loaded with the most important details first.
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 (creates cloud infrastructure), lack of annotations, but presence of output schema, the description does well but has gaps. It explains the prerequisite nature and what gets created, but doesn't address potential failures, costs, or what the output contains. The output schema existence reduces the need to explain return values, but more behavioral context would help.
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 doesn't mention the timeout parameter at all, but with 100% schema description coverage and only one optional parameter, the baseline is high. The schema fully documents the timeout parameter, so the description doesn't need to compensate. However, it could have explained why timeout matters for browser readiness, so it doesn't reach a perfect score.
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 ('Start a new browser session'), the resource ('in a Daytona sandbox'), and distinguishes it from siblings by explaining it's a prerequisite for all other browser tools. It goes beyond the tool name to explain what the session creation entails: cloud sandbox with Chrome, browser launch, and remote control connection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use this tool: 'Must be called before using any other browser tools.' This provides clear contextual guidance about its prerequisite role in the workflow, distinguishing it from all sibling tools that require an active session.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_statusB
Check the current status of the browser session.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action is to 'Check' status, implying a read-only operation, but doesn't detail what specific status information is returned (e.g., session ID, active tabs, errors) or any behavioral traits like latency or dependencies. This is insufficient for a tool with no annotation support.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that directly states the tool's purpose without any unnecessary words. It is front-loaded and efficiently communicates the core function, 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 has no parameters, 100% schema coverage, and an output schema exists, the description's job is reduced. However, for a status-checking tool with no annotations, it should ideally specify what 'status' entails (e.g., session health, tab count) to be fully complete. The current description is minimal but adequate given the structured data support.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and the input schema has 100% description coverage, so no parameter information is needed in the description. The description doesn't add any parameter semantics, but since there are no parameters, this is acceptable, and the baseline score of 4 reflects that no compensation is required.
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 ('Check') and target ('current status of the browser session'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'browser_list_tabs' or 'browser_start', which might also provide status-related information, 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 provides no guidance on when to use this tool versus alternatives. For example, it doesn't specify if this is for checking overall session health, tab status, or other browser states, nor does it mention prerequisites like requiring an active session. This lack of context leaves usage unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_stopA
Stop the browser and clean up the Daytona sandbox.
Call this when you're done using the browser to free up resources.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's actions (stopping the browser and cleaning up the sandbox) and the outcome (freeing up resources), which are critical for understanding this destructive operation. However, it doesn't mention potential side effects like losing unsaved data or session state.
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 perfectly concise with two sentences that each earn their place: the first states the action and resource, the second provides usage guidance. It's front-loaded with the core purpose and wastes no words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, has output schema), the description is complete. It explains what the tool does, when to use it, and the outcome, which is sufficient for a cleanup operation. The output schema will handle return values, so no need to describe them here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters with 100% schema description coverage, so the baseline is 4. The description appropriately doesn't discuss parameters, as none exist, and instead focuses on the tool's purpose and usage 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 tool's purpose with specific verbs ('stop', 'clean up') and identifies the resource ('browser', 'Daytona sandbox'). It distinguishes itself from sibling tools like browser_start, browser_status, and browser_close_tab by focusing on termination and cleanup rather than initialization, monitoring, or tab management.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool ('Call this when you're done using the browser') and implicitly suggests alternatives (e.g., use other browser tools while active, avoid calling prematurely). This clearly differentiates it from siblings that perform actions during browser usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_switch_tabB
Switch to a different browser tab by index.
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | Index of the tab to switch to (0-based) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the action but lacks behavioral details: it doesn't specify what happens if the index is invalid (e.g., out of bounds), whether this affects browser state permanently, or if it requires specific permissions. 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 directly states the tool's purpose without unnecessary words. It is front-loaded and every part earns its place, 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 moderate complexity (a mutation with one parameter), no annotations, and an output schema (which reduces need to describe returns), the description is minimally adequate. However, it lacks details on error handling, prerequisites, and behavioral context, leaving gaps that could hinder an agent's correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the parameter 'index' fully documented in the schema as 'Index of the tab to switch to (0-based)'. The description adds no additional meaning beyond this, so it meets the baseline of 3 where the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Switch to') and target ('a different browser tab by index'), making the purpose immediately understandable. It doesn't explicitly distinguish from siblings like browser_list_tabs or browser_new_tab, but the verb 'switch' implies navigation between existing tabs rather than listing or creating them.
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. For example, it doesn't mention prerequisites (e.g., needing an active browser session or using browser_list_tabs first to get indices) or contrast with other navigation tools like browser_back or browser_navigate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_typeB
Type text into an input field or editable element.
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | CSS selector or text selector for the input element | |
| text | Yes | Text to type into the element | |
| clear_first | No | Whether to clear the field before typing | |
| delay | No | Delay between key presses in milliseconds | |
| timeout | No | Timeout in milliseconds |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While it mentions the core action of typing text, it fails to describe important behavioral traits such as error handling (what happens if the selector doesn't exist or the element isn't editable), whether it waits for the element to be visible, or any side effects like triggering events. 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, clear sentence that efficiently conveys the core functionality without unnecessary words. It's appropriately sized and front-loaded, making it easy to understand at a glance, which is ideal for a tool with comprehensive schema documentation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (5 parameters, no annotations, but with an output schema), the description is minimally adequate. The output schema likely handles return values, reducing the need for description detail. However, for a mutation tool (typing implies changing state) with no annotations, the description should provide more behavioral context, such as success/failure conditions or interaction effects, to be fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all parameters well-documented in the schema itself (e.g., selector for targeting, text for input, clear_first for clearing behavior). The description adds no additional parameter semantics beyond what's already in the schema, so it meets the baseline of 3 for high schema coverage without compensating 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 clearly states the action ('type text') and target ('into an input field or editable element'), providing a specific verb+resource combination. However, it doesn't differentiate this tool from similar siblings like browser_press (which might simulate key presses) or browser_select (which might select options), leaving room for ambiguity in a crowded browser automation context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With many sibling tools available (e.g., browser_click, browser_press, browser_select), there's no indication of when typing text is appropriate versus other input methods, nor any mention of prerequisites like requiring an element to be focused or editable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_upload_fileB
Upload a file to a file input element.
Note: The file must exist on the machine running this MCP server.
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | CSS selector for the file input element | |
| file_path | Yes | Path to the file to upload (on your local machine) | |
| timeout | No | Timeout in milliseconds |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only mentions the local file requirement. It doesn't disclose critical behavioral traits like whether this triggers form submission, handles authentication needs, manages file size limits, or what happens on upload failure. The timeout parameter hints at asynchronous behavior but isn't explained.
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 efficiently structured with a clear purpose statement followed by a critical note. Both sentences earn their place, though it could be slightly more front-loaded by integrating the note into the main statement. No wasted words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with 100% schema coverage and an output schema (which handles return values), the description is minimally adequate. However, as a mutation tool with no annotations, it should provide more behavioral context about side effects, error conditions, and integration with other browser tools to be truly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, providing clear documentation for all parameters. The description adds minimal value beyond the schema by reinforcing the local file requirement for 'file_path', but doesn't explain parameter interactions or provide usage examples. Baseline 3 is appropriate given the comprehensive schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('upload a file') and target resource ('to a file input element'), distinguishing it from sibling tools like browser_click or browser_type. It precisely identifies the tool's function without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for file uploads to web forms via file input elements, but provides no explicit guidance on when to use this tool versus alternatives like browser_type for text input or browser_click for button interactions. It mentions a prerequisite (file must exist locally) but lacks sibling differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_wait_for_selectorB
Wait for an element to reach a specific state.
States:
attached: Element is in the DOM
detached: Element is removed from the DOM
visible: Element is visible on the page
hidden: Element is hidden or removed
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | CSS selector to wait for | |
| state | No | State to wait for | visible |
| timeout | No | Timeout in milliseconds |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While it lists possible states, it doesn't explain what happens when the timeout is reached, whether this blocks execution, what the return value indicates, or error conditions. For a waiting tool with zero annotation coverage, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise and well-structured. The first sentence states the core purpose, followed by a clear bulleted list of states. Every sentence earns its place with no wasted words, and information is front-loaded appropriately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there's an output schema (though not shown here), the description doesn't need to explain return values. However, for a waiting tool with no annotations, the description should do more to explain timeout behavior, blocking nature, and error conditions. The state explanations are helpful, but overall completeness is only adequate.
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. The description adds value by explaining the meaning of each state option (attached, detached, visible, hidden), which provides semantic context beyond the enum values in the schema. This earns a baseline 3 with some added 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 clearly states the tool's purpose: 'Wait for an element to reach a specific state.' It specifies the verb ('wait for') and resource ('element'), but doesn't explicitly differentiate from siblings like browser_wait_for_navigation. The description is specific about what the tool does, though it could better distinguish from similar waiting tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There's no mention of when to choose this over browser_wait_for_navigation or other browser tools, nor any context about prerequisites or typical use cases. The tool exists in isolation without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
26 tool updates
v0.1.0- First observed
browser_back - First observed
browser_click - First observed
browser_close_tab - First observed
browser_download_wait - First observed
browser_evaluate - First observed
browser_forward - First observed
browser_get_attribute - First observed
browser_get_html - First observed
browser_get_text - First observed
browser_hover - First observed
browser_list_tabs - First observed
browser_navigate - First observed
browser_new_tab - First observed
browser_press - First observed
browser_refresh - First observed
browser_screenshot - First observed
browser_scroll - First observed
browser_select - First observed
browser_start - First observed
browser_status - First observed
browser_stop - First observed
browser_switch_tab - First observed
browser_type - First observed
browser_upload_file - First observed
browser_wait_for_navigation - First observed
browser_wait_for_selector
TDQS
Scored across 26 tools
Each tool has a clearly distinct purpose with no ambiguity. For example, browser_click is for clicking, browser_type is for typing, browser_screenshot is for capturing images, and browser_wait_for_selector is for waiting on element states. The descriptions reinforce these distinctions, making misselection unlikely.
All tools follow a consistent 'browser_verb' or 'browser_verb_noun' naming pattern (e.g., browser_back, browser_click, browser_screenshot). This uniformity makes the tool set predictable and easy to navigate, with no deviations in style or convention.
With 26 tools, the count feels heavy for a browser automation server, though not extreme. While it covers many operations, some tools could potentially be consolidated (e.g., browser_back and browser_forward are simple navigations), making the set borderline in scope.
The tool set provides complete coverage for browser automation, including session management (start, stop, status), navigation, interaction (click, type, hover), inspection (get_html, get_text), and utilities (screenshot, download). There are no obvious gaps, and agents can handle typical workflows without dead ends.
Maintenance
Related MCP Connectors
Hosted real Google Chrome MCP with per-user persistent state. Navigate, click, type, screenshot.
A paid remote MCP for AI agent browser MCP session, built to return verdicts, receipts, usage logs,
- TabfleetOAuthcom.tabfleet
Launch, inspect, control, and share isolated cloud browsers for your agents.
MCP server for Mint — AI-powered QA that runs your app in a real browser on every PR.
Related MCP Servers
- AlicenseBqualityCmaintenanceAn MCP server that provides AI models with full browser automation capabilities through Chrome. It enables navigation, interaction, screenshots, and complete DevTools access by bridging AI clients with a companion Chrome extension.997 npm3Apache 2.0
- AlicenseCqualityDmaintenanceAn MCP server that gives Claude Code real browser control for web automation, testing, and screenshots.3223 npm151MIT
- AlicenseNot gradedqualityDmaintenanceMCP server to control Chrome browsers locally or remotely via the Claude extension, enabling navigation, form filling, screenshots, and JavaScript execution from any MCP client.MIT
- FlicenseNot gradedqualityCmaintenanceAn MCP server that gives Claude a real, persistent Chrome browser with logged-in sessions, enabling automation of sites that block headless browsers. It supports 50+ tools, cross-session knowledge, and recipe replay for complex workflows.-