Chrome DevTools MCP
Provides automation and debugging capabilities for Chrome browser, including performance analysis, network request inspection, screenshot capture, and browser automation through Chrome DevTools.
Uses Puppeteer for reliable Chrome browser automation, including clicking, filling forms, navigation, and waiting for page elements.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Chrome DevTools MCPtake a screenshot of the current page"
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.
Chrome DevTools MCP
chrome-devtools-mcp lets your coding agent (such as Gemini, Claude, Cursor or Copilot)
control and inspect a live Chrome browser. It acts as a Model-Context-Protocol
(MCP) server, giving your AI coding assistant access to the full power of
Chrome DevTools for reliable automation, in-depth debugging, and performance analysis.
Tool reference | Changelog | Contributing | Troubleshooting
Related MCP server: Chrome DevTools MCP
Key features
Get performance insights: Uses Chrome DevTools to record traces and extract actionable performance insights.
Advanced browser debugging: Analyze network requests, take screenshots and check the browser console.
Reliable automation. Uses puppeteer to automate actions in Chrome and automatically wait for action results.
Disclaimers
chrome-devtools-mcp exposes content of the browser instance to the MCP clients
allowing them to inspect, debug, and modify any data in the browser or DevTools.
Avoid sharing sensitive or personal information that you don't want to share with
MCP clients.
Requirements
Node.js v20.19 or a newer latest maintenance LTS version.
Chrome current stable version or newer.
npm.
Getting started
Add the following config to your MCP client:
{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": ["-y", "chrome-devtools-mcp@latest"]
}
}
}
Using chrome-devtools-mcp@latest ensures that your MCP client will always use the latest version of the Chrome DevTools MCP server.
Installing via Smithery
To install Chrome DevTools Automation automatically via Smithery:
npx -y @smithery/cli install @SHAY5555-gif/chrome-devtools-mcp-2MCP Client configuration
amp mcp add chrome-devtools -- npx chrome-devtools-mcp@latestclaude mcp add chrome-devtools npx chrome-devtools-mcp@latestcodex mcp add chrome-devtools -- npx chrome-devtools-mcp@latestOn Windows 11
Configure the Chrome install location and increase the startup timeout by updating .codex/config.toml and adding the following env and startup_timeout_ms parameters:
[mcp_servers.chrome-devtools]
command = "cmd"
args = [
"/c",
"npx",
"-y",
"chrome-devtools-mcp@latest",
]
env = { SystemRoot="C:\\Windows", PROGRAMFILES="C:\\Program Files" }
startup_timeout_ms = 20_000Start Copilot CLI:
copilotStart the dialog to add a new MCP server by running:
/mcp addConfigure the following fields and press CTRL+S to save the configuration:
Server name:
chrome-devtoolsServer Type:
[1] LocalCommand:
npxArguments:
-y, chrome-devtools-mcp@latest
code --add-mcp '{"name":"chrome-devtools","command":"npx","args":["chrome-devtools-mcp@latest"]}'Click the button to install:
Or install manually:
Go to Cursor Settings -> MCP -> New MCP Server. Use the config provided above.
Project wide:
gemini mcp add chrome-devtools npx chrome-devtools-mcp@latestGlobally:
gemini mcp add -s user chrome-devtools npx chrome-devtools-mcp@latestAlternatively, follow the MCP guide and use the standard config from above.
Go to Settings | Tools | AI Assistant | Model Context Protocol (MCP) -> Add. Use the config provided above.
The same way chrome-devtools-mcp can be configured for JetBrains Junie in Settings | Tools | Junie | MCP Settings -> Add. Use the config provided above.
In Kiro Settings, go to Configure MCP > Open Workspace or User MCP Config > Use the configuration snippet provided above.
Or, from the IDE Activity Bar > Kiro > MCP Servers > Click Open MCP Config. Use the configuration snippet provided above.
Click the button to install:
Go to Settings | AI | Manage MCP Servers -> + Add to add an MCP Server. Use the config provided above.
Your first prompt
Enter the following prompt in your MCP Client to check if everything is working:
Check the performance of https://developers.chrome.comYour MCP client should open the browser and record a performance trace.
The MCP server will start the browser automatically once the MCP client uses a tool that requires a running browser instance. Connecting to the Chrome DevTools MCP server on its own will not automatically start the browser.
Tools
If you run into any issues, checkout our troubleshooting guide.
Input automation (7 tools)
Navigation automation (7 tools)
Emulation (3 tools)
Performance (3 tools)
Network (2 tools)
Debugging (4 tools)
Configuration
The Chrome DevTools MCP server supports the following configuration option:
--browserUrl,-uConnect to a running Chrome instance using port forwarding. For more details see: https://developer.chrome.com/docs/devtools/remote-debugging/local-server.Type: string
--headlessWhether to run in headless (no UI) mode.Type: boolean
Default:
false
--executablePath,-ePath to custom Chrome executable.Type: string
--isolatedIf specified, creates a temporary user-data-dir that is automatically cleaned up after the browser is closed.Type: boolean
Default:
false
--channelSpecify a different Chrome channel that should be used. The default is the stable channel version.Type: string
Choices:
stable,canary,beta,dev
--logFilePath to a file to write debug logs to. Set the env variableDEBUGto*to enable verbose logs. Useful for submitting bug reports.Type: string
--viewportInitial viewport size for the Chrome instances started by the server. For example,1280x720. In headless mode, max size is 3840x2160px.Type: string
--proxyServerProxy server configuration for Chrome passed as --proxy-server when launching the browser. See https://www.chromium.org/developers/design-documents/network-settings/ for details.Type: string
--acceptInsecureCertsIf enabled, ignores errors relative to self-signed and expired certificates. Use with caution.Type: boolean
--chromeArgAdditional arguments for Chrome. Only applies when Chrome is launched by chrome-devtools-mcp.Type: array
Pass them via the args property in the JSON configuration. For example:
{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": [
"chrome-devtools-mcp@latest",
"--channel=canary",
"--headless=true",
"--isolated=true"
]
}
}
}You can also run npx chrome-devtools-mcp@latest --help to see all available configuration options.
Concepts
User data directory
chrome-devtools-mcp starts a Chrome's stable channel instance using the following user
data directory:
Linux / macOS:
$HOME/.cache/chrome-devtools-mcp/chrome-profile-$CHANNELWindows:
%HOMEPATH%/.cache/chrome-devtools-mcp/chrome-profile-$CHANNEL
The user data directory is not cleared between runs and shared across
all instances of chrome-devtools-mcp. Set the isolated option to true
to use a temporary user data dir instead which will be cleared automatically after
the browser is closed.
Connecting to a running Chrome instance
You can connect to a running Chrome instance by using the --browser-url option. This is useful if you want to use your existing Chrome profile or if you are running the MCP server in a sandboxed environment that does not allow starting a new Chrome instance.
Here is a step-by-step guide on how to connect to a running Chrome Stable instance:
Step 1: Configure the MCP client
Add the --browser-url option to your MCP client configuration. The value of this option should be the URL of the running Chrome instance. http://127.0.0.1:9222 is a common default.
{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": [
"chrome-devtools-mcp@latest",
"--browser-url=http://127.0.0.1:9222"
]
}
}
}Step 2: Start the Chrome browser
Enabling the remote debugging port opens up a debugging port on the running browser instance. Any application on your machine can connect to this port and control the browser. Make sure that you are not browsing any sensitive websites while the debugging port is open.
Start the Chrome browser with the remote debugging port enabled. Make sure to close any running Chrome instances before starting a new one with the debugging port enabled. The port number you choose must be the same as the one you specified in the --browser-url option in your MCP client configuration.
For security reasons, Chrome requires you to use a non-default user data directory when enabling the remote debugging port. You can specify a custom directory using the --user-data-dir flag. This ensures that your regular browsing profile and data are not exposed to the debugging session.
macOS
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 --user-data-dir=/tmp/chrome-profile-stableLinux
/usr/bin/google-chrome --remote-debugging-port=9222 --user-data-dir=/tmp/chrome-profile-stableWindows
"C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222 --user-data-dir="%TEMP%\chrome-profile-stable"Step 3: Test your setup
After configuring the MCP client and starting the Chrome browser, you can test your setup by running a simple prompt in your MCP client:
Check the performance of https://developers.chrome.comYour MCP client should connect to the running Chrome instance and receive a performance report.
For more details on remote debugging, see the Chrome DevTools documentation.
Known limitations
Operating system sandboxes
Some MCP clients allow sandboxing the MCP server using macOS Seatbelt or Linux
containers. If sandboxes are enabled, chrome-devtools-mcp is not able to start
Chrome that requires permissions to create its own sandboxes. As a workaround,
either disable sandboxing for chrome-devtools-mcp in your MCP client or use
--browser-url to connect to a Chrome instance that you start manually outside
of the MCP client sandbox.
Available Tools
26 toolsclickB
Clicks on the provided element
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | The uid of an element on the page from the page content snapshot | |
| dblClick | No | Set to true for double clicks. Default is false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds minimal behavioral context beyond annotations. Annotations already declare readOnlyHint=false (indicating a state-changing action), but the description doesn't elaborate on what 'clicks' actually does (e.g., triggers events, may navigate, might fail if element not interactable). No contradiction with annotations exists, but the description carries most of the burden since annotations are sparse.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise with a single sentence that directly states the tool's purpose. No wasted words or unnecessary elaboration, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 2 parameters, no output schema, and minimal annotations, the description is adequate but incomplete. It covers the basic action but lacks context about prerequisites (e.g., needing a page snapshot), potential outcomes, or error conditions. Given the complexity and sibling tools available, more guidance would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema fully documents both parameters (uid and dblClick). The description adds no additional meaning about parameters beyond implying 'element' relates to 'uid'. Baseline score of 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('clicks') and target ('on the provided element'), providing a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'hover' or 'double click' (which is actually a parameter option), leaving room for confusion about when to use this versus alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives. The description doesn't mention sibling tools like 'hover' for mouse positioning without clicking, 'dblClick' parameter for double-clicking, or context about requiring a page to be loaded first. Usage is implied but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_pageA
Closes the page by its index. The last open page cannot be closed.
| Name | Required | Description | Default |
|---|---|---|---|
| pageIdx | Yes | The index of the page to close. Call list_pages to list pages. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, confirming it's a mutation, which the description's 'closes' aligns with. The description adds valuable behavioral context beyond annotations by specifying the constraint that the last open page cannot be closed, which is critical for correct usage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core action and followed by a crucial constraint. Every word serves a purpose, with no redundancy or fluff, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (mutation with a constraint), no output schema, and rich annotations, the description is mostly complete. It covers the action and a key behavioral rule, though it could optionally mention error handling or effects on page state for full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the parameter 'pageIdx' fully documented in the schema. The description does not add any additional meaning beyond the schema, such as format details or edge cases, so it meets the baseline for high 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 verb ('closes') and resource ('the page by its index'), making the action specific. It distinguishes from siblings like 'list_pages' (which lists) or 'new_page' (which creates), establishing a unique purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when not to use this tool ('The last open page cannot be closed'), providing a clear exclusion rule. It also references 'list_pages' in the schema description for obtaining the index, implying an alternative or prerequisite, though not directly in the description text.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dragC
Drag an element onto another element
| Name | Required | Description | Default |
|---|---|---|---|
| from_uid | Yes | The uid of the element to drag | |
| to_uid | Yes | The uid of the element to drop into |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide readOnlyHint=false, indicating this is a mutation operation. The description adds no behavioral context beyond the basic action - no information about what 'drag' actually does (e.g., triggers drag-and-drop events, may cause page reflows, might be asynchronous), no error conditions, and no performance implications. With minimal annotation coverage, the description carries most of the burden but provides inadequate behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise - a single sentence that directly states the tool's purpose with zero wasted words. It's perfectly front-loaded and appropriately sized for what it communicates.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with minimal annotations and no output schema, the description is incomplete. It doesn't explain what happens after dragging (e.g., does it wait for drop completion?), what visual feedback occurs, whether it simulates mouse events, or what the expected outcome should be. Given the complexity of drag-and-drop interactions in web contexts, this leaves significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters clearly documented in the schema itself. The description doesn't add any meaningful parameter semantics beyond what's already in the schema - it doesn't explain what constitutes a valid 'element' uid, whether these must be draggable/droppable elements, or any constraints on the relationship between from_uid and to_uid.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Drag') and the objects involved ('an element onto another element'), providing a specific verb+resource combination. However, it doesn't explicitly distinguish this tool from potential sibling interactions like 'click' or 'hover' beyond the obvious difference in action type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There's no mention of prerequisites (e.g., elements must be visible), when dragging is appropriate versus other interactions, or what happens after the drag operation completes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
emulate_cpuB
Emulates CPU throttling by slowing down the selected page's execution.
| Name | Required | Description | Default |
|---|---|---|---|
| throttlingRate | Yes | The CPU throttling rate representing the slowdown factor 1-20x. Set the rate to 1 to disable throttling |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, confirming this is a mutation tool. The description adds that it 'slows down' execution, implying a performance impact, but doesn't detail side effects like whether throttling persists across page navigation or affects other pages. It doesn't contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose ('Emulates CPU throttling') and adds essential context ('by slowing down the selected page's execution'). Every word earns its place with zero waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and minimal annotations, the description adequately covers the basic action but lacks details on behavioral impact (e.g., how throttling interacts with other tools) and doesn't explain return values. It's minimally viable given the simple parameter schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with throttlingRate fully documented in the schema (range 1-20, slowdown factor, disable at 1). The description adds no additional parameter semantics beyond what the schema provides, meeting the baseline for high 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 action ('emulates CPU throttling') and the target ('selected page's execution'), which is specific and actionable. It distinguishes from siblings like emulate_network by focusing on CPU rather than network throttling, though it doesn't explicitly contrast with 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?
The description provides no guidance on when to use this tool versus alternatives like performance_start_trace or performance_analyze_insight. It mentions the selected page but doesn't clarify prerequisites (e.g., whether a page must be selected first using select_page).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
emulate_networkA
Emulates network conditions such as throttling or offline mode on the selected page.
| Name | Required | Description | Default |
|---|---|---|---|
| throttlingOption | Yes | The network throttling option to emulate. Available throttling options are: No emulation, Offline, Slow 3G, Fast 3G, Slow 4G, Fast 4G. Set to "No emulation" to disable. Set to "Offline" to simulate offline network conditions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false (implying mutation), which aligns with the description's 'emulates' action. The description adds context about what gets modified (network conditions on a page) and the types of conditions (throttling/offline), but doesn't detail side effects like persistence across actions or rate limits. With annotations covering the mutation hint, this is adequate but not rich.
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 ('Emulates network conditions') and specifies the scope ('on the selected page'). There is no wasted text, and it directly communicates the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (mutation with one parameter), annotations provide safety context, and schema fully documents the parameter. No output schema exists, but the description doesn't need to explain return values for this action-oriented tool. It's mostly complete but could benefit from more behavioral details like effects on other tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the parameter fully documented in the schema (including enum values and descriptions). The description doesn't add extra meaning beyond the schema, such as explaining how throttling affects page behavior. Baseline 3 is appropriate when schema handles most documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('emulates network conditions') and the resource ('on the selected page'), distinguishing it from siblings like emulate_cpu (which handles CPU throttling) and get_network_request/list_network_requests (which monitor rather than emulate). It uses precise verbs and scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for testing network effects but doesn't explicitly state when to use this tool versus alternatives like emulate_cpu or when not to use it (e.g., for non-network testing). It provides some context but lacks explicit guidance on prerequisites or comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evaluate_scriptA
Evaluate a JavaScript function inside the currently selected page. Returns the response as JSON so returned values have to JSON-serializable.
| Name | Required | Description | Default |
|---|---|---|---|
| function | Yes | A JavaScript function to run in the currently selected page. Example without arguments: `() => { return document.title }` or `async () => { return await fetch("example.com") }`. Example with arguments: `(el) => { return el.innerText; }` | |
| args | No | An optional list of arguments to pass to the function. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=false, indicating this is not a read-only operation. The description adds valuable context beyond annotations by specifying that it runs in 'the currently selected page' (implying a browser automation context) and that returned values must be JSON-serializable (a behavioral constraint). However, it doesn't disclose potential side effects, error handling, or execution limits that would be useful for a code execution tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with only two sentences, both of which earn their place. The first sentence states the core functionality and context, while the second adds a critical constraint about JSON serialization. There is zero wasted text, and information is front-loaded effectively.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool that executes arbitrary JavaScript in a browser page (a complex operation with readOnlyHint=false), the description is somewhat incomplete. It lacks information about error handling, execution timeouts, security implications, or what happens if the page context changes. With no output schema and minimal behavioral disclosure, there are significant gaps for an agent to use this tool safely and effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with detailed examples for the 'function' parameter and clear documentation for 'args'. The description adds minimal semantic value beyond the schema, only reinforcing that the function runs in the page context. Since the schema already does the heavy lifting, 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 specific action ('Evaluate a JavaScript function') and resource ('inside the currently selected page'), distinguishing it from sibling tools like click, fill, or navigate_page which perform different browser interactions. It explicitly mentions the return format ('Returns the response as JSON'), which further clarifies its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for executing JavaScript in a browser context, but provides no explicit guidance on when to use this tool versus alternatives like list_console_messages or performance_analyze_insight. It mentions the requirement for JSON-serializable returns, which offers some contextual hint, but lacks clear when-to-use or when-not-to-use statements compared to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fillC
Type text into a input, text area or select an option from a element.
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | The uid of an element on the page from the page content snapshot | |
| value | Yes | The value to fill in |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, implying a mutation, which aligns with the description's action of typing or selecting. However, the description adds minimal behavioral context beyond this, failing to disclose traits like potential side effects (e.g., triggering events), error conditions (e.g., invalid UID), or interaction specifics (e.g., how it handles different element types), leaving gaps in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It is front-loaded with the core action and resources, making it highly concise and well-structured for quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (interactive mutation on web elements) and lack of output schema, the description is insufficient. It omits critical context like expected outcomes (e.g., success confirmation), error handling, or dependencies (e.g., requiring a page snapshot), making it incomplete for safe and effective use by 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?
With 100% schema description coverage, the input schema fully documents the two parameters (uid and value). The description does not add any meaningful semantics beyond the schema, such as examples or constraints, so it meets the baseline for adequate but unenriched parameter information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Type text into' and 'select an option') and the target resources ('input, text area or select element'), making the purpose specific and understandable. However, it does not explicitly distinguish this tool from sibling tools like 'fill_form', which might handle form-level interactions, leaving room for ambiguity in sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It lacks context such as prerequisites (e.g., needing a page snapshot), exclusions (e.g., not for non-interactive elements), or comparisons to siblings like 'fill_form', leaving the agent without clear usage instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fill_formB
Fill out multiple form elements at once
| Name | Required | Description | Default |
|---|---|---|---|
| elements | Yes | Elements from snapshot to fill out. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, implying a write operation, which aligns with 'fill out' in the description. The description adds that it handles 'multiple form elements at once,' suggesting batch behavior, but doesn't detail side effects (e.g., form submission), error handling, or performance implications. With annotations covering the mutation aspect, this is adequate but not rich in behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and wastes no space, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and 100% schema coverage, the description is minimal but functional. It covers the core action but lacks context on usage scenarios, error handling, or integration with sibling tools like 'fill'. Given the complexity of batch operations, more guidance would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the 'elements' parameter fully documented in the schema as an array of objects with 'uid' and 'value'. The description mentions 'multiple form elements' but adds no extra semantic detail beyond what the schema provides, such as how 'uid' relates to form elements or constraints on batch size.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('fill out') and target ('multiple form elements at once'), which is specific and actionable. However, it doesn't distinguish itself from the sibling 'fill' tool, which likely serves a similar purpose, leaving some ambiguity about when to use one versus the other.
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 the 'fill' sibling tool. It lacks context about prerequisites (e.g., needing a form snapshot), exclusions, or specific scenarios where batch filling is preferred over single-element operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_network_requestARead-only
Gets a network request by URL. You can get all requests by calling list_network_requests.
| Name | Required | Description | Default |
|---|---|---|---|
| reqid | Yes | The reqid of a request on the page from the listed network requests |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, so the agent knows this is a safe read operation. The description adds context by specifying it retrieves by URL, but it doesn't disclose behavioral traits like error handling, response format, or dependencies on 'list_network_requests'. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences that are front-loaded and waste no words. Every sentence adds value by stating the purpose and providing usage guidance, 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 low complexity (1 parameter, read-only) and no output schema, the description is adequate but lacks details on return values or error cases. It covers basic purpose and alternatives but could be more complete for a retrieval tool, such as explaining what data is returned.
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 'reqid' fully documented in the schema. The description mentions 'URL' but doesn't add meaning beyond the schema, which already defines 'reqid' as a number from listed network requests. Baseline 3 is appropriate as the schema handles parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Gets') and resource ('a network request by URL'), making the purpose understandable. However, it doesn't distinguish this tool from its sibling 'list_network_requests' beyond mentioning it as an alternative for getting all requests, which is helpful but not a full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool vs. an alternative ('list_network_requests' for all requests), which helps in selecting the right tool. However, it lacks details on prerequisites or when not to use it, such as if 'reqid' must come from a prior list call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
handle_dialogA
If a browser dialog was opened, use this command to handle it
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Whether to dismiss or accept the dialog | |
| promptText | No | Optional prompt text to enter into the dialog. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only provide readOnlyHint=false, indicating this is a mutation tool. The description adds value by specifying the tool handles browser dialogs, which implies it interacts with UI elements and may require specific conditions (dialog must be open). However, it doesn't disclose additional behavioral traits like whether it blocks execution, error conditions, or side effects beyond the basic action. With annotations covering the mutation aspect, this earns a baseline score for adding some 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 essential information: the condition for use and the core action. There is no wasted verbiage or redundancy, making it highly concise and well-structured for quick comprehension.
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 (handling UI dialogs with mutation), lack of output schema, and minimal annotations, the description is somewhat incomplete. It covers the basic purpose and condition but omits details like return values, error handling, or prerequisites (e.g., must have an open dialog). For a mutation tool without output schema, more context would be beneficial, but it meets a minimum viable level.
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 clear documentation for both parameters (action with enum values, promptText as optional). The description doesn't add any semantic details beyond what the schema provides—it doesn't explain parameter interactions or usage examples. Given the high schema coverage, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.
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: 'handle' (verb) 'a browser dialog' (resource). It specifies the condition for usage ('If a browser dialog was opened'), making the purpose specific and actionable. However, it doesn't explicitly distinguish this tool from potential sibling alternatives like 'click' or 'close_page' that might also interact with dialogs, preventing a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some usage context by stating 'If a browser dialog was opened', which implies when to use it. However, it doesn't specify when NOT to use it (e.g., for non-dialog elements) or name explicit alternatives among the sibling tools (e.g., 'click' for buttons). This leaves room for ambiguity, making it implied rather than explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hoverB
Hover over the provided element
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | The uid of an element on the page from the page content snapshot |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, suggesting this may cause side effects, but the description doesn't clarify what those might be (e.g., triggering hover effects, tooltips, or state changes). It adds minimal behavioral context beyond the annotation, missing details like whether it waits for animations or handles errors if the element isn't hoverable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with a single sentence 'Hover over the provided element', which is front-loaded and wastes no words. It efficiently conveys the core action without unnecessary elaboration, 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 (one parameter, no output schema) and annotations covering basic safety, the description is minimally adequate. However, it lacks details on expected outcomes (e.g., what happens after hovering) or error handling, which could be useful for an agent to understand the tool's behavior fully.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the input schema fully documents the 'uid' parameter. The description doesn't add any extra meaning about the parameter, such as how to obtain the uid or what constitutes a valid element, so it meets the baseline but doesn't enhance understanding beyond the structured data.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Hover over the provided element' clearly states the action (hover) and target (element), making the purpose immediately understandable. However, it doesn't differentiate this from similar UI interaction tools like 'click' or 'drag' among its siblings, which would require more specific context about when hovering is appropriate versus clicking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'click' or 'drag', nor does it mention prerequisites such as needing an element to be visible or interactive. It simply states what the tool does without context for selection among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_console_messagesARead-only
List all console messages for the currently selected page since the last navigation.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, indicating a safe read operation. The description adds valuable context beyond annotations by specifying the temporal scope ('since the last navigation') and that it applies to the 'currently selected page', which helps the agent understand behavioral constraints not covered by annotations alone.
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, well-structured sentence that efficiently conveys the tool's purpose and scope without any redundant information. It is front-loaded with the core action and resource, making it highly concise and effective.
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, read-only operation, no output schema), the description is mostly complete. It covers the action, resource, and scope adequately. However, it lacks details on output format or potential limitations, which could be helpful but is not critical for this low-complexity tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0 parameters and 100% schema description coverage, the schema fully documents the input (none required). The description adds no parameter information, which is appropriate here, but does not compensate for any gaps since there are none. Baseline is 4 for zero parameters, as the description need not cover parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('List all console messages') and resource ('for the currently selected page'), distinguishing it from siblings like list_network_requests or list_pages. It specifies the scope ('since the last navigation'), making the purpose unambiguous and distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by mentioning 'currently selected page' and 'since the last navigation', suggesting it should be used after page navigation. However, it does not explicitly state when to use this tool versus alternatives or provide any exclusions, leaving some ambiguity for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_network_requestsBRead-only
List all requests for the currently selected page since the last navigation.
| Name | Required | Description | Default |
|---|---|---|---|
| pageSize | No | Maximum number of requests to return. When omitted, returns all requests. | |
| pageIdx | No | Page number to return (0-based). When omitted, returns the first page. | |
| resourceTypes | No | Filter requests to only return requests of the specified resource types. When omitted or empty, returns all requests. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations provide readOnlyHint=true, indicating a safe read operation. The description adds context about the temporal scope ('since the last navigation'), which is useful behavioral information not covered by annotations. However, it doesn't disclose other traits like pagination behavior (implied by parameters but not described), rate limits, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that efficiently conveys the core purpose without unnecessary words. It's front-loaded with the main action and scope, making it easy to parse and understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (list operation with filtering/pagination), the description covers the basic purpose and scope. However, with no output schema and annotations only indicating read-only, it lacks details on return format (e.g., structure of listed requests) and could benefit from more behavioral context for a network-related tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, clearly documenting all three parameters (pageSize, pageIdx, resourceTypes) with their purposes and defaults. The description doesn't add any semantic details beyond what's in the schema, so it meets the baseline of 3 for high schema coverage without extra 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 ('List all requests') and the scope ('for the currently selected page since the last navigation'), which is specific and actionable. However, it doesn't explicitly differentiate from sibling tools like 'get_network_request' (singular vs. plural) or 'list_console_messages', which might handle similar data but for different resources.
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 some context ('since the last navigation') but lacks explicit guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'get_network_request' for single requests or 'list_console_messages' for other page data, nor does it specify prerequisites (e.g., requires a selected page).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pagesBRead-only
Get a list of pages open in the browser.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, indicating a safe read operation, which the description aligns with by using 'Get'. The description adds minimal behavioral context beyond annotations, such as implying it lists currently open pages, but doesn't detail output format or limitations like pagination.
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, making it easy to parse and front-loaded with the core action. It efficiently conveys the essential information 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 (0 parameters, read-only) and lack of output schema, the description is minimally adequate but could improve by hinting at the return format (e.g., list of page identifiers or URLs) or usage context. It relies heavily on annotations for safety.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0 parameters and 100% schema description coverage, the schema fully documents the lack of inputs. The description doesn't need to add parameter details, so it meets the baseline for this scenario, though it doesn't explicitly state 'no parameters 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 verb ('Get') and resource ('list of pages open in the browser'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'select_page' or 'new_page', which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'select_page' for focusing on a specific page or 'new_page' for creating one. It lacks context about prerequisites or exclusions, leaving usage unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
new_pageB
Creates a new page
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL to load in a new page. | |
| timeout | No | Maximum wait time in milliseconds. If set to 0, the default timeout will be used. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, consistent with the 'creates' action implying a write operation. The description adds no behavioral details beyond this, such as whether the page becomes active, if it loads in background, or any side effects. With annotations covering the basic safety profile, it meets the baseline but lacks additional context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with just three words, front-loading the core action. Every word earns its place, and there's no wasted text, making it highly efficient for quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of creating a new page (a write operation with potential side effects), no output schema, and minimal annotations, the description is insufficient. It doesn't explain what happens after creation, error conditions, or how it interacts with sibling tools, leaving significant gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear documentation for both 'url' and 'timeout' parameters. The description adds no additional meaning beyond what the schema provides, such as explaining URL requirements or timeout implications. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'creates' and the resource 'new page', making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'navigate_page' or 'select_page' which also involve page operations, 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 like 'navigate_page' or 'select_page', nor does it mention prerequisites or context for creating a new page. It simply states what it does without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
performance_analyze_insightARead-only
Provides more detailed information on a specific Performance Insight that was highlighted in the results of a trace recording.
| Name | Required | Description | Default |
|---|---|---|---|
| insightName | Yes | The name of the Insight you want more information on. For example: "DocumentLatency" or "LCPBreakdown" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, indicating this is a safe read operation. The description adds useful context about working with 'Performance Insight' data from trace recordings, which goes beyond the annotation. However, it doesn't disclose behavioral details like response format, error conditions, or data freshness.
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, well-structured sentence that efficiently conveys the tool's purpose and context. Every word earns its place with no redundancy or unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only tool with good schema coverage but no output schema, the description provides adequate context about what the tool does. However, it doesn't explain what kind of 'detailed information' is returned or how insights are structured, leaving some gaps in understanding the tool's full 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?
With 100% schema description coverage for the single parameter 'insightName', the schema already fully documents the parameter. The description doesn't add any additional semantic information about parameters beyond what's in the schema, so it meets the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Provides more detailed information on a specific Performance Insight' with the verb 'provides' and resource 'detailed information'. It distinguishes itself from siblings by specifying it works on insights from trace recordings, though it doesn't explicitly differentiate from all sibling tools like performance_start_trace or performance_stop_trace.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context ('that was highlighted in the results of a trace recording'), suggesting this tool should be used after trace recording results are available. However, it doesn't provide explicit when-to-use guidance, alternatives, or exclusions compared to other performance-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
performance_start_traceARead-only
Starts a performance trace recording on the selected page. This can be used to look for performance problems and insights to improve the performance of the page. It will also report Core Web Vital (CWV) scores for the page.
| Name | Required | Description | Default |
|---|---|---|---|
| reload | Yes | Determines if, once tracing has started, the page should be automatically reloaded. | |
| autoStop | Yes | Determines if the trace recording should be automatically stopped. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable context beyond the readOnlyHint annotation by explaining what the trace records (performance problems, insights, Core Web Vital scores) and the tool's purpose. However, it doesn't disclose important behavioral details like how long traces run, storage implications, performance impact, or what happens to existing traces. With annotations covering the safety aspect, this provides moderate additional value.
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 three focused sentences that each earn their place: stating the core action, explaining the purpose, and mentioning additional functionality (CWV reporting). It's front-loaded with the primary function and wastes no words on redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (performance tracing with two parameters) and the presence of annotations (readOnlyHint), the description provides adequate context about what the tool does and why. However, without an output schema, it doesn't explain what data is returned or the trace format. For a diagnostic tool, more detail about output expectations would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the input schema already fully documents both parameters (reload and autoStop). The description doesn't add any parameter-specific information beyond what's in the schema. This meets the baseline expectation when schema coverage is complete, but doesn't enhance understanding of parameter usage or interactions.
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 ('Starts a performance trace recording'), identifies the target resource ('on the selected page'), and distinguishes its purpose from sibling tools like performance_stop_trace (starting vs stopping) and performance_analyze_insight (recording vs analyzing). It provides a clear verb+resource combination with explicit differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context about when to use this tool ('to look for performance problems and insights to improve the performance of the page'), but doesn't explicitly state when NOT to use it or mention alternatives. It distinguishes from performance_stop_trace by implication, but doesn't explicitly guide on choosing between performance-related tools or other diagnostic methods.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
performance_stop_traceARead-only
Stops the active performance trace recording on the selected page.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, indicating this is a safe read operation. The description adds context by specifying it stops an 'active performance trace recording', which implies it terminates a process but doesn't destroy data. It doesn't mention side effects like whether the trace data is saved or discarded, but with annotations covering safety, this is adequate.
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 front-loads the key action ('Stops') and efficiently conveys the purpose 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 has 0 parameters, annotations provide safety context, and no output schema exists, the description is reasonably complete. It specifies the action and target, though it could benefit from clarifying what happens to the trace data after stopping, but this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description doesn't add parameter details, which is appropriate, but it could have mentioned implicit dependencies like needing a selected page, though this is minor.
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 ('Stops') and the resource ('active performance trace recording on the selected page'), providing a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'performance_start_trace' or 'performance_analyze_insight', though the action is distinct enough to imply differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by mentioning 'active performance trace recording' and 'selected page', suggesting it should be used when a trace is already running. However, it doesn't provide explicit guidance on when to use this versus alternatives or any prerequisites beyond having an active trace.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resize_pageB
Resizes the selected page's window so that the page has specified dimension
| Name | Required | Description | Default |
|---|---|---|---|
| width | Yes | Page width | |
| height | Yes | Page height |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, confirming this is a mutation tool, which aligns with the description's 'resizes' action. The description adds context by specifying it affects the 'selected page's window', but doesn't disclose behavioral traits like whether resizing is reversible, impacts page content, or requires specific permissions. With annotations covering the mutation aspect, the description provides minimal additional behavioral insight.
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 ('Resizes the selected page's window'). It avoids redundancy and wastes no words, though it could be slightly more structured by explicitly mentioning parameters. Overall, it's appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 2 parameters with full schema coverage and annotations indicating mutation, the description is minimally adequate. However, without an output schema, it doesn't explain return values or effects, and it lacks context on integration with sibling tools like 'select_page'. For a mutation tool with no output schema, more completeness on behavioral outcomes would be beneficial.
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 'width' and 'height' clearly documented as page dimensions. The description adds no extra meaning beyond the schema, merely restating that dimensions are specified. Since schema coverage is high, the baseline score of 3 is appropriate, as the description doesn't compensate with additional details like unit expectations or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'resizes' and the resource 'selected page's window', specifying it changes dimensions. It distinguishes from siblings like 'take_screenshot' or 'navigate_page' by focusing on window resizing, though it doesn't explicitly differentiate from tools like 'emulate_cpu' or 'performance_analyze_insight' that might involve page manipulation. The purpose is specific but could be more precise about the window 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. It doesn't mention prerequisites (e.g., needing a selected page via 'select_page'), exclusions, or compare to similar tools like 'emulate_cpu' for performance testing. Usage is implied as part of page manipulation workflows, but explicit context is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
select_pageARead-only
Select a page as a context for future tool calls.
| Name | Required | Description | Default |
|---|---|---|---|
| pageIdx | Yes | The index of the page to select. Call list_pages to list pages. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, indicating this is a safe read operation. The description adds context about setting a page as context for future tool calls, which is useful behavioral information not covered by annotations. However, it doesn't detail what 'context' entails (e.g., whether it persists across sessions or affects other tools) or any limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded with the core action and purpose, making it easy to understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (setting context for future calls), annotations cover safety (read-only), and schema fully documents the single parameter. However, there is no output schema, and the description doesn't explain what 'selecting a page' returns or how the context affects subsequent operations, leaving some gaps in understanding the tool's full 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%, with the parameter 'pageIdx' clearly documented in the schema as 'The index of the page to select. Call list_pages to list pages.' The description adds no additional parameter information beyond what the schema provides, 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 action ('Select a page') and purpose ('as a context for future tool calls'), which is a specific verb+resource combination. However, it doesn't explicitly distinguish this tool from similar sibling tools like 'navigate_page' or 'list_pages', which could also involve page selection or context setting.
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 it sets context for future tool calls, and the input schema references 'list_pages' to get page indices, providing some guidance. However, it doesn't explicitly state when to use this tool versus alternatives like 'navigate_page' or 'new_page', 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.
take_screenshotBRead-only
Take a screenshot of the page or element.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Type of format to save the screenshot as. Default is "png" | png |
| quality | No | Compression quality for JPEG and WebP formats (0-100). Higher values mean better quality but larger file sizes. Ignored for PNG format. | |
| uid | No | The uid of an element on the page from the page content snapshot. If omitted takes a pages screenshot. | |
| fullPage | No | If set to true takes a screenshot of the full page instead of the currently visible viewport. Incompatible with uid. | |
| filePath | No | The absolute path, or a path relative to the current working directory, to save the screenshot to instead of attaching it to the response. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, indicating this is a safe read operation. The description adds minimal behavioral context beyond this—it mentions targeting 'page or element' but doesn't disclose side effects like file creation, performance impact, or visual changes. With annotations covering safety, the description adds some value but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with zero wasted words. It's front-loaded with the core purpose and efficiently conveys the optional element targeting. Every word earns its place, making it easy for an agent 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 (5 parameters, no output schema) and rich schema coverage, the description is minimally adequate. It states what the tool does but lacks context on output format (e.g., returns image data or saves to file), error conditions, or dependencies. With annotations covering safety, it meets basic needs but could be more informative.
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 detailed parameter documentation. The description doesn't add any parameter semantics beyond what's in the schema—it doesn't explain interactions between parameters like 'uid' and 'fullPage' 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 tool's purpose: 'Take a screenshot of the page or element.' It specifies the verb ('take') and resource ('screenshot') with optional element targeting. However, it doesn't explicitly differentiate from sibling tools like 'take_snapshot' which might have overlapping functionality, preventing a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'take_snapshot' or explain scenarios where screenshotting is preferred over other actions. The agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
take_snapshotARead-only
Take a text snapshot of the currently selected page. The snapshot lists page elements along with a unique identifier (uid). Always use the latest snapshot. Prefer taking a snapshot over taking a screenshot.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations declare readOnlyHint=true, indicating a safe read operation. The description adds valuable behavioral context beyond this by specifying that the snapshot lists page elements with unique identifiers (uid) and emphasizes using the latest snapshot. It doesn't contradict annotations, as 'take' in this context implies capturing data rather than modifying it.
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 in three sentences, each serving a distinct purpose: stating the action, detailing the output format, and providing usage guidance. There is no wasted text, and key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, read-only operation) and lack of output schema, the description is mostly complete. It explains what the tool does, its output format, and usage preferences. However, it could slightly improve by mentioning any limitations or dependencies, such as requiring a selected page to be available.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0 parameters and 100% schema description coverage, the baseline is 4. The description adds no parameter-specific information, which is appropriate given the lack of parameters, so it maintains the baseline score without penalty.
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 ('Take a text snapshot') and resource ('currently selected page'), distinguishing it from sibling tools like 'take_screenshot' by specifying it's a text-based capture. It explicitly differentiates from alternatives by mentioning 'Prefer taking a snapshot over taking a screenshot'.
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 ('Always use the latest snapshot') and when to prefer it over alternatives ('Prefer taking a snapshot over taking a screenshot'). It clearly distinguishes usage from the 'take_screenshot' sibling tool by emphasizing text-based capture.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_fileB
Upload a file through a provided element.
| Name | Required | Description | Default |
|---|---|---|---|
| uid | Yes | The uid of the file input element or an element that will open file chooser on the page from the page content snapshot | |
| filePath | Yes | The local path of the file to upload |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, aligning with the 'upload' action implying mutation. The description adds minimal behavioral context beyond annotations, such as specifying the upload mechanism via an element, but does not cover aspects like error handling, file size limits, or authentication needs. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary details. It is front-loaded and wastes no words, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (file upload with 2 parameters) and lack of output schema, the description is minimally adequate but incomplete. It covers the basic action but omits details like return values, error cases, or interaction with sibling tools, leaving gaps for an agent to infer usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents both parameters (uid and filePath). The description does not add meaning beyond the schema, such as explaining what an 'element that will open file chooser' entails or file path constraints, resulting in a baseline 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 action ('upload a file') and the mechanism ('through a provided element'), which is specific and actionable. However, it does not explicitly differentiate from sibling tools like 'fill' or 'fill_form' that might also handle file inputs, missing full sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as 'fill' for text inputs or other file-handling methods. It lacks context about prerequisites, like needing a file input element on the page, and does not mention exclusions or best practices.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_forBRead-only
Wait for the specified text to appear on the selected page.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text to appear on the page | |
| timeout | No | Maximum wait time in milliseconds. If set to 0, the default timeout will be used. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, which the description aligns with by implying a passive monitoring action ('wait for'). The description adds behavioral context about waiting for text appearance, but doesn't detail failure modes, polling behavior, or interaction with page state. With annotations covering safety, this provides moderate additional value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with zero wasted words. It front-loads the core action and target efficiently, making it easy to parse and understand quickly without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 2 parameters, 100% schema coverage, and readOnlyHint annotation, the description is minimally adequate. It lacks output details (no schema provided) and doesn't address error handling or dependencies on other tools like 'select_page', but covers the basic operation sufficiently given the structured data.
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%, fully documenting both parameters. The description mentions 'specified text' and 'selected page', hinting at the 'text' parameter and implicit page context, but adds no extra meaning beyond the schema's details on text and timeout behavior. Baseline 3 is appropriate given 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 action ('wait for') and the target ('specified text to appear on the selected page'), making the purpose understandable. It doesn't explicitly differentiate from siblings like 'evaluate_script' or 'list_console_messages', which might also involve text detection, but the core function is well-defined.
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 a selected page first), exclusions, or compare it to siblings like 'evaluate_script' for text checking, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have distinct purposes, but there is some overlap between 'navigate_page' and 'navigate_page_history' that could cause confusion. The descriptions clarify that 'navigate_page' goes to a URL while 'navigate_page_history' handles back/forward navigation, but the naming doesn't make this distinction obvious. Other tools like 'fill' and 'fill_form' are well-differentiated by scope.
The naming follows a consistent verb_noun pattern (e.g., 'click', 'close_page', 'drag') with clear, descriptive names. There are minor deviations like 'performance_analyze_insight' which uses a verb_verb_noun structure, but overall the pattern is predictable and readable across the set.
With 26 tools, the count is borderline high for a DevTools server, potentially feeling heavy but still manageable. It covers a broad range of browser automation tasks, which justifies the number, but it might overwhelm agents with too many options for basic operations.
The toolset provides comprehensive coverage for browser automation and DevTools functionality, including navigation, interaction, performance analysis, network monitoring, and debugging. There are no obvious gaps; it supports full lifecycle operations from page creation to performance tracing and element manipulation.
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Live browser debugging for AI assistants — DOM, console, network via MCP.
Stealth web automation for AI agents. Login, signup, navigate, screenshot.
Stealth web automation for AI agents. Login, signup, navigate, screenshot.
Automate cloud Chrome—navigate, click, type, screenshot, run code, record screen video
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables AI coding assistants to control and inspect a live Chrome browser through Chrome DevTools. Provides browser automation, performance analysis, debugging capabilities, and network request monitoring.3,288,16550,803Apache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables AI coding assistants to control and inspect a live Chrome browser for automation, debugging, performance analysis, network monitoring, and DOM interaction through Chrome DevTools Protocol.3,288,165Apache 2.0
- -licenseNot gradedqualityNot gradedmaintenanceEnables AI coding assistants to control and inspect a live Chrome browser for automated debugging, performance analysis, and web interaction. It leverages Puppeteer and Chrome DevTools to provide capabilities like network monitoring, console logging, and automated browser actions.
- AlicenseNot gradedqualityDmaintenanceEnables AI coding assistants to control and inspect a live Chrome browser through Chrome DevTools for automation, debugging, and performance analysis.3,288,165Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/SHAY5555-gif/chrome-devtools-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server