Skip to main content
Glama
ochen1
by ochen1

chrome-devtools-mcp-mux

CI

chrome-devtools-mcp 的直接替代品,它允许许多 MCP 客户端共享一个 Chrome 实例和一个配置文件,而不会互相干扰标签页。每个客户端(例如单独的 Claude Code 会话)都会获得自己隔离的标签页集合,同时它们都运行在同一个浏览器和配置文件上。

代理 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/

代理 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]

当代理被终止时,它们的标签页会自动关闭。

它解决了什么问题

chrome-devtools-mcp 将 Chrome DevTools 暴露给 MCP 客户端。它对于单个客户端运行得非常完美,但如果两个客户端同时连接(两个 Claude Code 窗口、一个 Claude Code 加一个 Gemini CLI、一个编码代理加一个测试运行器——任何使用相同配置的程序),它们就会互相干扰标签页:list_pages 会显示所有内容,select_page 会产生竞争,new_page 会在错误的窗口中打开,close_page 可能会关闭另一个客户端的工作。

cdmcp-mux 位于客户端和 chrome-devtools-mcp 之间,并跟踪谁拥有哪个标签页。每个客户端只能看到自己的标签页;跨客户端的冲突在到达浏览器之前就会被拒绝。

Related MCP server: playwright-mcp-orchestrator

与原生 chrome-devtools-mcp 的对比

关注点

chrome-devtools-mcp

chrome-devtools-mcp-mux

配置形式

npx -y chrome-devtools-mcp@latest

npx -y chrome-devtools-mcp-mux@latest — 仅有一个 token 不同

暴露给客户端的工具

完整的原生表面

相同 (pageId 保持剥离;isolatedContext 仍作为可选功能暴露)

Chrome 配置文件 / Cookie / 登录 / 扩展

一个 --userDataDir

相同 --userDataDir,不强制无痕模式

默认无头 vs 有头

有头

有头 (与原生匹配;使用 CDMCP_MUX_HEADLESS=true 强制无头)

单个客户端单独运行

正常

正常 — 无行为改变,无需担心开销

两个以上客户端连接同一个 Chrome

冲突:共享 list_pages,竞争 select_page,跨客户端 close_page

工具层隔离:每个客户端独立的 list_pages,跨客户端工具调用被拒绝

new_page 的可选 isolatedContext

透传

透传 (如果需要,仍然可以选择每个标签页的隔离)

CLI 参数透传 (--viewport, --browserUrl 等)

✗ 暂不支持 — 参见 drop-in gaps

--autoConnect / 附加到正在运行的 Chrome

✗ 暂不支持

上游版本

每次 npx 都是最新

每个版本固定一个经过测试的 chrome-devtools-mcp 版本

维护者

Chrome DevTools 团队

本仓库 (上游的轻量封装)

运行时开销

一个长驻守护进程,每次工具调用一次 unix socket 跳跃

经验法则: 如果你每次只运行一个 MCP 客户端,请坚持使用原生版本。如果你运行两个或更多 — 不同的 Claude Code 会话、一个代理加上你自己的调试器、并行测试运行器等 — 多路复用器可以防止它们破坏彼此的状态。

直接替换的差距

少量原生行为尚未通过多路复用器实现。如果其中任何一个对你很重要,请提交 issue:

  • "args" 中传入的任意 CLI 参数(例如 --viewport=1920x1080)目前会被忽略。多路复用器使用一组固定的标志启动上游。

  • --browserUrl, --wsEndpoint, --autoConnect — 多路复用器总是启动自己的 Chromium;它还不知道如何附加到已经运行的浏览器上。

  • 上游版本在每个版本中是固定的。如果上游发布了新工具,多路复用器需要版本升级才能暴露它。

对于此列表之外的任何内容,多路复用器对于单个客户端的行为与原生版本没有区别,而对于多个客户端则明显更好。

安装和配置

如果你的 .mcp.json 目前看起来像这样(规范的上游设置):

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

chrome-devtools-mcp@latest 更改为 chrome-devtools-mcp-mux@latest,你就完成了:

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

第一个连接的客户端会自动生成一个共享守护进程;后续客户端会附加到同一个守护进程。每个客户端都有自己的标签页视图,但它们都生活在同一个 Chrome 配置文件中 — 因此你的 Cookie、登录信息和扩展程序与原生 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

然后在 .mcp.json 中设置 "command": "cdmcp-mux"

如何验证它是否工作

使用上述配置启动两个 MCP 客户端。在每个客户端中,要求模型:

  1. 通过 new_page 打开一个不同的 URL。

  2. 运行 list_pages

每个客户端应该只能看到它自己的页面。在主机上,运行 cdmcp-mux status 以在守护进程中并排查看两个上下文。

有关带有录制视频的完整脚本演示,请参阅 demo/

环境变量(可选)

变量

用途

CDMCP_MUX_CHROMIUM

Chromium 二进制文件(默认为捆绑的 Puppeteer)

CDMCP_MUX_USER_DATA_DIR

覆盖 Chrome 配置文件目录

CDMCP_MUX_SOCKET

覆盖守护进程的 unix socket 路径

CDMCP_MUX_HEADLESS

true 强制无头(默认:有头,与原生 chrome-devtools-mcp 匹配)

MCP_MUX_DEBUG

1 记录每个重写差异

调试

所有内容都是带外的;多路复用器从不向 MCP 客户端暴露调试工具。

命令

作用

cdmcp-mux status

守护进程 pid、上游状态、上下文、拥有的页面

cdmcp-mux tail [-f]

流式传输结构化多路复用器日志

日志位于 ~/.local/state/cdmcp-mux/mux.log

工作原理

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

每个 MCP 客户端都会生成自己的 cdmcp-mux 垫片(这就是 .mcp.json 的工作方式 — 每个客户端一个子进程)。垫片是客户端 stdio 和 unix socket 之间的纯字节管道;第一个连接的垫片会自动生成共享守护进程,后续垫片会附加到它上面。守护进程拥有一个 chrome-devtools-mcp 子进程,驱动一个 Chromium,并使用一个 --userDataDir

守护进程通告与原生 chrome-devtools-mcp 相同的工具模式。每个连接都有自己的页面 ID 所有权表;守护进程将 list_pages 过滤到该集合,并拒绝跨上下文调用 close_pageselect_page 和其他页面范围的工具。pageId 从通告的模式中剥离,并在每次 tools/call 时在内部重新注入,因此来自不同客户端的并发调用总是针对正确的标签页 — 由上游的 --experimentalPageIdRouting 支持。

标签页不会被强制进入隔离的浏览器上下文 — 所有客户端共享同一个 Chrome 配置文件,因此你的 Cookie 和登录信息与原生 chrome-devtools-mcp 的工作方式相同。new_page 上的 isolatedContext 参数保持与上游完全相同的暴露方式:如果客户端想要无痕模式风格的上下文,它会传递该参数,多路复用器会逐字转发它。当客户端断开连接时,守护进程会关闭它拥有的每个标签页,其余标签页继续运行。

开发笔记

该项目由 Claude-Code 代理在单个工作会话中从头到尾编写,由实时对话需求驱动。完整的测试计划按功能正确性分层(58 个测试,约 19 秒,全部通过),并且多路复用器通过 VNC 自动化的复现器进行了视觉演示。

有关 PRD 到测试的映射,请参阅 DEMO.md。有关完整的代理开发日志 — 需求发现、架构迭代、测试分层以及视频演示的三个版本 — 请参阅 demo/README.md

测试

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

预期:8 files, 58 tests, all passing

发布

CI 在每次推送到 main 和 PR 时运行,使用 Node 22 和 24,进行构建、类型检查并执行完整的 58 项测试套件(包括真实的 Chromium 冒烟测试和二进制 e2e 测试)。

发布通过 .github/workflows/publish.yml 自动化,该工作流在 GitHub 发布版本时运行:

  1. 增加 package.json 中的 version,提交并标记为 v<version>

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

  3. 工作流构建、测试并运行 npm publish,带有 npm 来源证明(通过 GitHub OIDC 签名,工作流具有 id-token: write 权限)。

NPM_TOKEN 是唯一需要的仓库密钥。包发布时带有 publishConfig.provenance: true,因此 --provenance 标志是隐式的。一旦此仓库在 npmjs.com 上注册为受信任的发布者,就可以完全删除 NPM_TOKEN 密钥。

许可证

Apache-2.0 — 参见 LICENSE。与上游 chrome-devtools-mcp 相同。

Available Tools

29 tools
clickB

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

B3.4/5.0
Behavior3/5

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

The annotation readOnlyHint: false signals that this is not a read-only operation, and the description accurately states the click behavior. However, it adds no extra context about side effects, such as triggering navigation or waiting for page loads, beyond what the annotation already implies.

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, highly concise, and front-loaded with the action. Every word earns its place with no redundancy or unnecessary detail.

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 click tool with a fully documented schema and no output schema, this description is sufficient. It clearly states the core behavior, and the schema covers optional parameters like dblClick and includeSnapshot, so no critical information is missing.

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 has 100% description coverage, so parameters are already well-documented. The description only refers to 'the provided element,' which aligns with the uid parameter, and does not add additional meaning 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 clicks on a provided element, using a specific verb and resource. While it distinguishes 'click' from siblings like hover and drag by naming the action, it does not explicitly differentiate itself further.

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 offers no guidance on when to use this tool instead of alternatives such as hover, drag, or press_key. There is no mention of contexts or exclusions, leaving the agent without clear decision support.

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.4/5.0
Behavior3/5

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

The description discloses a key constraint ('The last open page cannot be closed'), which adds value beyond annotations. However, readOnlyHint: false already indicates mutation, and the description doesn't elaborate on error behavior, side effects, or whether the operation can be undone. The added constraint justifies a mid-score.

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 — two short sentences that front-load the main action and then state the key limitation. Every word earns its place, with no filler or redundancy.

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 a single well-documented parameter and no output schema, the description covers the core behavior and an important edge case. It omits what happens when an invalid pageId is provided or whether the browser state changes, but these are secondary for this simple mutation operation.

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 schema has 100% coverage for the single parameter, including a description that tells the agent to call list_pages. The tool description adds the phrase 'by its index', which could be interpreted as positional rather than ID-based, potentially causing confusion. Overall, the description does not improve parameter clarity beyond what the schema already provides.

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 ('Closes the page') and the resource ('page'), with a specific scope ('by its index'). It distinguishes itself from siblings like new_page and select_page. However, 'index' is potentially ambiguous because the schema parameter is called 'pageId', which could imply a stable identifier rather than a positional index.

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?

There is no explicit guidance on when to use this tool or when to prefer alternatives. The schema hints to call list_pages to obtain page IDs, but the description itself doesn't mention that workflow or compare with sibling tools.

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 annotation readOnlyHint=false already indicates a mutating operation, but the description adds no behavioral context beyond the action. It does not disclose side effects, required conditions, or event behavior, so the description contributes minimal transparency.

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 redundant words or filler. It is front-loaded and delivers the core message efficiently.

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, full schema coverage, and the readOnlyHint annotation, the description is minimally sufficient. However, it lacks any mention of return values, error conditions, or usage context, making it less complete than it could be.

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 all parameters (from_uid, to_uid, includeSnapshot) are already well-described. The description adds no additional parameter semantics, meriting the 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 (drag) and the target (an element onto another element), distinguishing it from sibling tools like click and hover. However, it is terse and does not elaborate on drag semantics or use cases.

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 guidance on when to use this tool versus alternatives. It does not mention alternatives, exclusions, or specific scenarios where dragging is appropriate.

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.1/5.0
Behavior2/5

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

The annotation readOnlyHint=false indicates a mutating operation, but the description adds no behavioral details. It does not disclose whether overrides persist, how the page is affected, or how to reset emulation. Beyond what the annotation already implies, the description contributes nothing.

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 (one sentence), but it is under-specified rather than concise. It omits essential context and merely restates the tool's name, similar to the 'Process' example where under-specification earns a 2.

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

Completeness1/5

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

Given 6 parameters, no output schema, and only a readOnlyHint annotation, the description should explain the tool's purpose, behavior, and usage context. The single vague sentence is completely inadequate for a tool with this complexity.

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%, and each parameter (viewport, userAgent, colorScheme, etc.) has detailed descriptions. The tool description itself adds no extra meaning beyond the schema, so the baseline of 3 is appropriate.

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

Purpose2/5

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

The description 'Emulates various features on the selected page' uses a vague verb and resource but fails to specify which features are emulated (e.g., viewport, user agent, geolocation). It largely restates the tool name 'emulate' without distinguishing it from sibling tools like resize_page or navigate_page.

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. The description does not mention that it handles device emulation, nor does it explain exclusions or relationships with sibling tools. There is no clear context for appropriate selection.

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.7/5.0
Behavior3/5

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

The description adds the behavioral constraint that returned values must be JSON-serializable, which is valuable. However, it does not disclose that executing arbitrary JavaScript may cause side effects (navigation, DOM changes, network requests), though the annotation readOnlyHint=false already hints at mutation. Given the minimal annotations, the description could do more to explain potential impacts.

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, tightly-woven sentence that front-loads the primary action and immediately follows with the crucial output constraint. No words are wasted, and the structure makes it easy for an agent to grasp the core purpose quickly.

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 JavaScript execution tool, the description covers the basic purpose and return format, and the schema provides detailed parameter information. However, it omits important context such as potential side effects, error behavior, and when to prefer this tool over higher-level alternatives. This is adequate but leaves clear gaps for a complex tool.

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 parameters are already well-described with examples for the function and args. The description adds no additional parameter semantics beyond what the schema provides, aligning with the 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?

The description clearly states the tool's purpose with a specific verb ('Evaluate'), a resource ('a JavaScript function'), and context ('inside the currently selected page'). It also adds a key detail about JSON serialization, which distinguishes it from sibling tools like click or fill that perform predefined actions.

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 by saying 'inside the currently selected page,' but it does not provide explicit guidance on when to choose this tool over alternatives like click, fill, or handle_dialog. No exclusions or alternative recommendations are mentioned, so the usage context remains implied rather than explicit.

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

A4.3/5.0
Behavior3/5

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

Annotations include readOnlyHint: true, which already signals a safe read operation. The description adds no extra behavioral context such as return format, error handling, or side effects, so it provides minimal 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.

Conciseness5/5

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

The description is two sentences, front-loaded with the core action, and then efficiently points to the sibling for the broader operation. No redundant or filler content.

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

Completeness5/5

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

Given the low complexity (one parameter, no nested objects), the presence of read-only annotation, and full schema coverage, the description adequately covers the necessary context. It provides the key distinction from the list operation and is complete for a simple retrieval tool even without an 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 coverage for the single parameter msgid is 100%, with a description that clarifies it comes from listed console messages. The tool description adds no additional parameter information, so the baseline score of 3 for high schema coverage 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 uses a specific verb 'Gets' with a resource 'console message' and qualifies 'by its ID', clearly indicating a targeted retrieval. It also distinguishes itself from sibling tool list_console_messages by noting the alternative for retrieving all messages.

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 explicitly states that for all messages, use list_console_messages, implying this tool is for a single message by ID. This provides clear guidance on when to use this tool versus an alternative.

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

get_network_requestA

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

A4/5.0
Behavior3/5

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

Annotations declare readOnlyHint false, so the agent knows the tool isn't read-only. The description adds the behavior of returning the currently selected request when reqid is omitted, which is useful context. However, it doesn't mention file-saving side effects (only in the schema) or return format, so it adds some but not rich transparency.

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 of about 20 words, front-loaded with the verb and resource, and contains no filler or redundancy.

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 3 optional parameters and no output schema. The description covers the core functionality and the fallback behavior, which is sufficient for the low complexity. It doesn't describe return values, but for a getter this is reasonably inferable.

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 each parameter fully described in the schema. The description only repeats 'optional reqid' already present in the schema, so it adds no additional parameter meaning. Baseline 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 uses a specific verb ('Gets') and resource ('network request'), and clarifies the optional reqid behavior and fallback to the currently selected request. This clearly distinguishes it from sibling tools like list_network_requests.

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 states when to supply a reqid and what happens when it's omitted, giving clear usage context. It doesn't explicitly name alternatives or exclusions, but the purpose inherently differentiates it from listing tools, so the context is sufficient.

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

handle_dialogA

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

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

TDQS

A3.8/5.0
Behavior2/5

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

Beyond the annotation readOnlyHint=false (indicating this is not read-only), the description adds only the precondition that a dialog has been opened. It doesn't disclose what happens when no dialog is present, whether promptText is required for certain dialog types, or any failure behavior. The description could provide more context about the tool's effects on the browser state.

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 that states the condition and the action. It contains no filler or redundant information, achieving maximum conciseness.

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 two-parameter tool with a clear schema, the description combined with the schema provides sufficient context. However, the lack of output schema and absence of error handling details (e.g., what happens if no dialog is open) leaves a minor gap, making it not fully 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 already fully describes both parameters (action with enum values, and optional promptText), covering 100% of the parameters. The description adds no extra semantic meaning beyond what the schema provides, 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 tool handles a browser dialog, using the specific verb 'handle' with the resource 'browser dialog'. This distinguishes it from sibling browser automation tools like click, fill, and hover which do not target dialogs.

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 provides a clear condition for use: 'If a browser dialog was opened'. This tells the agent when to invoke the tool. It doesn't explicitly mention alternatives or when not to use it, but since no sibling tool handles dialogs, the condition alone is sufficient guidance.

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

hoverB

Hover over the provided element

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.3/5.0
Behavior2/5

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

The only annotation (readOnlyHint: false) indicates this action is not read-only, but the description adds no further context about side effects, return behavior, or what hovering does beyond simply moving the cursor. No additional behavioral traits are disclosed 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 that is direct and free of fluff. It efficiently conveys the tool's purpose without unnecessary words or repetition.

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 simplicity of the tool and complete schema, the description covers the basic action, but it does not explain the effects of hovering (e.g., triggering popovers) or the nature of the response when includeSnapshot is true. The absence of an output schema and minimal behavioral disclosure leave some 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?

The input schema fully describes both parameters (uid and includeSnapshot) with clear descriptions, providing 100% coverage. The description's phrase 'provided element' adds no information beyond what the schema already states, so it meets the baseline.

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 ('hover') and the target ('provided element'), using a specific verb and resource. This distinguishes it from sibling tools like 'click' and 'drag' which perform different mouse actions.

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?

There is no guidance on when to use this tool versus alternatives. The description does not mention any prerequisites, scenarios, or alternative tools, leaving the agent without context on choosing this over other mouse interactions.

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

A4/5.0
Behavior3/5

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

The readOnlyHint annotation already establishes safety. The description adds the useful scoping detail that messages are only since the last navigation, but it does not disclose return format, pagination edge cases, or whether preserved messages are included by default (parameters cover that). 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 a single, front-loaded sentence that immediately states the action and scope. No filler words or redundant information, earning it a top score.

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 read-only listing tool with full schema coverage and an annotation, the description covers the core purpose and data scope. It lacks explicit mention of alternatives or return shape, but the schema's parameter descriptions and the 'list' verb are sufficient for most use cases. Could be more complete by naming related tools, but overall solid.

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 each parameter (types, pageIdx, pageSize, includePreservedMessages) has a clear semantic in the schema. The description adds no additional parameter-level meaning beyond the word 'all', so the 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 uses a clear verb ('List'), specifies the resource ('console messages'), and scopes it precisely ('for the currently selected page since the last navigation'). This distinguishes it from siblings like get_console_message, which focuses on a single message.

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 gives clear context on when to use the tool: for a selected page's console messages since navigation. However, it does not explicitly mention alternatives or exclusions, such as using get_console_message for a single message, so it stops short of a 5.

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

list_network_requestsA
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

A4.3/5.0
Behavior4/5

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

readOnlyHint is already true, so the read-only nature is covered by annotations. The description adds valuable behavioral context beyond that: the scope is limited to the currently selected page and only since the last navigation. No hidden side effects or exclusions are disclosed.

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, immediately identifies the action and resource, and contains no superfluous wording or repetition of schema information.

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

Completeness5/5

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

With full schema coverage, a read-only annotation, and a precise scope statement, the description is sufficient for an agent to decide when and how to invoke the tool. The list return type is implied by 'List all requests,' and no output schema is needed.

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 describes all four parameters with 100% coverage, so the description does not need to add parameter details. It does not go beyond the schema, but the baseline of 3 is appropriate because the schema is complete.

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 uses a specific verb 'List' and names the resource 'network requests' with a clear scope: 'for the currently selected page since the last navigation.' This directly distinguishes it from the sibling 'get_network_request' (single request retrieval).

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 context is clear: it operates on the currently selected page and covers requests since the last navigation. However, it does not explicitly mention alternatives or when not to use it, though the sibling distinction is implied.

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

A4.2/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's 'Get a list' aligns with a read operation. It adds scope by specifying 'pages open in the browser,' but does not elaborate on return format, ordering, or whether it includes all tabs/windows. This adds moderate context above 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?

A single, direct sentence with no filler. Front-loaded with the action and target.

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 no params and a read-only hint. The description conveys the core purpose. However, without an output schema, it does not state what the list contains (e.g., page titles, URLs), which would be useful for an agent to decide whether to call it. Still, for a basic list operation, it's adequate.

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?

The tool has zero parameters, and the schema shows 100% coverage (empty object). The description does not need to explain parameters, and the baseline for 0 params is 4. No additional parameter info is required.

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 uses a specific verb 'Get a list' and clearly identifies the resource 'pages open in the browser.' It distinguishes from sibling tools like 'select_page' and 'navigate_page' by focusing on enumeration rather than selection or navigation.

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 usage when the agent needs to discover open browser pages. However, it does not explicitly mention when to prefer this over alternatives like 'select_page' or 'navigate_page,' though the difference is inferable. Context is clear, but exclusions are not stated.

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

new_pageB

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

B3.2/5.0
Behavior2/5

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

Beyond the readOnlyHint false annotation, the description adds only the default URL behavior. It fails to disclose important side effects such as bringing the new tab to focus, background opening, or the isolated context feature, which are relevant for a mutating action.

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 short and front-loaded, with the core action stated first. However, the second sentence is problematic due to contradicting the required URL, so it does not fully earn its place, though the overall structure is concise.

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 four parameters and no output schema, this description is notably incomplete. It lacks information about the return value, the effect on the current page, background handling, and isolated contexts, leaving the agent with insufficient behavioral context.

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 description introduces confusion by suggesting the URL can be omitted ('Use project URL if not specified otherwise'), while the schema marks url as required. This contradictory guidance undermines parameter understanding rather than adding value. No other parameters are addressed.

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's function with a specific verb 'open' and resource 'new tab', and explains the URL loading behavior. This effectively distinguishes it from siblings like navigate_page, which likely operates on the current tab.

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 a new tab is needed, and the project URL fallback provides some context. However, it does not explicitly mention alternatives or when not to use this tool, leaving some ambiguity.

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.8/5.0
Behavior3/5

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

The readOnlyHint annotation already indicates a safe read operation. The description adds context about the source (insight set from a trace recording) but does not disclose additional behavioral traits such as return format, error handling, or side effects. It adds some value beyond annotations but not rich 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, well-structured sentence that immediately conveys the purpose. It is concise, front-loaded with the verb, and contains no unnecessary filler or repetition.

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 simple tool with two well-documented parameters and a read-only annotation, the description provides sufficient context about the tool's role in the performance analysis workflow. It could be improved by mentioning the expected output format, but the absence of an output schema and the tool's straightforward nature make the current description reasonably 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?

Schema description coverage is 100%, with both parameters (insightSetId and insightName) clearly documented in the input schema. The tool description does not add any extra parameter semantics beyond what the schema already provides, 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 tool's function: providing more detailed information on a specific Performance Insight. It specifies the resource (Performance Insight of an insight set) and the context (highlighted in a trace recording), which distinguishes it from sibling 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?

The description implies when to use the tool (after a trace recording, to get details on a highlighted insight) but does not explicitly mention alternatives or exclusions. There is no direct comparison to other performance tools, so guidance is implied rather than explicit.

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

performance_start_traceA

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

A4/5.0
Behavior3/5

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

With readOnlyHint=false already indicating the operation is not read-only, the description adds minimal behavioral context. It does not warn about side effects like the automatic reload (which is covered in the schema but not the description). It mentions what insights can be gained, but not what the trace does to the page or runtime. Given annotations carry the safety profile, 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 two short sentences, front-loaded with the verb and resource. The second sentence explains the purpose without waffling. Every word adds value, and it is succinct.

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 a start-trace action with well-documented parameters and no output schema. The description covers the core trigger and use case. It does not explicitly mention the full workflow (start → stop → analyze), but sibling tools imply this, and the schema's reload guidance covers setup. This is nearly complete for selection and invocation, though it could mention stopping the trace.

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% and each parameter has a detailed description, including usage guidance for `reload` and `filePath`. The description itself does not explain parameters, but the schema fulfills that burden. Therefore, a baseline score of 3 is appropriate since the tool description adds no param-specific info beyond what the schema 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 action ('Start a performance trace') and the target resource ('the selected webpage'), and it differentiates from sibling tools like performance_stop_trace and performance_analyze_insight by focusing on initiation. The added use case (Core Web Vitals, page load speed) reinforces its purpose.

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 provides clear context on when to use the tool: 'Use to find frontend performance issues, Core Web Vitals...' It does not explicitly mention when not to use it or name alternative tools, but the purpose is specific enough to guide selection. It could improve by referencing complementary tools like performance_stop_trace.

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

A4/5.0
Behavior3/5

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

Annotations provide readOnlyHint=false, indicating a mutating action. The description adds context around the active trace but does not disclose failure conditions (e.g., no active trace) or what happens to trace data without a filePath.

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, direct sentence that conveys the action with no 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?

The tool has one optional parameter and no output schema. The description covers the core action and the schema explains the parameter; however, it does not specify default behavior when filePath is omitted.

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 the filePath property described in detail. The description does not add parameter-specific information, so it meets the baseline for high schema coverage.

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

Purpose5/5

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

The description uses a specific verb ('Stop') and a clear resource ('active performance trace recording') with a scope ('selected webpage'). This clearly defines the tool's action and distinguishes it from sibling performance_start_trace.

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 clearly indicates the context (stopping an active trace on the selected page). It does not explicitly name alternatives or exclusions, but the context is clear enough that an agent would know to use this after starting a trace.

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/5.0
Behavior2/5

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

Annotations only include readOnlyHint: false, indicating a mutating action, but the description does not add behavioral details such as event firing, focus requirements, side effects, or return behavior. The description adds usage context but no 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 two concise sentences, front-loading the purpose and then providing usage guidance. Every sentence earns its place, with no redundancy or unnecessary detail.

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 two parameters and no output schema, the description adequately covers purpose and when to use it. However, it omits any mention of return values or post-conditions, which could be relevant given the optional includeSnapshot parameter, though the schema covers that parameter's existence.

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 both parameters (key and includeSnapshot) are fully described in the JSON schema. The tool description adds no extra parameter-level 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?

Description clearly states the tool presses a key or key combination, which is a specific action on a specific resource. It also distinguishes from sibling tools like fill by explicitly mentioning keyboard shortcuts and special key combinations, 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 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 the tool: 'Use this when other input methods like fill() cannot be used (e.g., keyboard shortcuts, navigation keys, or special key combinations).' It names an alternative (fill) and lists concrete use cases.

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.8/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=false, so the mutation nature is known. The description adds that it resizes the 'window' rather than content, but does not disclose potential side effects (e.g., triggering resize events, requiring page selection, or affecting layout). With annotations present, 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 a single, front-loaded sentence with no redundant words. It efficiently conveys the tool's purpose without wasting space.

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 two parameters, full schema coverage, and an annotation set, the description is mostly sufficient. It lacks units (e.g., pixels) and the prerequisite of selecting a page, but these are minor given the low complexity and presence of sibling tools like select_page.

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 descriptions for width and height ('Page width', 'Page height'). The tool description adds no additional semantic detail beyond 'specified dimension', so it does not exceed the baseline for well-documented schemas.

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 a specific action ('Resizes') and a specific resource ('selected page's window') with an outcome ('so that the page has specified dimension'). It is distinct from all sibling tools, as none other mention resizing.

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 a prerequisite (a 'selected page') but does not explicitly state when to use this tool vs alternatives, nor mention any exclusions or alternative tools. This is implied usage rather than clear guidance.

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

select_pageA
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

A3.7/5.0
Behavior3/5

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

The description adds a useful behavioral note—that selecting a page sets it as a context for subsequent calls—which goes beyond the readOnlyHint annotation. However, it does not disclose whether the selection persists across calls, whether bringToFront has any side effects on the browser, or any limitations. The readOnlyHint is consistent with the tool's purpose, so there is no contradiction.

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 filler or redundancy. It front-loads the core purpose immediately and earns every word, making it highly efficient.

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 (2 params, no output schema, simple annotations), the description is mostly adequate. However, it lacks important usage context such as when to select a page before other actions, how the selection affects sibling tools, and whether the selection persists. These gaps make it slightly incomplete for an agent deciding how to sequence calls.

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 schema already provides descriptions for both pageId and bringToFront, covering 100% of the parameters. The tool description does not add parameter-specific information, but the phrase 'context for future tool calls' gives a small amount of context to pageId, implying it becomes the active page target. This is enough to merit the 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?

The description clearly states the action (select), the resource (a page), and the purpose (as a context for future tool calls). This distinguishes select_page from sibling tools like new_page, close_page, and navigate_page, which have different operations on pages.

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 phrase 'as a context for future tool calls' implies that select_page should be used before other tools that operate on a page, but it does not explicitly state when to use it or name alternatives. The schema's pageId description suggests calling list_pages for valid IDs, but there is no direct guidance on when not to use this tool or how it compares to other page-related actions.

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

A4/5.0
Behavior3/5

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

Annotations indicate readOnlyHint: false, meaning the tool performs a write operation. The description adds that it captures a heap snapshot of the selected page, providing some context about the operation's effect. However, it does not disclose potential side effects like file creation details or whether the page is paused, so transparency 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 two sentences, front-loaded with the primary action, and contains no unnecessary content.

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 one parameter and annotations present. The description covers purpose and usage context, making it reasonably complete for an agent to decide when to use it, though it could benefit from a note about saving the snapshot file.

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 schema fully describes filePath (coverage 100%), so the description does not need to explain it. The description adds no additional parameter info beyond the schema, yielding a 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?

The description clearly states 'Capture a heap snapshot of the currently selected page' – a specific verb and resource. It also mentions the use case for memory analysis, distinguishing it from siblings like take_snapshot or performance tools.

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 provides the intended use case: 'analyze the memory distribution of JavaScript objects and debug memory leaks.' This implies when to use it, though it does not explicitly mention alternatives.

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.1/5.0
Behavior2/5

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

The description adds no behavioral context beyond the bare action. Annotations include readOnlyHint:false, but this is not contradictory; however, neither annotations nor description explain side effects, output format, or limitations.

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 that is clear and front-loaded, with zero unnecessary 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?

Despite five parameters and no output schema, the schema descriptions are thorough. The description is terse but combined with the schema it is largely sufficient. It does not explicitly state return behavior, though the filePath parameter implies default attachment to the response.

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 all parameters with detailed descriptions (100% coverage), so the baseline is 3. The description's phrase 'page or element' adds no extra meaning beyond what the uid parameter already conveys.

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 takes a screenshot of the page or element, using a specific verb and resource. It distinguishes from siblings like take_snapshot by mentioning 'screenshot', but does not explicitly contrast the two tools.

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?

There is no guidance on when to use this tool versus alternatives, no mention of prerequisites, and no exclusions. The description only says what it does, not when to choose it.

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?

The description adds context beyond the readOnlyHint annotation by describing the a11y tree source and the indication of the selected element in the DevTools panel. It does not explicitly address potential write side effects from filePath, but the schema covers that, and the annotation is not contradicted.

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 paragraph with multiple sentences, each carrying useful information. It is slightly verbose but not wasteful, and every sentence contributes to understanding the tool's purpose and usage.

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 absence of an output schema, the description explains what the snapshot contains (element list with uids) and the indication of the selected element, which is sufficient for the tool's purpose. It could mention how to use the uids, but the sibling tools imply it.

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 for both 'verbose' and 'filePath'. The tool description adds no extra parameter semantics, so baseline 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 'Take a text snapshot of the currently selected page' and specifies the source as the a11y tree. It also distinguishes from screenshot by noting preference and describes the unique uid identifiers, differentiating it from memory snapshot.

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 explicitly instructs to 'Always use the latest snapshot' and states 'Prefer taking a snapshot over taking a screenshot,' providing clear preference over an alternative. It does not explicitly mention exclusions, but the guidance is sufficient for typical use cases.

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

A4/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=false, so the description is not required to state mutation. The description adds the precondition of a focused input, but does not disclose potential side effects (e.g., replacing existing text, no focus behavior, or the optional submitKey press) beyond what the schema provides. Minimal extra 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, front-loaded sentence with no wasted words. It efficiently communicates the core action and precondition.

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 two parameters and no output schema, the description is adequate. It specifies the action and the necessary precondition. Minor gaps like submitKey behavior are covered by the schema, so the description is largely sufficient.

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 both parameters are already well-documented. The description adds no additional parameter meaning beyond what the schema provides; baseline 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 using keyboard') and the target resource ('previously focused input'). It distinguishes itself from siblings like fill and press_key by specifying the precondition of a focused input, 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 Guidelines4/5

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

The description conveys a clear usage context: it should be used when there is a previously focused input. It implies the tool is for typing into an already-focused element, but does not explicitly mention alternatives or when not to use it, hence not a perfect 5.

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

upload_fileB

Upload a file through a provided element.

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

B3.1/5.0
Behavior2/5

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

Annotations only provide readOnlyHint=false, which is consistent with 'upload'. However, the description does not disclose side effects, prerequisites, or behavior beyond the act of uploading, such as what happens after upload or any required element type.

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, clear sentence that is appropriately concise and front-loaded. It wastes no words, though it could benefit from additional structured guidance.

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 tool performs a mutating action (upload) with no output schema and minimal description. It does not explain return values, error conditions, or how the element should be identified, making it incomplete for an agent to confidently invoke.

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 fully documents all three parameters with descriptions, so schema coverage is 100%. The description does not add any additional parameter semantics beyond what the schema already provides, warranting the 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?

The description clearly states 'Upload a file through a provided element' with a specific verb and resource. It differentiates from sibling tools like fill or type_text by focusing on file upload.

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?

There is no guidance on when to use this tool versus alternatives like fill or fill_form. The description only states the action without context, prerequisites, or exclusions.

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

wait_forA
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

A3.8/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=true, covering safety. The description adds that the wait occurs on the selected page, which is useful context, but does not disclose behavior on timeout or error conditions. 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?

The description is a single, front-loaded sentence with no unnecessary words, making it highly concise and easy to parse.

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 synchronization tool with a well-documented schema and no output schema, the description adequately conveys the core behavior. It lacks details about timeout outcomes, but that is not critical for selecting or invoking the tool.

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 fully documents both parameters with 100% coverage, so the description adds no additional parameter meaning. Baseline score of 3 applies due to high schema coverage.

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 waits for specified text to appear on the selected page, using a specific verb and resource. This distinguishes it from sibling action tools like click, hover, and type_text.

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 intended use is implied by the verb 'wait', but there is no explicit guidance on when to use this tool vs alternatives, nor any exclusions or conditions. Context is clear but not elaborated.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updatesv0.2.2
    • Changedclose_page2 fields changed
      • addedInput schema / properties / pageId
        Added value: +{
        +  "description": "The ID of the page to close. Call list_pages to list pages.",
        +  "type": "number"
        +}
      • changedInput schema / required
        Previous value: -[]New value: +[
        +  "pageId"
        +]
    • Changednew_page1 field changed
      • addedInput schema / properties / isolatedContext
        Added value: +{
        +  "description": "If 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.",
        +  "type": "string"
        +}
    • Changedselect_page2 fields changed
      • addedInput schema / properties / pageId
        Added value: +{
        +  "description": "The ID of the page to select. Call list_pages to get available pages.",
        +  "type": "number"
        +}
      • changedInput schema / required
        Previous value: -[]New value: +[
        +  "pageId"
        +]
  2. 29 tool updatesv0.1.0
    • First observedclick
    • First observedclose_page
    • First observeddrag
    • First observedemulate
    • First observedevaluate_script
    • First observedfill
    • First observedfill_form
    • First observedget_console_message
    • First observedget_network_request
    • First observedhandle_dialog
    • First observedhover
    • First observedlighthouse_audit
    • First observedlist_console_messages
    • First observedlist_network_requests
    • First observedlist_pages
    • First observednavigate_page
    • First observednew_page
    • First observedperformance_analyze_insight
    • First observedperformance_start_trace
    • First observedperformance_stop_trace
    • First observedpress_key
    • First observedresize_page
    • First observedselect_page
    • First observedtake_memory_snapshot
    • First observedtake_screenshot
    • First observedtake_snapshot
    • First observedtype_text
    • First observedupload_file
    • First observedwait_for

TDQS

A3.5/5.0

Scored across 29 tools

Disambiguation4/5

Tools have distinct purposes: interaction (click, drag, fill), page management (new_page, close_page), and diagnostics (performance, console, network). Some overlap exists between fill, type_text, and press_key, but descriptions clarify their specific use cases. Snapshot vs screenshot are clearly differentiated.

Naming Consistency5/5

All tools follow a consistent verb_noun snake_case pattern (e.g., list_console_messages, take_screenshot, performance_start_trace). No mixed conventions or vague verbs like 'process' or 'do_thing' are present.

Tool Count4/5

29 tools is on the higher end but appropriate given the broad scope of Chrome DevTools functionality covered (interaction, performance, network, memory). Each tool serves a distinct need, and the count is justified even if slightly above the typical 15-tool comfort zone.

Completeness4/5

The surface covers core DevTools workflows: page navigation, element interaction, script evaluation, console/network inspection, performance tracing, and screenshots. Minor gaps exist (e.g., cookie management, network interception) but can be worked around via evaluate_script.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers