Chrome Ops MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Chrome Ops MCPreload the unpacked extension and show console errors"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Chrome Ops MCP
Developer-focused MCP + persistent local host + Chrome Manifest V3 extension for Chrome operations that ordinary browser automation does not expose well.
Chrome Ops is for AI coding agents that need to inspect and operate Chrome as a developer, not just click web pages. It lets an agent read DevTools Console/Network data, inspect response bodies and streams, evaluate JavaScript, and manage unpacked Chrome extensions during an edit-test-debug loop.
Initial capabilities: tab discovery, CDP attach/detach, Console/Log capture, Network/WebSocket/EventSource capture, Runtime.evaluate, installed-extension inventory/enable-disable/uninstall, and selected per-site content settings.
This project targets developers using AI coding agents. The intended loop is edit -> reload -> inspect Console/Network -> fix -> repeat, including Chrome-extension development.
Client adapters are documented in docs/CLIENTS.md. Codex, Cursor, and the local Grok Build CLI use stdio MCP. Chrome Ops never needs to expose its localhost Host ports for these clients.
Network event observations are redacted before they cross the extension boundary: Cookie, Set-Cookie, Authorization, proxy authorization, and cookie value fields are replaced with [REDACTED]. Response bodies requested explicitly with network_response_body are not content-scanned for arbitrary secrets; see SECURITY.md.
Development
npm install
npm run build
npm startOn Windows, the current developer baseline is PowerShell 7+. npm run setup:windows builds the project and registers Chrome Ops Host as a per-user logon scheduled task. The Host owns the persistent Chrome connection; short-lived stdio MCP processes connect to it on localhost. It does not modify an MCP client's configuration unless that client is explicitly supported/detected.
On macOS, npm run setup:macos builds the Swift helper and installs a per-user LaunchAgent for the same Host. When an unpacked Bridge is already connected, setup also updates it from this installation and confirms that the new worker reconnects. The command is safe to repeat; npm run uninstall:macos removes the LaunchAgent and stops its Host. Neither command removes Chrome's bridge extension or client registrations. The Host logs to ~/Library/Logs/ChromeOps/.
Related MCP server: Chrome DevTools MCP
Quick start (macOS alpha)
Requirements: macOS with the Swift toolchain (swift), Chrome, Node.js 22+, and Chrome Developer mode. Give Accessibility permission to the app that runs Chrome Ops when macOS requests it. npm run doctor reports that authorization; the Swift helper does not use Screen Recording APIs.
git clone https://github.com/kitepon/chrome-ops-mcp.git
cd chrome-ops-mcp
npm ci
npm run setup:macos
npm run doctorOpen chrome://extensions, enable Developer mode, choose Load unpacked, and select this package's extension/ directory. Keep Chrome open for developer-extension operations. Check that npm run doctor reports host.connected: true after the bridge connects. Register each installed MCP client you intend to use:
npm run register:codex
npm run register:cursor
npm run register:grokEach registration command verifies the Host and preserves a backup before changing an existing client configuration. Restart or reload the client if it does not discover the new MCP server immediately. npm run doctor reports the LaunchAgent, Host, native helper permission, and client registration state. Load the Bridge once in the intended Chrome profile. If multiple Bridge profiles connect at the same time, Chrome Ops reports the ambiguity and waits for one profile to remain connected.
Quick start (Windows alpha)
Requirements: Windows 11, Chrome, Node.js 22+, PowerShell 7+, and Chrome Developer mode. The Windows helper is validated with Japanese and English Chrome UI labels.
npm install
npm run setup:windows
npm run doctorOpen chrome://extensions, enable Developer mode, choose Load unpacked, and select extension/ from this package/repository. Then register the MCP with one or more detected clients:
npm run register:codex
npm run register:cursor
npm run register:grokRestart/reload the MCP client after registration if it does not pick up the new server immediately.
Core MCP tools
DevTools:
devtools_attach,console_read,runtime_evaluate,page_reloadNetwork:
network_requests,network_failures,network_response_body,websocket_messages,eventsource_messagesExtensions:
extensions_list,extension_get,extension_set_enabledUnpacked extension development:
extension_dev_load,extension_dev_reload,extension_dev_errors,extension_dev_removeChrome content settings:
content_setting_get,content_setting_set
The extension connects only to the local Chrome Ops Host on 127.0.0.1.
Chrome 116+ keeps extension service workers alive when WebSocket traffic is active; the bridge sends a 20-second heartbeat. Active chrome.debugger sessions also keep the worker alive on Chrome 118+.
Verified locally
MCP stdio client -> server -> extension WebSocket connection
Live Chrome tab enumeration
chrome.debugger.attach()with protocol1.3Runtime.evaluateagainst a real HTTP tabConsole/Log capture
Network capture after
Page.reloadNetwork credential redaction
Persistent Host survives individual stdio MCP client lifetimes
Windows helper: Load unpacked, exact-ID reload, Errors extraction, remove + postcondition verification
macOS helper: Load unpacked, exact-ID reload, Errors extraction, remove + postcondition verification on a disposable fixture
macOS LaunchAgent: setup, repeat setup, restart, uninstall, and reinstall with stdio MCP reconnection
Known boundary
Chrome's public chrome.management extension API can inspect installed extensions but does not expose arbitrary unpacked-directory loading or another extension's developer reload action. Chrome Ops uses deliberately narrow PowerShell 7 + Windows UI Automation and Swift + macOS Accessibility helpers for those developer-mode operations. The helpers are not generic shell/UI automation APIs.
v0.2 alpha limitations
Chrome Developer mode must already be enabled for unpacked-extension operations.
Developer-management UI automation is currently validated against Japanese and English Chrome labels; other UI languages are not yet guaranteed.
The Chrome Ops extension itself must be loaded manually once during initial setup. Subsequent
setup:macosruns update an already connected unpacked Bridge.Client registration adapters currently cover Codex, Cursor, and Grok Build. See
docs/CLIENTS.md.On macOS, each unpacked-extension developer operation prepares its own management tab in the connected Bridge profile. Load verifies the new development extension through Chrome's management API before returning
verifiedLoaded: true. Reload reports UI submission; check an observable version or behavior change. Remove verifies absence through Chrome's management API. The Windows helper contract remains unchanged.macOS was verified on one Mac and Chrome installation. A login/logout cycle, revoked Screen Recording permission, and a fresh Windows machine were not tested in this macOS pass.
Available Tools
24 toolschrome_statusB
Check whether Chrome Ops Host and the Chrome extension are connected.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose all behavioral traits. It only says it 'checks' connectivity, implying a read-only operation, but it does not specify the return format, whether it might block, or any side effects. It also does not clarify what 'connected' means (e.g., both host and extension present) or how to interpret the result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that directly states the tool's purpose. There is no fluff or redundant information, and the key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters and no output schema, the description is minimal. It does not explain what the returned value means (e.g., boolean vs. status string), nor does it mention error conditions. Given the simplicity, it is borderline adequate, but a note about the result format would make it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema coverage is 100% (trivially). Per the rubric, a baseline of 4 is appropriate when there are no parameters; the description correctly does not add unnecessary parameter information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Check whether') on a specific resource ('Chrome Ops Host and the Chrome extension are connected'). It is clear and distinct from sibling tools, which are all action-oriented (e.g., tabs_list, runtime_evaluate). It does not explicitly contrast with alternatives but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, no mention of prerequisites or exclusions. It is a single factual statement with no context about typical use cases or scenarios where another tool would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
console_readC
Read captured console/log entries for a tab.
| Name | Required | Description | Default |
|---|---|---|---|
| clear | No | ||
| tabId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden of behavioral disclosure. It only says 'read', implying a non-destructive operation, but does not mention the 'clear' parameter or its side effects, nor any requirements like attached devtools or return format. This is insufficient for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no redundant words, front-loading the verb and resource. It achieves high conciseness and is easy to parse, with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is too sparse to be complete: it lacks parameter explanations, return format, and any preconditions such as requiring devtools to be attached. For a tool with 2 parameters and no output schema, this is inadequate for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only implies tabId via 'for a tab' but does not explain the 'clear' parameter at all, leaving its semantics undocumented. This fails to provide necessary parameter meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads console/log entries for a tab, using the verb 'read' with a specific resource. It differentiates from network tools by specifying console/log, though it does not elaborate on entry types or whether it includes errors/warnings, so it is clear but not fully detailed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like network_read or network_requests. The description only states what it does, not when to prefer it or prerequisites such as devtools_attach, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
content_setting_getC
Get an effective per-site Chrome content setting.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| primaryUrl | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the action without describing side effects, read-only nature (though 'get' implies it), default behavior, or what happens if the setting is unset. It also does not clarify what 'effective' means (e.g., inherited vs. explicit settings).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that directly states the tool's purpose. It is front-loaded with the action and object, and there is no extraneous text. It is appropriately sized, though it sacrifices detail for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no output schema and no annotations, the description should at least hint at the return format or expected behavior. It does not mention what the tool returns (e.g., the setting value, a boolean, an object), nor any edge cases. For a simple get tool, this is minimal but incomplete for an agent to fully understand the call's result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for parameter meaning. It does not explain 'kind' (which enum values represent) or 'primaryUrl' (what URL format is expected, e.g., scheme required). The schema provides the enum and URI format, but the description adds no additional semantic context, leaving the agent to guess at the purpose of each parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Get an effective per-site Chrome content setting.' It identifies the action and the target object, and the 'per-site' qualifier adds scope. It is distinct from the sibling content_setting_set, though it doesn't name the alternative. The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as content_setting_set or other chrome tools. It does not mention prerequisites, context, or exclusions. The agent is left to infer usage from the tool name and schema alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
content_setting_setC
Set a per-site Chrome content setting using the extension API.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| setting | Yes | ||
| primaryPattern | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It indicates a mutation ('Set') but does not state side effects, whether an existing setting is overwritten, permission requirements, or failure behavior. This is a minimal disclosure with no detail beyond the action itself.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant phrasing. It states the action, scope, and mechanism efficiently. It is under-specified in other dimensions, but as far as conciseness goes, it wastes no words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with three required parameters, no annotations, and no output schema, the description is far too thin. An agent cannot determine the format of primaryPattern, the significance of each setting value, whether changes are reversible, or what the response looks like. This is inadequate for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description needs to compensate for the parameters. It only hints at 'per-site' (primaryPattern) and 'content setting' (kind), but does not explain the 'setting' parameter or the meaning of its enum values. The enums in the schema are self-explanatory only to a degree, but the description adds little beyond what the property names already convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Set') with a concrete resource ('per-site Chrome content setting') and mechanism ('extension API'). It clearly communicates the tool's core action, though it does not explicitly contrast with the sibling content_setting_get or other alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives like content_setting_get. The description implies a write operation but does not mention when to prefer it, what prerequisites exist, or how it differs from related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtools_attachB
Attach Chrome DevTools Protocol to a tab and start collecting Console, Log and Network events.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It states that it starts event collection, but does not disclose side effects such as potential performance impact, whether repeated attachment is allowed, whether it requires an active tab, or what happens on failure. There is no mention of prerequisites like needing to first list tabs to obtain a tabId, nor any warning about resource cleanup. This is a significant gap for a state-changing tool that initiates a collection process.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the action and its immediate consequence. It is not verbose, and every word contributes to the core meaning. However, it is so terse that it omits important usage and behavioral details that would not bloat it significantly if added. It earns a 4 for being concise and well-structured, but it sacrifices completeness for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is part of a clear workflow: attach, read events, detach. The description gives no hint of this flow, nor does it mention the availability of sibling read tools (console_read, network_read) that depend on this attachment. It also lacks information about the return value (whether it returns success/failure) and any prerequisites. Given that there is no output schema and no annotations, the description leaves the agent with only a surface-level understanding, which is insufficient for correct usage in a multi-step process.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for its single parameter tabId, and the tool description does not mention the parameter at all. While the name and context imply that tabId identifies the target tab, the description fails to explain how to obtain it or any constraints beyond the schema's numeric bounds. This forces the agent to infer the parameter's meaning, which is risky in a workflow with sibling tools like tabs_list that likely provide the ID. The description should at least hint that tabId comes from tabs_list.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (attach), the resource (Chrome DevTools Protocol to a tab), and the immediate effect (start collecting Console, Log, and Network events). This distinguishes it from sibling tools like devtools_detach (opposite action) and console_read/network_read (which presumably consume the collected events). The verb and resource are specific, leaving no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that this tool should be used before reading events, but it never explicitly states when to use it versus alternatives, nor does it mention prerequisites or exclusions. For example, it does not say 'Use this before console_read or network_read' or warn against attaching to an already-attached tab. The usage context is only inferred from the 'start collecting' phrasing, so it is adequate but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
devtools_detachB
Detach Chrome DevTools Protocol from a tab.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior, but it only names the action. It does not say that detaching ends an active DevTools session, whether the operation is idempotent, or how it affects subsequent devtools-related tools.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler or repetition. For a simple one-parameter tool, this is appropriately concise and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The basics are present: what the tool does and which tab it targets. However, for a state-changing tool with no annotations, it would benefit from stating that the tab must have an attached DevTools session and what happens to CDP operations after detachment. The gap is moderate because the tool is otherwise very simple.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single required parameter tabId is reasonably self-explanatory from its name and type. However, schema description coverage is 0% and the description does not explicitly explain that tabId identifies the currently attached tab, so the agent gets little added semantic guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Detach') and names the exact resource ('Chrome DevTools Protocol from a tab'). It unambiguously identifies the operation and is the clear inverse of the sibling devtools_attach, so an agent can distinguish it without inspecting the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to detach versus any alternative, nor does it mention prerequisites such as first attaching DevTools. The intended context is only implied by the verb and the sibling tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eventsource_messagesA
Read captured Server-Sent Events (EventSource) messages for a tab.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description conveys that the tool is read-only and that messages are 'captured', which implies non-destructive access to stored data. However, with no annotations, it leaves out important behavioral context such as whether capture must be active, whether reading consumes/clears messages, or any access prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence with zero filler. The important scoping detail ('for a tab') is present and the sentence is immediately understandable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool, the core call surface is present. Yet with no output schema and no annotations, the expected message shape, capture lifecycle, and any required setup (such as devtools_attach) are left unspecified, so the context is only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description says the messages are 'for a tab', which lets an agent infer that the single parameter tabId identifies the target tab. But schema description coverage is 0%, and the description does not explicitly define tabId's meaning or expected values beyond the schema's raw integer bounds.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Read'), a specific resource ('captured Server-Sent Events (EventSource) messages'), and a scope ('for a tab'). It clearly distinguishes this from sibling tools like websocket_messages and network_read by explicitly identifying EventSource/SSE.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as websocket_messages, network_read, or console_read. It also does not mention prerequisites like needing to attach devtools first or any conditions under which this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extension_dev_errorsA
Open the Errors view for an unpacked extension by exact extension id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of explaining side effects and edge behavior. It only says 'Open the Errors view' without disclosing what happens for invalid IDs, whether the tool requires a previously loaded extension, or whether it changes state beyond opening a view.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that conveys the action, target, and key constraint with no filler. It earns its place efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and has one required parameter, but the absence of any behavioral notes and output schema leaves some uncertainty about return values and error conditions. It is adequate for a minimal 'open view' action, but it could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter 'id' has no schema description, and schema_description_coverage is 0%. The description partially compensates by calling it an 'exact extension id' and by restricting it to unpacked extensions, but it does not clarify the meaning of the regex pattern or provide additional context beyond what the parameter name implies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('Open'), a specific resource ('Errors view'), and the exact input ('unpacked extension by exact extension id'). This clearly distinguishes it from sibling tools like extension_dev_load, extension_dev_reload, and extension_get.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when you need to see the Errors view for an unpacked extension. However, it does not explicitly describe exclusions, prerequisites, or alternatives among the many extension-related siblings, so an agent must infer the intended use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extension_dev_loadB
Load an unpacked Chrome extension directory through the restricted native helper. The directory must contain manifest.json.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It reveals a prerequisite (manifest.json must exist) but does not mention side effects, whether loading replaces an existing extension, errors, return values, or what 'restricted native helper' implies. The operation's consequences are largely undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. It front-loads the action and object, then immediately states the critical prerequisite. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter load operation, the description covers the core purpose and an important requirement, making it minimally viable. However, with no output schema and no annotations, it leaves out expected outcome, error conditions, and how this tool relates to sibling extension tools such as extension_dev_reload or extension_dev_errors.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must add meaning to the 'path' parameter. It does clarify that the path points to an unpacked extension directory and must contain manifest.json, which is valuable. However, it does not specify path format, absolute vs relative paths, or error behavior when the directory is invalid.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Load') and identifies the exact resource ('an unpacked Chrome extension directory'), which clearly distinguishes it from sibling operations like extension_dev_reload or extension_dev_remove. The added qualifier about the restricted native helper and manifest.json requirement strengthens the purpose without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance about when to use this tool versus alternatives such as extension_dev_reload or extension_dev_remove. The manifest requirement is a useful precondition, but the description does not state when this initial load should be chosen over the sibling tools or what to do if the extension is already loaded.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extension_dev_reloadA
Reload an installed unpacked extension by exact extension id through Chrome's extension-management UI.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the mechanism ('through Chrome's extension-management UI') and the prerequisite ('installed unpacked'), but it does not disclose the runtime side effects of reloading, error behavior for invalid or missing ids, or whether the operation is asynchronous.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that states the action, object, qualifier, and mechanism with no filler. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool, the description covers the core context: reload an installed unpacked extension by exact id via the extension-management UI. It is nearly complete, though a bit more detail about side effects or return behavior would make it fully self-sufficient given the absence of annotations and output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides only the pattern for 'id', so the description adds useful meaning by specifying it is the exact extension id. Still, with 0% schema description coverage, the description only lightly compensates and does not mention how to obtain the id or what happens with a non-matching extension.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Reload') and a specific resource ('installed unpacked extension') with an exact-id qualifier. This clearly differentiates it from sibling tools like extension_dev_load, extension_uninstall, and extension_set_enabled.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it: when an unpacked extension is already installed and needs reloading by exact id. However, it does not explicitly contrast this with loading, enabling, or removing extensions, so the agent must infer the decision boundary from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extension_dev_removeA
Remove an unpacked extension by exact extension id and verify it disappeared from chrome.management.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the verification step and the requirement for an exact id, but it does not mention side effects, failure modes, permissions, or return behavior. It adds some context but lacks depth for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys the action, target, and verification without any redundancy. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description covers the core action and the parameter requirement. It could benefit from noting return behavior or error handling, but given the simplicity, it is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It explains that the 'id' must be an exact extension id, which adds meaning beyond the schema pattern. However, it does not explain how to obtain the id or any additional constraints beyond 'exact'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (remove), the target (unpacked extension by exact id), and the verification step. It distinguishes itself from siblings like extension_uninstall by specifying 'unpacked extension' and the verification behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. While 'unpacked extension' hints at a development context, there is no mention of extension_uninstall or other extension tools, nor any when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extension_getB
Get metadata for one installed extension, including install type and enabled state.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states that it 'gets metadata' but does not disclose potential error conditions (e.g., extension not found), whether any side effects occur (likely none, but not stated), authentication requirements, or the exact structure of the returned metadata. This is a significant gap for a tool that may be called on arbitrary IDs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently conveys the core purpose. There is no fluff or redundancy, and every word earns its place. It is appropriately concise for a simple get-by-ID tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with only one parameter, and the description gives the essential purpose. However, without an output schema or annotations, the agent lacks information about the response format, error handling, and how to obtain the ID. For a tool of this simplicity, the description is barely adequate but leaves some gaps that could impact correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has a single required parameter 'id' with type string and no description (schema coverage 0%). The description mentions 'one installed extension' but does not elaborate on what 'id' refers to (e.g., extension ID format, where to find it, or constraints like being non-empty). It adds minimal meaning beyond the schema, leaving the agent to guess the parameter's semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get'), a resource ('metadata for one installed extension'), and enumerates the key fields ('install type and enabled state'). This clearly differentiates it from siblings like extensions_list (which lists all) and extension_set_enabled (which mutates state). The purpose is unambiguous and specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for a single extension by ID, which distinguishes it from extensions_list, but it does not explicitly mention when to prefer this tool over siblings or any exclusion criteria. There is no explicit guidance on prerequisites (e.g., how to obtain the ID) or alternatives, leaving some inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extension_set_enabledA
Enable or disable an installed extension. Chrome may require a user gesture/confirmation.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| enabled | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the behavioral disclosure burden. It transparently notes 'Chrome may require a user gesture/confirmation,' a non-obvious behavioral trait. However, it does not cover outcomes, failure modes, or whether the change is persistent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, both earning their place. The core purpose is front-loaded and the important user-gesture warning follows immediately. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter setter, the description covers the central action and a key environmental constraint, but lacks fallback behavior, return/error details, and any instruction on obtaining the extension ID. Given no annotations or output schema, this leaves moderate gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The 0% schema description coverage means the description must compensate for parameter meaning. It clarifies that 'enabled' maps to the enable/disable action and 'id' refers to an installed extension, but provides no further detail about where the ID comes from or the exact semantics of true/false.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the specific verb 'Enable or disable' with the resource 'installed extension'. This clearly distinguishes it from sibling tools that list, get, or uninstall extensions. The user-gesture caveat 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through its verb phrase ('Enable or disable') but does not explicitly state when to prefer this over alternatives or mention a prerequisite like obtaining the extension ID via extensions_list. No exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extensions_listA
List installed Chrome extensions/apps including enabled and install type.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden of behavioral disclosure. The verb 'List' does imply a read-only, non-mutating operation, and the mention of 'enabled and install type' hints at the kind of information returned. However, the description does not explicitly state whether there are any side effects, permission implications, or limits on what 'installed' covers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, efficient sentence that front-loads the primary action and resource before adding the key qualifiers. Every word earns its place, and there is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple no-parameter list tool with no output schema, the description provides the essential scope and indicates what is included in the result. It does not explicitly describe the return shape, but that is a minor omission given how simple and low-risk this operation is.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the empty schema fully covers that fact, so there is nothing for the description to add. Per the baseline for a zero-parameter tool, this is fully adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' with the clear resource 'installed Chrome extensions/apps', and adds useful scoping details ('including enabled and install type'). It is immediately distinguishable from sibling tools like extension_get and extension_set_enabled, which target individual extensions rather than listing all of them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit or implicit guidance about when to prefer this tool over alternatives such as extension_get, extension_set_enabled, or devtools-related tools. There is no mention of when this list is needed, or when another extension-related sibling would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extension_uninstallB
Request uninstall of another extension. Chrome always presents confirmation for another extension.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It does reveal an important side-effect: that Chrome will show a confirmation dialog, implying the uninstall may not complete without user approval. However, it does not disclose whether the tool returns a status, whether errors occur if the extension is not found, or whether the operation is reversible (it likely isn't). The lack of annotations makes this a moderate gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, two sentences, and the key behavioral note (confirmation prompt) is front-loaded in the second sentence. There is no filler, and it conveys the essential information efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with a single parameter, no output schema, and no annotations, the description is adequate but incomplete. It covers the action and the confirmation side-effect, but it does not mention potential errors (e.g., invalid ID, non-installed extension), return semantics, or whether the uninstall request is asynchronous. The complexity is low, so this is a minor gap, but with no annotations, the agent lacks full guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one required 'id' parameter with no description, and schema description coverage is 0%. The description does not explicitly explain what the 'id' refers to (the extension ID), but it is clear from context that 'id' is the extension's identifier. Since there is only one parameter and the tool name makes its purpose obvious, the description adds little beyond the schema, but it doesn't leave a critical gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (request uninstall) and the resource (another extension), and it implies the tool operates on a single extension via the 'id' parameter. It distinguishes this from other extension operations (list, get, enable, dev-load) by focusing on uninstall. However, it could be more explicit that it does not uninstall the current extension or that it is for third-party extensions only.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives partial guidance by noting that Chrome always presents a confirmation prompt, which warns the agent that uninstall may not be immediate or may require user interaction. But it does not state when to use this tool vs alternatives like extension_set_enabled (for toggling) or extension_dev_remove (for development extensions). There is no explicit 'when-not-to-use' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
network_failuresB
List only failed HTTP requests or responses with status >= 400.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | ||
| failuresOnly | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does convey that the operation is a read-only listing and defines the failure filter, but it omits important behavioral context such as per-tab scoping, whether DevTools attachment is required, and what the returned list contains beyond the status threshold.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with zero filler. It states the tool's purpose and its main filtering condition as economically as possible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description needs to explain return shape, tab scoping, and any prerequisites. It only describes the core filter, leaving the required tabId unexplained and return format unspecified. This is not complete enough for confident invocation without relying on external knowledge.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain either parameter. 'tabId' is required but its meaning and role are not mentioned, and 'failuresOnly' is only loosely implied by the word 'failed'. No additional parameter semantics are provided beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and a specific resource ('failed HTTP requests or responses') with an explicit threshold ('status >= 400'). This clearly distinguishes it from siblings like network_requests, which would presumably return all network entries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'only failed' and the status threshold provide clear context for when this tool should be used: when the agent wants failures rather than the full network log. It does not explicitly name alternatives or state when not to use it, but the filter is unambiguous enough for most routing decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
network_readC
Read captured HTTP/WebSocket/EventSource activity. Cookie, authorization, and cookie-value fields are redacted before leaving Chrome.
| Name | Required | Description | Default |
|---|---|---|---|
| clear | No | ||
| limit | No | ||
| tabId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds one meaningful behavioral detail: sensitive fields are redacted before leaving Chrome. However, with no annotations provided, the description carries the full burden, and it does not disclose what the 'clear' parameter does or whether reading has side effects on captured data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. It states the core purpose first and then adds the redaction caveat, both of which earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, no output schema, and three undocumented parameters, the description is too brief. It omits return format, parameter behavior, and the relationship to closely related sibling tools, leaving important gaps for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the three parameters, but it mentions none of them. It does not explain tabId, limit, or clear, leaving the agent without enough semantic information to use them correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: 'Read captured HTTP/WebSocket/EventSource activity.' This clearly identifies what the tool does, though it does not distinguish it from sibling tools like network_requests or websocket_messages, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as network_requests, network_failures, or websocket_messages. The description gives no conditions, exclusions, or mention of sibling tools, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
network_requestsB
List HTTP requests observed since DevTools attach, summarized by request id, URL, method, status and failure state.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states that it lists requests that have been observed since attach, giving a time-bound scope, but it doesn't clarify whether this is a read-only operation (which seems likely), or what happens if no requests are observed. It also doesn't mention any side effects or limitations, such as whether it requires an active DevTools session or if it returns partial data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, front-loading the main action (list HTTP requests) and including key attributes. Every word contributes to meaning, with no filler or repetition. It's appropriately brief for its simple purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description is adequate for basic usage. However, since there's no output schema and no annotations, it doesn't specify the return format in detail, such as whether it returns an array of objects or a summary structure. The context of needing DevTools attached is implicit but could be more explicit, and the 'summarized' aspect is vague. It covers the essentials but leaves small gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only one parameter, tabId, and schema description coverage at 0%, the schema provides only a type and bounds. The description doesn't elaborate on the tabId parameter, but since it is likely obvious that it identifies the tab, the lack of detail is acceptable. The description adds no extra meaning beyond the schema, so it's a baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists HTTP requests, and specifies key attributes (request id, URL, method, status, failure state). It distinguishes from siblings like network_failures (which lists failures) and network_response_body (which gets response bodies) by focusing on a summary of all requests. However, it could be more explicit about the 'summarized' nature, but the verb+resource is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you need an overview of network requests, and the sibling list shows alternatives like network_read for raw events and network_failures for errors. However, it doesn't explicitly state when to use this tool over others, or when not to use it. The context signal that DevTools must be attached is implicit but not stated, which is a minor gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
network_response_bodyB
Get the response body for a captured request id. Use network_requests first to identify the request.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | ||
| requestId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full behavioral disclosure burden. It only says 'Get' without specifying what happens if the request ID is invalid, whether the body is returned as raw text or base64, potential size limits, or error handling. The tool's behavior is largely opaque beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no redundant words. It front-loads the core action and includes the critical usage hint without any fluff, making it highly efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, no output schema), the description is still incomplete. It does not clarify the return type, error cases (e.g., missing request), or any data format expectations. The agent would be left guessing about how to handle the response, making it insufficient for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain the parameters. It only mentions 'requestId' indirectly via 'captured request id' but does not explicitly state that requestId is the identifier from network_requests. The 'tabId' parameter is completely unexplained; the agent would have to infer its purpose from the name alone, which is insufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Get) and the resource (response body) for a given request ID. It distinguishes itself from sibling tools like network_requests (which lists requests) by focusing on the body of a specific request, and the phrase 'captured request id' implies the tool consumes an ID from a prior capture step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs the agent to 'Use network_requests first to identify the request', which provides a clear prerequisite and usage context. It does not mention when not to use it or alternatives, but the instruction is sufficient to guide the agent in the common flow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
page_reloadA
Reload an inspected tab through Chrome DevTools Protocol so subsequent network activity can be captured.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | ||
| ignoreCache | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It does disclose that the reload happens through CDP and requires an 'inspected' tab, which is a useful precondition. However, it does not mention side effects, whether the reload waits for page load, or whether any response is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence that states the action, the mechanism, and the purpose with no filler. The core scoping phrase 'through Chrome DevTools Protocol' is front-loaded, and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is readable and communicates the main purposeaimanera, but completeness suffers because ignoreCache is undocumented and there is no mention of return behavior or prerequisites beyond 'inspected tab'. For a simple two-parameter tool it is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description needed to compensate. It only indirectly hints at tabId through the phrase 'an inspected tab' and completely omits ignoreCache, leaving a required and an optional parameter without meaningful semantic explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Reload') and a specific resource ('an inspected tab'), and adds the purpose of capturing subsequent network activity via CDP. This clearly distinguishes it from sibling tools like network_read or runtime_evaluate without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'so subsequent network activity can be captured' implies the intended use case: reload a tab when you need fresh network data. However, it does not explicitly state when not to use this tool or mention alternative approaches, leaving the usage guidance largely implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
runtime_evaluateB
Evaluate JavaScript in the inspected tab using Chrome DevTools Protocol Runtime.evaluate.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | ||
| expression | Yes | ||
| awaitPromise | No | ||
| returnByValue | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It reveals that JavaScript will be executed, but it does not warn about arbitrary side effects, page mutation, network activity, prerequisite attachment, or what happens to returned values. The behavior beyond 'runs code' is undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one tight sentence with no filler. The verb, target, and protocol are all front-loaded, and every word contributes to identifying the operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a potentially side-effectful execution tool with no annotations and no output schema, this description is too thin. It omits prerequisites, safety considerations, return behavior, and optional parameter semantics, leaving an agent to infer critical details from CDP knowledge alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for parameter meaning. It only vaguely maps to 'expression' and 'tab' through its wording; it says nothing about awaitPromise or returnByValue, leaving the optional parameters underspecified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Evaluate') with a clear resource ('JavaScript in the inspected tab') and names the underlying CDP method, making the tool's purpose immediately obvious and distinct from sibling tools like console_read or network_read.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives, when not to use it, or whether it requires a prior step such as devtools_attach. The intended use is implied by the name and description but never explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tab_activateB
Activate a Chrome tab by id.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full behavioral burden. It only restates the action; it does not disclose prerequisites, side effects, error behavior, or whether the tab must already exist or be attached to DevTools.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short sentence with no wasted words and the key action is front-loaded. It loses a point only for being too bare to provide the behavioral and usage context needed elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool, this is minimally adequate for a straightforward call with a valid tab id. However, it omits the relationship with tabs_list, error behavior, and any output or follow-up expectations, so it is not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description needs to compensate. The phrase 'by id' maps to tabId but adds little beyond the property name and integer type; it does not explain where the id comes from, how it is scoped, or any format concerns.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Activate' with the resource 'Chrome tab' and identifies the selection mechanism ('by id'). This clearly distinguishes it from sibling tools like tabs_list (listing), page_reload (reloading), and devtools_attach (debugging).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of retrieving the tabId from tabs_list, and no exclusions or alternatives. The description leaves the agent to infer the appropriate context for activation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tabs_listA
List Chrome tabs and their ids, URLs, titles and active state.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. 'List' implies a read-only operation and the output fields are named, but there is no explicit statement about side effects, permissions, or behavior when no tabs exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the action and resource, and every word adds information. No redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless list tool with no output schema, the description is complete: it names the resource and the exact fields returned. An agent can invoke it correctly without further elaboration.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description adds useful context about what data the tool returns, which is sufficient since there is nothing to configure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'Chrome tabs', and enumerates the returned fields: ids, URLs, titles, and active state. This distinguishes it from action-oriented siblings like tab_activate and page_reload.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives such as tab_activate or chrome_status. The read-only intent is implied by 'List', but there are no explicit exclusions or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
websocket_messagesA
Read captured WebSocket lifecycle and frame events for a tab.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. The verb 'Read' implies a non-destructive, passive operation, which is useful but not fully explicit about side effects, required setup, or data freshness. It gives a minimal but adequate signal for such a read-only tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The entire description is one concise sentence preceding the schema. The primary action and resource are front-loaded, and there is no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one parameter and no output schema, the description conveys the essential function and object of operation. It would benefit from noting if devtools attachment is required or how returned data is shaped, but those may be obvious from sibling tools or shared contexts.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description needs to compensate. It conveys that the tool operates on a tab via 'for a tab', which maps to the tabId parameter, but it doesn't explicitly state that tabId identifies the target tab or describe any edge cases. The compensation is partial but acceptable for a single integer parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Read') and names the exact resource ('captured WebSocket lifecycle and frame events') with context ('for a tab'). This clearly distinguishes it from sibling network tools like network_read or eventsource_messages, so an agent can select it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing devtools attached or a capture session active), nor does it say when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
24 tool updates
v0.2.0-alpha.0- First observed
chrome_status - First observed
console_read - First observed
content_setting_get - First observed
content_setting_set - First observed
devtools_attach - First observed
devtools_detach - First observed
eventsource_messages - First observed
extension_dev_errors - First observed
extension_dev_load - First observed
extension_dev_reload - First observed
extension_dev_remove - First observed
extension_get - First observed
extension_set_enabled - First observed
extension_uninstall - First observed
extensions_list - First observed
network_failures - First observed
network_read - First observed
network_requests - First observed
network_response_body - First observed
page_reload - First observed
runtime_evaluate - First observed
tab_activate - First observed
tabs_list - First observed
websocket_messages
TDQS
Scored across 24 tools
Tools are mostly distinct, with clear separation between status, tabs, DevTools capture, extension management, and content settings. The network family has some overlap, but each tool is scoped specifically enough to avoid serious misselection.
Most tools follow a resource_verb snake_case pattern such as tabs_list, extension_get, and content_setting_set. Minor inconsistencies like chrome_status and extension_dev_errors, plus singular/plural variations, keep this from being a perfect 5.
At 24 tools, the server is at the heavy end and includes very granular network and extension-dev groupings. The broad Chrome Ops scope justifies many tools, but the count feels borderline compared to a tighter, well-scoped server.
The surface covers connection health, tab activation, DevTools monitoring, runtime evaluation, extensions, and content settings. Obvious gaps like tab creation/closing and direct URL navigation are missing, though agents can partially work around them with runtime_evaluate.
Maintenance
Related MCP Connectors
Live browser debugging for AI assistants — DOM, console, network via MCP.
Hosted browser for AI agents: screenshots, post-JS DOM, console, WCAG. No install, no API key.
A paid remote MCP for AI agent browser DevTools MCP, built to return verdicts, receipts, usage logs,
Web search, browser automation, scraping, crawling and CAPTCHA solving for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables AI coding assistants to control and inspect a live Chrome browser through Chrome DevTools. Provides browser automation, performance analysis, debugging capabilities, and network request monitoring.2,457,419 npm52,607Apache 2.0
- AlicenseAqualityDmaintenanceEnables AI coding assistants to control and inspect a live Chrome browser for automation, debugging, performance analysis, and screenshot capture through Chrome DevTools.262,457,419 npm3Apache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables AI coding assistants to control and inspect a live Chrome browser for automation, debugging, performance analysis, network monitoring, and DOM interaction through Chrome DevTools Protocol.2,457,419 npmApache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables AI coding assistants to control and inspect a live Chrome browser through Chrome DevTools for automation, debugging, and performance analysis.2,457,419 npmApache 2.0