Skip to main content
Glama
ochen1
by ochen1

chrome-devtools-mcp-mux

CI

Drop-in replacement for chrome-devtools-mcp that lets many MCP clients share one Chrome instance and one profile without stepping on each other's tabs. Each client — a separate Claude Code session, for example — gets its own isolated set of tabs, while they all run against the same single browser and profile.

Agent 1:

❯ google
  Called chrome-devtools-nightly (ctrl+o to expand)
⏺ Google loaded.
✻ Sautéed for 4s
❯ list tabs
  Called chrome-devtools-nightly (ctrl+o to expand)
⏺ You have 1 tab open:
  - Page 2: https://www.google.com/

Agent 2:

❯ open netflix
  Called chrome-devtools-nightly (ctrl+o to expand)
⏺ Now on Netflix!
✻ Churned for 5s
❯ list tabs
  Called chrome-devtools-nightly (ctrl+o to expand)
⏺ You have 1 tab open:
  - Page 3: Netflix (https://www.netflix.com/ca/) [currently selected]

When agents get killed, their tabs are automatically closed.

What problem does this solve

chrome-devtools-mcp exposes Chrome DevTools to an MCP client. It works perfectly for one client, but if two clients connect at once (two Claude Code windows, a Claude Code plus a Gemini CLI, a coding agent plus a test runner — anything using the same config) they step on each other's tabs: list_pages shows everything, select_page races, new_page lands in the wrong window, close_page can shut down another client's work.

cdmcp-mux sits between the clients and chrome-devtools-mcp and tracks who owns which tab. Each client sees only its own tabs; cross-client collisions are rejected before they ever reach the browser.

Related MCP server: playwright-mcp-orchestrator

vs. vanilla chrome-devtools-mcp

Concern

chrome-devtools-mcp

chrome-devtools-mcp-mux

Config shape

npx -y chrome-devtools-mcp@latest

npx -y chrome-devtools-mcp-mux@latest — literally one token different

Tools exposed to clients

full vanilla surface

identical (pageId stays stripped; isolatedContext still exposed as opt-in)

Chrome profile / cookies / logins / extensions

one --userDataDir

same --userDataDir, no forced incognito

Headless vs. headful by default

headful

headful (matches vanilla; force headless with CDMCP_MUX_HEADLESS=true)

Single client running alone

fine

fine — no behavior change, no overhead worth worrying about

Two+ clients against one Chrome

collide: shared list_pages, racy select_page, cross-client close_page

isolated at the tool layer: list_pages per-client, cross-client tool calls rejected

new_page's optional isolatedContext

passes through

passes through (you can still opt in to per-tab isolation if you want it)

CLI flag pass-through (--viewport, --browserUrl, etc.)

✗ not yet — see drop-in gaps

--autoConnect / attaching to a running Chrome

✗ not yet

Upstream version

latest every npx

pins a tested chrome-devtools-mcp version per release

Maintained by

Chrome DevTools team

this repo (thin wrapper over upstream)

Runtime overhead

zero

one long-lived daemon process, one unix socket hop per tool call

Rule of thumb: if you only ever run one MCP client at a time, stick with vanilla. If you run two or more — different Claude Code sessions, an agent plus your own debugger, parallel test runners, etc. — the mux stops them from corrupting each other's state.

Drop-in gaps

A small number of vanilla behaviors aren't plumbed through the mux yet. Open an issue if one matters to you:

  • Arbitrary CLI args passed in "args" (e.g. --viewport=1920x1080) are currently ignored. The mux spawns upstream with a fixed set of flags.

  • --browserUrl, --wsEndpoint, --autoConnect — the mux always launches its own Chromium; it doesn't yet know how to attach to one that's already running.

  • Upstream version is pinned per release. If upstream ships a new tool, the mux needs a version bump to expose it.

For anything not on this list, the mux is behaviorally indistinguishable from vanilla for a single client, and strictly better for many.

Install and configure

If your .mcp.json currently looks like this (the canonical upstream setup):

{
  "mcpServers": {
    "chrome-devtools": {
      "command": "npx",
      "args": ["-y", "chrome-devtools-mcp@latest"]
    }
  }
}

change chrome-devtools-mcp@latest to chrome-devtools-mcp-mux@latest and you're done:

{
  "mcpServers": {
    "chrome-devtools": {
      "command": "npx",
      "args": ["-y", "chrome-devtools-mcp-mux@latest"]
    }
  }
}

The first client to connect auto-spawns a shared daemon; subsequent clients attach to the same daemon. Each gets its own view of tabs, but they all live in the same Chrome profile — so your cookies, logins, and extensions are the same as with vanilla chrome-devtools-mcp.

git clone https://github.com/ochen1/chrome-devtools-mcp-mux
cd chrome-devtools-mcp-mux
npm install
npm run build
npm link           # exposes `cdmcp-mux` on PATH

Then "command": "cdmcp-mux" in .mcp.json.

How to verify it's working

Start two MCP clients with the config above. In each, ask the model to:

  1. Open a different URL via new_page.

  2. Run list_pages.

Each client should see only its own page. On the host, run cdmcp-mux status to see both contexts side-by-side in the daemon.

For a full scripted demo with a recorded video, see demo/.

Environment variables (optional)

Variable

Purpose

CDMCP_MUX_CHROMIUM

Chromium binary (defaults to bundled Puppeteer)

CDMCP_MUX_USER_DATA_DIR

Override Chrome profile directory

CDMCP_MUX_SOCKET

Override unix socket path for the daemon

CDMCP_MUX_HEADLESS

true forces headless (default: headful, matching vanilla chrome-devtools-mcp)

MCP_MUX_DEBUG

1 logs every rewrite diff

Debugging

All out-of-band; the mux never exposes debug tools to MCP clients.

Command

What it does

cdmcp-mux status

daemon pid, upstream state, contexts, owned pages

cdmcp-mux tail [-f]

stream the structured mux log

The log lives at ~/.local/state/cdmcp-mux/mux.log.

How it works

flowchart TB
    subgraph clients["one process per MCP client"]
      direction LR
      C1["Claude Code #1"] -- "stdio (MCP)" --> S1["cdmcp-mux shim"]
      C2["Claude Code #2"] -- "stdio (MCP)" --> S2["cdmcp-mux shim"]
    end

    subgraph shared["shared — auto-spawned on first connect"]
      direction TB
      D["mux daemon<br/><i>per-connection ownership table</i><br/>(socket fd → ctxId → owned pageIds)"]
      U["chrome-devtools-mcp subprocess<br/><code>--experimentalPageIdRouting</code><br/><code>--userDataDir &lt;fixed&gt;</code>"]
      B["Chromium<br/><i>one instance, one profile<br/>cookies shared across clients</i>"]
      D -- "stdio (MCP)<br/>rewrite + filter" --> U
      U -- "CDP" --> B
    end

    S1 -- "unix socket" --> D
    S2 -- "unix socket" --> D

    classDef client fill:#e3f2fd,stroke:#1976d2
    classDef shim fill:#fff3e0,stroke:#f57c00
    classDef core fill:#f3e5f5,stroke:#7b1fa2
    classDef browser fill:#e8f5e9,stroke:#388e3c
    class C1,C2 client
    class S1,S2 shim
    class D,U core
    class B browser

Each MCP client spawns its own cdmcp-mux shim (that's how .mcp.json works — one child per client). The shim is a pure byte pipe between the client's stdio and a unix socket; the first shim to connect auto-spawns the shared daemon, later shims attach to it. The daemon owns one chrome-devtools-mcp subprocess driving one Chromium with one --userDataDir.

The daemon advertises the same tool schemas as vanilla chrome-devtools-mcp. Every connection gets its own ownership table of pageIds it created; the daemon filters list_pages to that set and rejects cross-context calls to close_page, select_page, and other page-scoped tools. pageId is stripped from the advertised schemas and re-injected internally on every tools/call, so concurrent calls from different clients always target the right tab — backed by upstream's --experimentalPageIdRouting.

Tabs are not forced into isolated browser contexts — all clients share the same Chrome profile, so your cookies and logins work the same as with vanilla chrome-devtools-mcp. The isolatedContext parameter on new_page stays exposed exactly like upstream: if a client wants an incognito-style context, it passes it, and the mux forwards it verbatim. When a client disconnects, the daemon closes every tab it owned and the rest keep running.

Development notes

This project was written end-to-end by a Claude-Code agent in a single working session, driven by live conversational requirements. The full test plan is tiered for functional correctness (58 tests, ~19 s, all passing), and the multiplexer was then visually demonstrated via a VNC-automated reproducer.

For the PRD-to-test mapping see DEMO.md. For the full agentic development log — requirements discovery, architecture iteration, test tiering, and the three takes of the video demo — see demo/README.md.

Testing

# requires a Chromium binary; the smoke/e2e tests need it
CDMCP_MUX_CHROMIUM=/usr/bin/chromium npm test

Expected: 8 files, 58 tests, all passing.

Releasing

CI runs on every push and PR against main using Node 22 and 24, building, typechecking, and executing the full 58-test suite (including the real-Chromium smoke and binary-e2e tests).

Publishing is automated via .github/workflows/publish.yml, which runs on a GitHub release being published:

  1. Bump version in package.json, commit, tag as v<version>.

  2. gh release create v<version> --generate-notes.

  3. The workflow builds, tests, and runs npm publish with npm provenance (signed via GitHub OIDC, the workflow has id-token: write).

NPM_TOKEN is the only required repo secret. The package is published with publishConfig.provenance: true, so the --provenance flag is implicit. Once this repo is registered as a trusted publisher at npmjs.com, the NPM_TOKEN secret can be removed entirely.

License

Apache-2.0 — see LICENSE. Same as upstream chrome-devtools-mcp.

Available Tools

29 tools
clickC

Clicks on the provided element

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesThe uid of an element on the page from the page content snapshot
dblClickNoSet to true for double clicks. Default is false.
includeSnapshotNoWhether to include a snapshot in the response. Default is false.

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false, implying this tool mutates state (clicking an element). The description does not expand on possible side effects, prerequisites (e.g., element must be visible), or post-conditions, adding no value beyond the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely short (6 words) but fails to include essential context. It is under-specified rather than concise, missing guidance on behavior and usage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool that triggers page interactions, the description is incomplete. It omits details like triggering navigation, waiting for page load, or the effect of the dblClick and includeSnapshot parameters. No output schema exists to inform the agent of return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% coverage with descriptions for all parameters (uid, dblClick, includeSnapshot). The description adds no additional semantics beyond what the schema already conveys. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Clicks on the provided element', clearly indicating the verb and resource. However, it does not distinguish this tool from siblings like 'hover' or 'press_key', which could also act on an element.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as 'double_click' (though not listed separately), 'hover', or 'press_key'. The agent is left to infer usage context from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

close_pageB

Closes the page by its index. The last open page cannot be closed.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdYesThe ID of the page to close. Call list_pages to list pages.

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false, so the description's mention of closing (a mutation) aligns. The constraint about the last page adds behavioral context, but lacks details on side effects (e.g., active page switches) or error scenarios.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two sentences, no unnecessary words, and front-loaded with the core action. It earns its brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a simple one-parameter tool with no output schema, the description covers the basic action and a constraint. However, it omits details on how to obtain the pageId (though the schema hints) and what happens after closing (e.g., focus shifts). Adequate but not rich.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers pageId with a description, but the tool description says 'by its index', which conflicts with the parameter name and schema. This confusion reduces clarity; the description should align with the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool closes a page, which distinguishes it from sibling tools like navigate_page, select_page, or list_pages. However, it says 'by its index' which is slightly inconsistent with the parameter name 'pageId', causing minor ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description only provides a constraint (last open page cannot be closed) but no guidance on when to use this tool vs alternatives, no prerequisites (like listing pages first), and no conditions for success.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dragB

Drag an element onto another element

ParametersJSON Schema
NameRequiredDescriptionDefault
from_uidYesThe uid of the element to drag
to_uidYesThe uid of the element to drop into
includeSnapshotNoWhether to include a snapshot in the response. Default is false.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds minimal behavioral context beyond the annotation readOnlyHint=false. It doesn't explain side effects, whether events are triggered, or if elements must be draggable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no waste. However, it could be slightly more informative without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no details about return values or error handling, the description is insufficient for an agent to fully understand the tool's behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with parameter descriptions, so the description adds no extra meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Drag an element onto another element' clearly states the action and distinguishes from sibling tools like click, hover, or fill.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use drag versus other interaction tools, nor any mention of prerequisites or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

emulateC

Emulates various features on the selected page.

ParametersJSON Schema
NameRequiredDescriptionDefault
networkConditionsNoThrottle network. Omit to disable throttling.
cpuThrottlingRateNoRepresents the CPU slowdown factor. Omit or set the rate to 1 to disable throttling
geolocationNoGeolocation (`<latitude>x<longitude>`) to emulate. Latitude between -90 and 90. Longitude between -180 and 180. Omit to clear the geolocation override.
userAgentNoUser agent to emulate. Set to empty string to clear the user agent override.
colorSchemeNoEmulate the dark or the light mode. Set to "auto" to reset to the default.
viewportNoEmulate device viewports '<width>x<height>x<devicePixelRatio>[,mobile][,touch][,landscape]'. 'touch' and 'mobile' to emulate mobile devices. 'landscape' to emulate landscape mode.

TDQS

C2.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations give readOnlyHint=false, implying mutation. Description does not disclose side effects, such as that emulated states persist until explicitly cleared or changed. No behavioral context beyond 'emulates'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence is concise but lacks necessary specificity and is not front-loaded with critical information. It earns its place minimally.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 6 parameters and no output schema, the description should provide a clearer overview of what can be emulated and under what circumstances. It does not explain the tool's role among siblings or its return value.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the description does not need to add parameter details. Baseline 3 is appropriate as it adds no extra meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description says 'Emulates various features' but does not specify which features; the input schema lists them, but the description itself is vague. It could be confused with sibling tools like resize_page, which also modifies viewport. No sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives like resize_page or evaluate_script. No when-to-use or when-not-to-use conditions are stated.

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 be JSON-serializable.

ParametersJSON Schema
NameRequiredDescriptionDefault
functionYesA JavaScript function declaration to be executed by the tool 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; }`
argsNoAn optional list of arguments to pass to the function.
dialogActionNoHandle dialogs while execution. "accept", "dismiss", or string for response of window.prompt. Defaults to accept.

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description does not disclose potential side effects, security implications, or that the function modifies page state despite readOnlyHint=false. It only mentions JSON serialization, omitting important behavioral traits for executing arbitrary code in the page context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that efficiently conveys purpose and a key constraint. It is front-loaded and contains no extraneous information, earning its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema is present, so description should cover return behavior, which it does minimally (JSON-serializable). However, it lacks details on error handling, timeouts, async support, and the dialogAction parameter. For a moderately complex tool, this leaves gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed descriptions for all three parameters. The description adds that return values must be JSON-serializable, which is a useful constraint but not extensive. Baseline 3 is appropriate as schema already handles parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it evaluates a JavaScript function in the selected page and returns JSON-serializable results. This distinctively separates it from sibling tools like click or fill that perform specific actions, making its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for running custom JavaScript but does not explicitly state when to prefer it over alternatives. No guidance on when not to use it or mention of sibling tools, leaving the agent to infer context from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fillA

Type text into an input, text area or select an option from a element.

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesThe uid of an element on the page from the page content snapshot
valueYesThe value to fill in
includeSnapshotNoWhether to include a snapshot in the response. Default is false.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations show readOnlyHint=false, indicating mutation. Description adds that it can fill select elements, but doesn't disclose if it clears existing content or triggers events. Adequate but minimal extra value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with essential info, no fluff. Could be slightly expanded for clarity on behavior but still concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple action tool; specifies element types but lacks error handling, preconditions, or edge cases. Given no output schema, more detail on behavior would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage 100% with descriptions. Description adds no new parameter meaning beyond schema, justifying baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool types text into input, text area, or selects from <select> elements. It distinguishes from siblings like 'fill_form' (multi-field) and 'type_text' (which may not handle select).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies use for single element filling but no explicit guidance on when to use vs alternatives like fill_form or type_text. No exclusions or prerequisites mentioned.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
elementsYesElements from snapshot to fill out.
includeSnapshotNoWhether to include a snapshot in the response. Default is false.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description says 'fill out' implying modification, consistent with 'readOnlyHint: false'. However, no additional behavioral traits are disclosed (e.g., partial failure, form validation, or side effects beyond the known mutation).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no redundant information. It is front-loaded and every word contributes to the purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has only 2 parameters with full schema coverage and no output schema, the description is adequate but minimal. It does not explicitly mention return behavior or error states, but the schema covers the 'includeSnapshot' parameter. Overall, it meets the minimum viable threshold.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the schema already describes each parameter sufficiently. The description adds no extra meaning beyond what the schema provides, so baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fills multiple form elements at once, with a specific verb and resource. It distinguishes from sibling tools like 'fill' which likely handles single elements.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as 'fill' or 'type_text'. There are no exclusions or context for appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_console_messageA
Read-only

Gets a console message by its ID. You can get all messages by calling list_console_messages.

ParametersJSON Schema
NameRequiredDescriptionDefault
msgidYesThe msgid of a console message on the page from the listed console messages

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description aligns. No additional behavioral context added beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences: the first defines the core action, the second provides usage guidance. No unnecessary text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers purpose and usage but omits return format and error behavior. Given no output schema, more detail would be beneficial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The parameter 'msgid' is fully described in the schema (100% coverage). The tool description adds no extra semantic value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves a single console message by ID, and explicitly contrasts with the sibling list_console_messages, making its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description tells the agent to use this tool for a single message and points to list_console_messages for all messages, providing clear when-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_network_requestB

Gets a network request by an optional reqid, if omitted returns the currently selected request in the DevTools Network panel.

ParametersJSON Schema
NameRequiredDescriptionDefault
reqidNoThe reqid of the network request. If omitted returns the currently selected request in the DevTools Network panel.
requestFilePathNoThe absolute or relative path to a .network-request file to save the request body to. If omitted, the body is returned inline.
responseFilePathNoThe absolute or relative path to a .network-response file to save the response body to. If omitted, the body is returned inline.

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false, but the description says 'gets', implying read-only. It fails to disclose that the tool can save request/response bodies to files, which is a side effect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with the action, no extraneous words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Missing details about return value format, side effects of file saving, and any constraints. No output schema to compensate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already has clear descriptions for each parameter, so the description adds minimal value beyond stating the default behavior for reqid. Schema coverage is 100%.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it gets a network request by optional reqid, defaulting to the selected one. This distinguishes it from list_network_requests, which lists all requests.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when you need a specific request or the currently selected one, but does not explicitly discuss when not to use or compare with alternatives like list_network_requests.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

handle_dialogB

If a browser dialog was opened, use this command to handle it

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesWhether to dismiss or accept the dialog
promptTextNoOptional prompt text to enter into the dialog.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description lacks detail on behavioral traits such as side effects (e.g., dialog closing) or whether the tool waits for the dialog. Annotations only provide readOnlyHint=false, placing the burden on the description, which fails to add meaningful context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It could be slightly expanded to include usage tips, but it remains concise and to the point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with only two parameters and a clear purpose, the description is complete enough. It specifies the triggering condition and action, which suffices for most use cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters adequately. The description does not add extra meaning beyond the schema, meriting a baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool handles browser dialogs, specifying the verb 'handle' and resource 'dialog'. However, it does not differentiate from sibling tools like 'wait_for' or 'click' that might interact with dialogs indirectly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a precondition ('If a browser dialog was opened') but does not explicitly state when not to use the tool or mention alternatives. Usage context is implied but not thorough.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesThe uid of an element on the page from the page content snapshot
includeSnapshotNoWhether to include a snapshot in the response. Default is false.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false, but the description does not elaborate on behavioral traits such as whether hover triggers events, waits for effects, or requires specific element states. Descriptions should add context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, consisting of a single sentence with no extraneous information. Every word is necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple hover action with no output schema, the description is minimally adequate but could mention follow-up behavior (e.g., snapshot inclusion) or prerequisites (e.g., element visibility).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already describes both parameters (uid, includeSnapshot). The description adds no additional meaning beyond 'the provided element', resulting in a baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (hover) and the target (element), distinguishing it from sibling tools like click or drag which involve different interactions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use hover instead of other interactions, such as when hovering triggers tooltips or popovers. The description lacks context for appropriate use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lighthouse_auditA

Get Lighthouse score and reports for accessibility, SEO and best practices. This excludes performance. For performance audits, run performance_start_trace

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNo"navigation" reloads & audits. "snapshot" analyzes current state.navigation
deviceNoDevice to emulate.desktop
outputDirPathNoDirectory for reports. If omitted, uses temporary files.

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false, implying potential side effects. The description mentions generating reports, which suggests writes, but does not elaborate on side effects like file creation or system state changes. It adds marginal value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with front-loaded purpose and exclusion guidance. Every sentence adds value with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description implies return value (scores and reports). With 0 required parameters and straightforward schema, the description is adequately complete for an agent to understand usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% description coverage for all 3 parameters. The description does not add new information beyond what the schema already provides, so baseline score is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool gets Lighthouse scores and reports for accessibility, SEO, and best practices. It explicitly excludes performance and directs to a sibling tool, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

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 (accessibility, SEO, best practices) and when not to use (performance, pointing to performance_start_trace). This effectively differentiates from 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_messagesA
Read-only

List all console messages for the currently selected page since the last navigation.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageSizeNoMaximum number of messages to return. When omitted, returns all messages.
pageIdxNoPage number to return (0-based). When omitted, returns the first page.
typesNoFilter messages to only return messages of the specified resource types. When omitted or empty, returns all messages.
includePreservedMessagesNoSet to true to return the preserved messages over the last 3 navigations.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already indicate readOnlyHint=true. The description adds behavioral context with 'since the last navigation', which clarifies the temporal scope of the messages returned, providing value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence of 11 words that is front-loaded with the core purpose. No redundant or extraneous information. Extremely concise and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with 4 optional parameters, the description covers the main functionality and temporal scope. It does not mention pagination or filtering, but the schema details those. Slight gap in not describing the return format, but acceptable given no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description does not elaborate on parameters, so it adds no extra meaning beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List', the resource 'console messages', and the scope 'for the currently selected page since the last navigation'. This distinguishes it from siblings like 'get_console_message' (single message) and 'list_network_requests' (different resource).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool versus alternatives like 'get_console_message' or when to use filtering/pagination. It only states the function without contextual usage advice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_network_requestsC
Read-only

List all requests for the currently selected page since the last navigation.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageSizeNoMaximum number of requests to return. When omitted, returns all requests.
pageIdxNoPage number to return (0-based). When omitted, returns the first page.
resourceTypesNoFilter requests to only return requests of the specified resource types. When omitted or empty, returns all requests.
includePreservedRequestsNoSet to true to return the preserved requests over the last 3 navigations.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint: true, but the description adds no further behavioral details (e.g., whether requests accumulate, memory impact, or response format).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is very concise (one sentence), front-loading the core purpose with no wasted words. Minor deduction for lacking additional useful context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, but the description does not explain what information is returned for each request. The 4 parameters are well-documented in the schema, but the tool's return value is left unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the description adds no extra meaning beyond what the schema already provides. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists requests for the currently selected page since last navigation. It is specific but does not differentiate from the sibling 'get_network_request' which likely retrieves a single request.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., 'get_network_request'), no context on prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_pagesA
Read-only

Get a list of pages open in the browser.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description states it gets a list, consistent with the readOnlyHint=true annotation. It adds no further behavioral details (e.g., whether it refreshes, performance impact). Since annotations already cover the safety profile, the description adds minimal value but is not contradictory.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no unnecessary words. It is front-loaded with the action and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, but the description does not specify the output format (e.g., page IDs, URLs, titles). Given that sibling tools like 'select_page' require page identifiers, knowing the output structure would be helpful. Missing this context lowers completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so the input schema is empty (100% coverage). The description does not need to add parameter details. Baseline score of 4 is appropriate for zero-parameter tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Get a list of pages open in the browser' clearly states the tool's action and resource. It distinguishes from sibling tools like 'select_page' (which selects a specific page) and 'navigate_page' (which navigates), but does not specify the output format (e.g., URLs, titles).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit usage guidelines are provided. The description implies usage when a list of open pages is needed, but does not mention when not to use it or suggest alternatives. The usage context is inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

new_pageA

Open a new tab and load a URL. Use project URL if not specified otherwise.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL to load in a new page.
backgroundNoWhether to open the page in the background without bringing it to the front. Default is false (foreground).
isolatedContextNoIf specified, the page is created in an isolated browser context with the given name. Pages in the same browser context share cookies and storage. Pages in different browser contexts are fully isolated.
timeoutNoMaximum wait time in milliseconds. If set to 0, the default timeout will be used.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate write operation (readOnlyHint=false), and the description aligns by stating 'open' and 'load'. It adds context on background mode and isolated contexts, but omits details on error handling or permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no unnecessary words. It front-loads the core action and includes an important default behavior hint.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (4 parameters, no output schema), the description covers the main purpose and default. It briefly explains isolated contexts. Missing info on return values is acceptable without output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed descriptions. The description adds one useful piece: default URL behavior if not specified. This adds value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Open a new tab and load a URL') and distinguishes from siblings like 'navigate_page' which navigates the current page. It specifies the resource and provides a default behavior hint.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for opening a new tab with a URL and mentions fallback to project URL. It does not explicitly exclude cases or name alternatives, which would improve clarity among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

performance_analyze_insightA
Read-only

Provides more detailed information on a specific Performance Insight of an insight set that was highlighted in the results of a trace recording.

ParametersJSON Schema
NameRequiredDescriptionDefault
insightSetIdYesThe id for the specific insight set. Only use the ids given in the "Available insight sets" list.
insightNameYesThe name of the Insight you want more information on. For example: "DocumentLatency" or "LCPBreakdown"

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true. The description adds that it 'provides detailed information', which is consistent but does not disclose additional behavioral traits beyond the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no unnecessary words, effectively communicating the tool's core function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does not explain what the returned detailed information contains, leaving some ambiguity for the agent about the expected output.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear parameter descriptions. The description adds minimal extra meaning beyond that, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool provides detailed information on a specific Performance Insight from a trace recording, distinguishing it from recording tools like performance_start_trace and 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied (after a trace recording to get insight details), but no explicit guidance on when to use vs. alternatives or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

performance_start_traceB

Start a performance trace on the selected webpage. Use to find frontend performance issues, Core Web Vitals (LCP, INP, CLS), and improve page load speed.

ParametersJSON Schema
NameRequiredDescriptionDefault
reloadNoDetermines if, once tracing has started, the current selected page should be automatically reloaded. Navigate the page to the right URL using the navigate_page tool BEFORE starting the trace if reload or autoStop is set to true.
autoStopNoDetermines if the trace recording should be automatically stopped.
filePathNoThe absolute file path, or a file path relative to the current working directory, to save the raw trace data. For example, trace.json.gz (compressed) or trace.json (uncompressed).

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description lacks behavioral details beyond the annotations and schema. For instance, it does not mention that tracing might affect page performance, that a page must be loaded, or that the trace should be stopped with the sibling tool. The schema provides more behavioral info on reload and autoStop, but the description adds little.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that efficiently conveys the tool's purpose and use case. It is concise and front-loaded with the action, with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (3 params, no output schema), the description covers the basic purpose and use. However, it omits important context such as the need to stop the trace afterward and the nature of the output file (though mentioned in schema). It is adequate but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All parameters have descriptions in the input schema (100% coverage). The tool description does not add any additional meaning beyond what the schema already provides, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool starts a performance trace on the selected webpage to find frontend performance issues and Core Web Vitals. The purpose is clear, but it does not explicitly differentiate from sibling tools like performance_stop_trace, though the naming implies the relationship.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description suggests using the tool to find performance issues, providing usage context. However, it does not specify when not to use it or mention alternatives, such as lighthouse_audit for broader audits.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

performance_stop_traceA

Stop the active performance trace recording on the selected webpage.

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathNoThe absolute file path, or a file path relative to the current working directory, to save the raw trace data. For example, trace.json.gz (compressed) or trace.json (uncompressed).

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description indicates the tool stops a recording, consistent with the annotation 'readOnlyHint: false'. However, it does not mention the side effect of saving trace data to a file, which is crucial. The input schema covers this, but the description could be more transparent about the overall behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no unnecessary words. It is front-loaded and directly states the tool's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one optional parameter and no output schema, the description is mostly adequate. However, it omits important context such as the need to have a previously started trace and the fact that the tool saves data to a file. This gap reduces completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already fully describes the single parameter 'filePath' (100% coverage). The description adds no additional information about parameters, so 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Stop'), the resource ('performance trace recording'), and the scope ('on the selected webpage'). It effectively distinguishes itself from siblings like 'performance_start_trace' and 'performance_analyze_insight'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies that a trace recording must be active, but it does not explicitly state prerequisites (e.g., must have started a trace with 'performance_start_trace') or provide guidance on when not to use the tool (e.g., no active trace). This is adequate but lacks explicit guidelines.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

press_keyA

Press a key or key combination. Use this when other input methods like fill() cannot be used (e.g., keyboard shortcuts, navigation keys, or special key combinations).

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesA key or a combination (e.g., "Enter", "Control+A", "Control++", "Control+Shift+R"). Modifiers: Control, Shift, Alt, Meta
includeSnapshotNoWhether to include a snapshot in the response. Default is false.

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Description states it presses a key, which implies a write action; annotations show readOnlyHint=false, consistent. However, no details on side effects (e.g., focus requirements, invalid key handling) beyond the action itself.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences covering action, usage context, and examples. No fluff, front-loaded with the verb and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with full schema and no output schema, the description adequately covers purpose and usage. Could mention that it operates on the currently focused element, but not strictly necessary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All parameters (key and includeSnapshot) are fully described in the schema. Schema coverage is 100%, so description adds no extra parameter meaning beyond what schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool presses a key or key combination, with examples like 'Enter' and 'Control+A'. Distinguishes from filling by specifying it's for shortcuts/navigation when fill() cannot be used.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use this when other input methods like fill() cannot be used' and lists typical scenarios (keyboard shortcuts, navigation keys, special combinations). This provides clear when-to-use guidance and implies alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resize_pageA

Resizes the selected page's window so that the page has specified dimension

ParametersJSON Schema
NameRequiredDescriptionDefault
widthYesPage width
heightYesPage height

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=false, indicating mutation. The description confirms this with 'resizes' but adds no extra behavioral context such as side effects, reversibility, or whether it triggers events. With annotations present, the bar is lower, but the description adds minimal value beyond stating the mutation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, 13 words, directly states action and parameters. No waste, front-loaded with key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with 2 parameters and no output schema. The description covers the core functionality. Minor gaps: no mention of units (e.g., pixels), possible constraints (min/max size), or interaction with other page states. Adequate for basic use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions 'Page width' and 'Page height'. The description adds slight context by specifying 'selected page's window', but does not elaborate on units, constraints, or format. Baseline 3 is appropriate as schema does most of the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it resizes the selected page's window to specified dimensions. The verb 'resize' is specific, and the resource is 'selected page's window'. It distinguishes from sibling tools like navigate_page or fill.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use (when you need to resize a page window) but provides no explicit guidance on when not to use or how it compares to alternatives. No exclusions or sibling references.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

select_pageB
Read-only

Select a page as a context for future tool calls.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdYesThe ID of the page to select. Call list_pages to get available pages.
bringToFrontNoWhether to focus the page and bring it to the top.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the description need not cover that. The description adds no further behavioral traits beyond the selection action, which is acceptable for a simple tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence effectively communicates the tool's purpose without superfluous words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 params, no output schema), the description is adequate. It would benefit from clarifying that selected page persists for subsequent calls, but this is not a critical gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Both parameters are fully described in the input schema (100% coverage). The description adds value by referencing list_pages for pageId, but this is a minor addition beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool selects a page as context for future calls. It is specific and distinguishes from sibling tools like close_page or list_pages, though it could be more explicit about the browser automation context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., calling list_pages first) or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

take_memory_snapshotA

Capture a heap snapshot of the currently selected page. Use to analyze the memory distribution of JavaScript objects and debug memory leaks.

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesA path to a .heapsnapshot file to save the heapsnapshot to.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotation already flags this as not read-only. The description adds that it captures a snapshot and saves to a file, but omits behavioral details like potential page freeze, performance impact, or whether it requires a loaded page. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two sentences, no redundant words. The purpose is front-loaded, making it easy for an AI agent to quickly grasp the tool's function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has one required parameter and no output schema, the description adequately covers what it does. However, it does not mention what the result is after saving (e.g., no return value). For a simple tool, this is mostly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers the parameter with full description. The tool description adds no additional meaning beyond what the schema provides. With 100% schema coverage, a score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool captures a heap snapshot of the selected page for memory analysis. It uses specific verbs and resources, but it does not differentiate from the sibling tool 'take_snapshot', which might be confused with a visual snapshot.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description indicates usage for debugging memory leaks, which is clear. However, it lacks guidance on when not to use it or mention of alternatives like performance profiling tools. No prerequisites or context on page state are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

take_screenshotB

Take a screenshot of the page or element.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoType of format to save the screenshot as. Default is "png"png
qualityNoCompression quality for JPEG and WebP formats (0-100). Higher values mean better quality but larger file sizes. Ignored for PNG format.
uidNoThe uid of an element on the page from the page content snapshot. If omitted, takes a page screenshot.
fullPageNoIf set to true takes a screenshot of the full page instead of the currently visible viewport. Incompatible with uid.
filePathNoThe absolute path, or a path relative to the current working directory, to save the screenshot to instead of attaching it to the response.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false, implying potential side effects (e.g., file saving via filePath). Description does not elaborate on behavioral traits like file system writes or that the tool is safe for repeated use. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is a single, concise sentence. It is front-loaded and efficient, though slightly too brief for a tool with multiple parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but tool is simple. Description omits what the return value is (e.g., base64 data, file path). Given low complexity, it is mostly adequate but could include return type or default behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% parameter description coverage, so the description adds minimal value beyond the schema. Baseline score of 3 is appropriate as the description does not elaborate further.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Take a screenshot of the page or element' with a specific verb and resource. However, it does not differentiate from sibling tools like 'take_snapshot', which could cause confusion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., 'take_snapshot'). The description does not mention prerequisites or context such as requiring a page to be open.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

take_snapshotA

Take a text snapshot of the currently selected page based on the a11y tree. The snapshot lists page elements along with a unique identifier (uid). Always use the latest snapshot. Prefer taking a snapshot over taking a screenshot. The snapshot indicates the element selected in the DevTools Elements panel (if any).

ParametersJSON Schema
NameRequiredDescriptionDefault
verboseNoWhether to include all possible information available in the full a11y tree. Default is false.
filePathNoThe absolute path, or a path relative to the current working directory, to save the snapshot to instead of attaching it to the response.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations have readOnlyHint=false, and the description adds behavioral context: uses a11y tree, lists elements with uid, indicates selected element in DevTools. However, it does not disclose any side effects beyond the optional save-to-file. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, all front-loaded with core action and key details. No redundant information; every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the description outlines what the snapshot contains, it does not explain the return format or how the agent should use the uid or snapshot data. With no output schema, more detail on the response structure would be helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description does not add new meaning beyond what the schema provides for 'verbose' and 'filePath'. It mentions using latest snapshot, which is not a parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool takes a text snapshot of the currently selected page using the a11y tree, listing elements with unique identifiers. It distinguishes from the sibling tool 'take_screenshot' by explicitly stating preference for snapshot over screenshot.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides guidance to always use the latest snapshot and prefer snapshot over screenshot, but does not explicitly state when not to use this tool or mention alternative tools like 'evaluate_script' for similar tasks. Could be more comprehensive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

type_textA

Type text using keyboard into a previously focused input

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe text to type
submitKeyNoOptional key to press after typing. E.g., "Enter", "Tab", "Escape"

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate mutation (readOnlyHint=false), matching the description of typing text. However, the description does not disclose behavior when the input is not focused (likely error), nor does it mention special key handling or whether text overwrites existing content. Some additional context would be beneficial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence of 10 words. Every word is necessary and no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with no output schema and minimal annotations, the description covers the basic usage but omits details like cursor position behavior, error handling, and return value. Some additional context would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters have descriptions. The tool description adds minimal value beyond the schema (e.g., the prerequisite context). With high schema coverage, baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (type text), the method (using keyboard), and the prerequisite (previously focused input). It distinguishes from siblings like 'fill' and 'press_key' by specifying the need for a focused input.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a precondition ('previously focused input') which is helpful, but it does not explicitly state when to use this tool over alternatives like 'fill' for form fields or 'press_key' for single keys. No exclusionary guidance is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_fileC

Upload a file through a provided element.

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesThe uid of the file input element or an element that will open file chooser on the page from the page content snapshot
filePathYesThe local path of the file to upload
includeSnapshotNoWhether to include a snapshot in the response. Default is false.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false, implying a write operation, but the description adds no further behavioral details (e.g., file existence requirements, element constraints, side effects). The input schema partially compensates with parameter descriptions, but the tool description itself is silent on behavior beyond 'upload'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no redundancy, front-loading the core action. However, it is minimal and could benefit from slightly more structure (e.g., listing key constraints). It is concise but not overly so.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema and the complexity of file upload (involving element identification and local path), the description is too sparse. It does not mention expected outcomes, error scenarios, or return values, leaving the agent underinformed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already explains each parameter fully. The tool description adds no additional meaning to the parameters, thus baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Upload a file through a provided element,' which clearly indicates the action and resource. However, it could be more specific (e.g., what type of element) and does not differentiate from sibling tools like fill or click, though no other tool explicitly uploads files.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as fill for form fields or click for buttons. The description lacks context for proper tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wait_forB
Read-only

Wait for the specified text to appear on the selected page.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesNon-empty list of texts. Resolves when any value appears on the page.
timeoutNoMaximum wait time in milliseconds. If set to 0, the default timeout will be used.

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description is consistent with annotations (readOnlyHint=true) and indicates a read-only polling behavior. However, it does not disclose what happens on timeout, whether it throws an error or returns a boolean, or if it immediately resolves if text is already present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no redundant information. It is concise, though it could benefit from slightly more detail without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lacks information about the return value or behavior on timeout. Without an output schema, the agent needs to know the outcome of the wait operation, but this is not provided. The tool has only 2 parameters, but the description is insufficient for an agent to fully understand the tool's behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides detailed descriptions for both parameters ('text' as a list and 'timeout' with default behavior). The description adds no additional semantic value beyond what is in the schema, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (wait) and target (text appearing on page). It distinguishes from sibling tools like 'click' or 'fill' by being a wait operation. However, it does not specify whether it waits for any of the texts or all, leading to slight ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives, such as polling manually or using other wait mechanisms. The description does not mention prerequisites or scenarios where waiting is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

B3.4/5.0
Disambiguation4/5

Most tools have distinct purposes, but there is some overlap between fill, fill_form, and type_text for text input, and between take_screenshot and take_snapshot for capturing page state. Descriptions help clarify differences, but an agent might occasionally misselect between these similar tools.

Naming Consistency4/5

Tools primarily use snake_case with clear verb_noun patterns (e.g., list_pages, navigate_page, take_screenshot), but there are minor deviations like emulate (verb only) and lighthouse_audit (noun_verb). Overall, naming is mostly consistent and readable.

Tool Count3/5

With 29 tools, the count is borderline high for a DevTools automation server, potentially overwhelming. However, it covers a broad range of browser interactions, so it's not excessive, but could benefit from consolidation or better scoping.

Completeness5/5

The toolset comprehensively covers browser automation tasks: navigation, page management, interaction (click, hover, drag), input handling, debugging (console, network, performance, memory), and auditing. No obvious gaps exist for the domain, supporting full workflows from basic actions to advanced diagnostics.

Maintenance

ActivityInactive
ResponsivenessSyncing

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

Related MCP Servers

Latest Blog Posts

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/ochen1/chrome-devtools-mcp-mux'

If you have feedback or need assistance with the MCP directory API, please join our Discord server