crx-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@crx-mcpLoad ./my-extension and get storage.local keys"
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.
crx-mcp
MCP server for Chrome extension testing. Access chrome.storage, Service Workers, declarativeNetRequest, and more directly from AI coding agents like Claude Code.
Why?
Existing browser MCP servers (like Playwright MCP) can't access Chrome extension internals. crx-mcp fills this gap with 15 purpose-built tools for extension development and testing.
Related MCP server: real-browser-mcp
Quick Start
With Claude Code
Add to your .mcp.json:
{
"mcpServers": {
"crx-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "crx-mcp"]
}
}
}Then in Claude Code:
> Load my extension from ./my-extension and check if storage is working
Claude will use extension_load, then storage_get to inspect chrome.storageCLI
npx crx-mcp --extension-path ./my-extension --verboseTools (15)
Core
Tool | Description |
| Load an unpacked extension and launch Chrome. Returns extension ID. |
| Navigate to a URL. Returns title and status code. |
| Accessibility tree snapshot of page, popup, or side panel. |
| Read from |
| Write to |
| Execute JavaScript in the Service Worker context. |
| Get console logs from all contexts (page, SW, popup, sidepanel). |
Extension-Specific
Tool | Description |
| Validate |
| Open the extension popup and return accessibility snapshot. |
| Open the side panel and return accessibility snapshot. |
| List |
| Compare declared vs granted permissions. |
Advanced
Tool | Description |
| Take a PNG screenshot (base64). |
| List captured network requests with URL filter. |
| Execute JS in page context (ISOLATED or MAIN world). |
| Hot-reload the extension and re-attach to Service Worker. |
CLI Options
crx-mcp [options]
--extension-path <path> Pre-load extension at startup
--chrome-path <path> Path to Chrome executable
--user-data-dir <path> Chrome user data directory
--no-sandbox Disable sandbox (for CI/Docker)
--verbose Debug logging to stderrRequirements
Node.js >= 18
Google Chrome installed (detected automatically on Windows, macOS, Linux)
Extensions require headed mode (no headless)
How It Works
extension_loadlaunches Chrome with--load-extensionand detects the extension IDService Worker communication uses Chrome DevTools Protocol (CDP) sessions
chrome.storage,declarativeNetRequest, andpermissionsare accessed via JS evaluation in the SW contextConsole logs are collected from all contexts (page, SW, popup, sidepanel) into a ring buffer
Network requests are monitored via CDP
Network.enablePopup and side panel are opened in new tabs (actual popup/sidepanel UI requires user gestures)
Use Cases
Automated testing of Chrome extensions during development
AI-assisted debugging — let Claude inspect storage, logs, and network traffic
CI/CD validation — validate manifests and permissions without manual testing
Extension factory workflows — quickly test multiple extensions in sequence
License
MIT
Available Tools
23 toolsclickB
Click an element by CSS selector.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | Which context to interact with | page |
| selector | Yes | CSS selector of the element to click | |
| doubleClick | No | Double-click instead of single click |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of behavioral disclosure. It only states the basic action and omits critical behavior such as waiting for element visibility, error handling on missing selectors, scrolling, or return values.
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 that is direct and free of unnecessary words. It is front-loaded with the core action and target.
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 simple nature of the tool and complete schema parameter descriptions, the minimal description is adequate but lacks important runtime context such as default behavior, failure modes, or interaction with the target context. The absence of an output schema and annotations makes the description feel incomplete.
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 100% coverage for all three parameters, including descriptions for 'selector', 'target', and 'doubleClick'. The tool description adds no additional meaning beyond what the schema already explains.
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 ('click') and the target ('an element by CSS selector'), making the tool's purpose unambiguous. It distinguishes itself from sibling tools like 'type' and 'navigate' by specifying the exact interaction.
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 usage context is provided. The description does not indicate when to use this tool versus alternatives like 'content_script_eval' or 'wait_for', nor does it mention any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
console_logsA
Get console logs from all extension contexts (page, SW, popup, sidepanel).
| Name | Required | Description | Default |
|---|---|---|---|
| clear | No | Clear logs after reading | |
| level | No | Minimum log level | |
| limit | No | Max entries to return | |
| since | No | Only return entries after this timestamp (ms epoch) | |
| source | No | Filter by source |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full transparency burden. It only states what the tool does and does not disclose side effects (e.g., the 'clear' parameter can delete logs), return format, or that the schema includes 'content-script' as a context even though the description's parenthetical list omits it. This leaves significant behavioral aspects 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 a single, concise sentence that conveys the core functionality without any redundant information or unnecessary words. It is efficiently structured and immediately front-loads the key action and scope.
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 five parameters and no output schema, the description is minimal. It does not mention return format, ordering, or the effect of the 'clear' parameter, and it omits 'content-script' from the context list. While the schema covers parameters, the description lacks behavioral context needed for full completeness, making it only minimally viable.
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 provides 100% coverage with clear descriptions for all five parameters, including enums and defaults. The description adds no extra parameter semantic detail, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('console logs') and clearly defines the scope ('all extension contexts') with examples. This distinguishes it from sibling tools like network_requests and extension_errors, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through the phrase 'all extension contexts', suggesting it's the go-to for comprehensive console log retrieval. However, it does not explicitly state when to use this tool versus alternatives (e.g., extension_errors) or provide exclusions or prerequisites, leaving usage context somewhat implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
content_script_evalB
Execute JavaScript in the page context (ISOLATED or MAIN world).
| Name | Required | Description | Default |
|---|---|---|---|
| world | No | Execution world. MAIN accesses page JS context, ISOLATED is sandboxed. | ISOLATED |
| expression | Yes | JavaScript expression to evaluate in the page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, but it only restates the purpose and names the execution worlds. It fails to disclose return value, error behavior, side effects, or security implications—critical for a code execution tool. The world semantics are already in the schema, so the description adds little transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It effectively communicates the core action and scope.
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 powerful tool that executes arbitrary JavaScript, this description is incomplete. It lacks information about return values, asynchronous behavior, error handling, and when to choose this over other eval tools. The absence of annotations and output schema makes this brevity a significant gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description does not add meaning beyond the schema; it merely echoes the world names. It provides no additional context about how parameters interact or are used.
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 ('Execute') and resource ('JavaScript in the page context'), and distinguishes this tool from siblings like eval_extension_page and eval_service_worker by explicitly limiting to the page context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives. There is no mention of exclusions, prerequisites, or comparisons to sibling eval tools, leaving the agent to infer appropriate usage from the phrase 'page context' alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dnr_matched_rulesA
Get declarativeNetRequest matched rules (which rules fired). Requires declarativeNetRequestFeedback permission.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | No | Tab ID to filter matched rules. Omit for all tabs. |
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 adds a key behavioral detail by requiring the declarativeNetRequestFeedback permission, and clarifies the meaning of 'matched rules' as 'which rules fired'. It does not describe the return format or error behavior, but the permission disclosure goes beyond the bare minimum.
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 concise sentences, front-loaded with the primary action and immediately clarifying what the tool returns. No wasted words, and the permission requirement is stated separate from the core 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?
For a simple read tool with one optional parameter and no output schema, the description covers the core behavior and notes the required permission. It does not explicitly state the return shape (e.g., a list of matches) but implies it with '(which rules fired)'. Overall, it provides sufficient context for an agent to select and invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single optional parameter tabId, with a clear description in the schema. The tool description itself does not mention tabId, so it adds no additional semantic value beyond the schema. Baseline of 3 applies since the schema fully documents the 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 clearly states the tool gets declarativeNetRequest matched rules, and clarifies the meaning by appending '(which rules fired)'. This specific verb+resource combination distinguishes it from sibling tools like dnr_rules (which likely manages rules) and network_requests (which likely fetches network requests).
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: call this tool when you need to see which declarativeNetRequest rules matched. However, it does not explicitly state when not to use it or mention alternatives such as dnr_rules or network_requests. The permission requirement is noted but without guidance on prerequisite setup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dnr_rulesB
List declarativeNetRequest rules (dynamic/session/static).
| Name | Required | Description | Default |
|---|---|---|---|
| ruleType | No | Type of DNR rules to retrieve | all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden of behavioral disclosure. It does not mention that this is a read-only operation, any permission requirements, or return format and potential limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that communicates the core purpose with zero filler or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is trivial (one optional parameter, no output schema), and the description is minimally sufficient. However, with no annotations or output schema, a bit more context on return values or permissions would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The parenthetical (dynamic/session/static) merely mirrors the enum values in the schema and adds no extra semantic meaning beyond what the schema already declares.
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 a clear resource 'declarativeNetRequest rules' and enumerates the types (dynamic/session/static). This sufficiently distinguishes the tool from siblings like dnr_matched_rules and network_requests.
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 dnr_matched_rules or network_requests. No explicit context, exclusions, or alternative tool references are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eval_extension_pageA
Execute JavaScript in an extension popup or side panel page context (has access to chrome.* APIs).
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | Which extension page to evaluate in | |
| expression | Yes | JavaScript expression to evaluate in the extension page context |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It mentions chrome.* API access but omits side effects, return value format, potential errors, and prerequisites (e.g., whether the popup/side panel must be open). For an eval tool, this is a significant transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that directly states the action and context with no filler, making it concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete for an eval tool. It fails to specify what the tool returns, error behavior, or operational prerequisites, leaving significant gaps for an agent to safely and correctly invoke it.
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 100%, with both parameters described in the schema. The tool description adds no parameter-specific meaning beyond the schema, so the baseline of 3 applies.
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 ('Execute JavaScript') and the specific resource ('extension popup or side panel page context'), distinguishing it from sibling tools like content_script_eval and eval_service_worker by specifying the page context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'has access to chrome.* APIs' suggests when this context is appropriate (when extension APIs are needed), but no explicit alternatives or exclusions are mentioned. The context is clear enough for an agent to infer usage, though not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eval_service_workerA
Execute JavaScript in the extension Service Worker context.
| Name | Required | Description | Default |
|---|---|---|---|
| expression | Yes | JavaScript expression to evaluate in the Service Worker |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It only states that JavaScript is executed in the Service Worker, without detailing return values, asynchronous behavior, error handling, side effects, or permission implications. This is a minimal, uninformative disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no redundant words. It is efficiently structured and front-loaded, though it could be slightly more informative regarding expected results.
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 lack of annotations and output schema, the description needs to explain return behavior, possible errors, or execution semantics, but it does not. A simple eval tool still requires some statement about what happens after evaluation, which is missing.
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 100% description coverage for the sole parameter 'expression', defining it as the JavaScript expression to evaluate. The description adds no additional parameter semantics, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Execute' and a clear resource 'JavaScript in the extension Service Worker context', which accurately and precisely defines the tool's function. It also distinguishes this from sibling eval tools like eval_extension_page and content_script_eval by naming the exact context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states the context (Service Worker), which implies when to use it relative to sibling tools, but it does not explicitly provide when-to-use/when-not-to-use guidance or mention alternatives. This is clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extension_errorsA
Get extension errors from chrome://extensions and recent SW crash logs.
| 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 carries the burden. It accurately describes the data sources and implies a read-only operation via 'Get', which is appropriate. However, it does not disclose details such as output format, potential for empty results, or whether SW crash logs are cleared after retrieval. For a simple diagnostic getter, this is adequate but slightly under-specified.
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 conveys purpose and scope without wasted words. It is highly concise and structured effectively.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simple nature (no parameters, no output schema, no annotations), the description is sufficient to understand what the tool does and from where it pulls data. It doesn't explain the return structure, but for a 'get errors' tool this is reasonably inferred. Some additional detail about what constitutes an 'extension error' could help, but overall it is complete enough.
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 there are no parameter semantics to describe. With no parameters, the baseline is 4, and the description does not need to compensate for any schema coverage gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and clearly identifies the resource (extension errors) and sources (chrome://extensions and recent SW crash logs). This distinguishes it from sibling tools like console_logs, which target console output rather than extension-level errors.
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 extension errors or service worker crash logs are needed), but it does not explicitly mention alternatives or exclusions, despite the presence of related sibling tools like console_logs and network_requests. Context is clear but not fully fleshed out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extension_loadB
Load a Chrome extension and launch the browser. Returns extension ID.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Initial URL to navigate to after loading | |
| chromeFlags | No | Additional Chrome flags | |
| extensionPath | Yes | Path to the unpacked extension directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses the core behavior (launching the browser) and the return value (extension ID), but lacks details on the side effects, such as whether an existing browser session is affected or whether the loading is persistent. It does not contradict any annotations, but it is minimal.
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 short sentences with no wasted words. It is front-loaded with the primary purpose and includes the return value, making it highly 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 description covers the main purpose and return value, but for a tool with a significant side effect ('launch the browser') and three parameters, it lacks context about the launch behavior, whether the extension is expected to be unpacked, or how to use the returned ID. The schema fills in parameter details, but the behavioral context is incomplete.
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 100% coverage with descriptions for all three parameters. The description adds no additional meaning beyond what the schema already states, so the baseline of 3 applies.
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 ('Load a Chrome extension') and resource ('a Chrome extension'), with the additional detail of launching the browser and returning an extension ID. It is specific enough to distinguish from most siblings, though it does not explicitly differentiate from reload_extension.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like manifest_validate or reload_extension. There is no mention of prerequisites, ordering, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manifest_validateA
Validate manifest.json against MV3 requirements (no browser needed).
| Name | Required | Description | Default |
|---|---|---|---|
| extensionPath | No | Path to extension directory. Uses loaded extension if omitted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses that no browser is needed and the parameter description notes fallback to loaded extension, but it doesn't clarify return format or potential side effects. These disclosures add some value but remain incomplete.
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 core action and a key advantage. Every word earns its place, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter, the description plus schema is largely sufficient. It could mention output expectations, but no output schema exists and the purpose is straightforward, so it's nearly 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 coverage is 100% with a clear parameter description for extensionPath. The tool description adds no extra parameter semantics; baseline of 3 is appropriate because the schema handles the meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Validate manifest.json against MV3 requirements'. This uses a specific verb (validate) and resource (manifest.json with MV3), distinguishing it from sibling tools like extension_load or eval_extension_page.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context with 'no browser needed' but does not explicitly mention when to use this tool over alternatives or provide exclusions. It lacks direct comparison to sibling tools, so it's useful but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
network_requestsB
List captured network requests with optional URL filter.
| Name | Required | Description | Default |
|---|---|---|---|
| clear | No | Clear entries after reading | |
| limit | No | Max entries to return | |
| filter | No | Filter URLs containing this string |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It only says 'list' but does not disclose potential side effects like the 'clear' parameter clearing entries after reading, or whether this is a read-only operation. The description is silent on state changes.
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. 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 tool is simple, but with no output schema and no mention of return values or the clear side effect, the description leaves some gaps. It is adequate for a basic list tool but could be more complete by mentioning the 'clear' behavior and the limit parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are already well documented. The description adds nothing beyond the 'optional URL filter' hint, which is already covered by the schema's filter parameter. Thus baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists captured network requests, with a specific verb and resource. It is distinct from sibling tools that handle console logs, navigation, or storage, though it does not explicitly contrast with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose implies usage when network traffic is needed, and the optional filter hints at narrowing results. However, there is no explicit guidance on when to prefer this over other tools or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_popupA
Open the extension popup in a new tab and return accessibility snapshot.
| 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 carries the burden. It discloses the side effect of opening a new tab and returning a snapshot, but does not mention tab cleanup, popup load behavior, or error cases. This is minimal but not misleading.
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 primary action, and free of unnecessary details. Every word contributes to understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no parameters and no output schema, the description adequately states both the action and return value. It does not cover edge cases like popup load failures or tab cleanup, but is sufficient for basic use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, making schema coverage trivially complete. Baseline for 0 params is 4; the description does not need to add parameter info. It focuses on the action and output, which is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs and resources: 'open the extension popup' and 'return accessibility snapshot.' It clearly differentiates from siblings like open_sidepanel and snapshot by specifying the popup context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (when you need the popup's accessibility snapshot) but does not explicitly state when to use it vs alternatives like snapshot or open_sidepanel. No exclusions or alternative tool references are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_sidepanelA
Open the extension side panel in a new tab and return accessibility snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 that the side panel opens in a new tab (a notable side effect) and that an accessibility snapshot is returned. However, it does not clarify whether the tab remains open, if permissions are needed, or any cleanup behavior, leaving some behavioral ambiguity.
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 action and result. Every word contributes value with no redundancy or filler.
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 covers the core behavior and return value. It could elaborate on the exact format of the accessibility snapshot or prerequisites, but given the tool's simplicity, the description is reasonably complete for an agent to select and invoke it.
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 for this dimension is 4. The description does not need to explain parameter meanings, and the schema trivially covers all parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Open') and resource ('extension side panel'), further constrained by 'in a new tab' and the return of an 'accessibility snapshot'. It naturally distinguishes itself from sibling tools like open_popup (opens popup) and snapshot (returns snapshot of current state).
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 is given for when to use this tool vs alternatives, nor are any prerequisites or exclusions mentioned. The description implies use when needing a side panel accessibility snapshot, but lacks explicit contextual direction or named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
permissions_checkA
Check declared vs granted extension permissions.
| Name | Required | Description | Default |
|---|---|---|---|
| permissions | No | Specific permissions to check. Omit to list all. |
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. The verb 'Check' implies a read-only, non-destructive operation, and the phrase 'declared vs granted' adds behavioral insight. However, it does not disclose return format, side effects, or whether an extension must be loaded first, which keeps transparency at a moderate level.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that front-loads the verb and object. Every word contributes to the meaning, with no redundancy or wasted 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 tool with one optional parameter and no output schema, the description is adequate but not fully complete. It leaves unclear what the check actually returns (e.g., a diff, a list, or a boolean) and does not mention any preconditions like needing an already-loaded extension.
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 parameter is fully described in the schema with 100% coverage, already specifying that specific permissions can be listed and omission lists all. The tool description adds nothing beyond this, 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.
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 ('Check') and object ('declared vs granted extension permissions'). It distinguishes itself from sibling tools like manifest_validate (which validates manifest structure) and extension_load (which loads the extension) by focusing on permission comparison.
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 comparing declared and granted permissions, but provides no explicit when-to-use guidance or alternatives. It does not mention related tools or any prerequisites, leaving the agent to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reload_extensionA
Reload the extension and re-attach to the Service Worker.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It does disclose that the tool re-attaches to the Service Worker, but it does not mention potential side effects like losing in-memory state or requiring the extension to be loaded first. Minimal, yet non-obvious, behavioral context is provided.
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 verb 'reload', and contains no redundant or extraneous 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?
Given the tool's simplicity (no parameters, no output schema), the description adequately covers the core action. It could mention context like when to use it, but for a straightforward reload operation it is sufficiently 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, so the schema is empty. Baseline for 0 params is 4; the description correctly omits parameter details as there are none to document.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'reload' and names the resource (extension) plus the added detail 're-attach to the Service Worker', which clearly distinguishes it from sibling tools like extension_load or eval_service_worker.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as extension_load or eval_service_worker. It simply states the action without exclusions, prerequisites, or contextual triggers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screenshotA
Take a screenshot of the page, popup, or side panel. Returns base64 PNG.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | Which context to screenshot | page |
| fullPage | No | Capture full scrollable page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It states the return format (base64 PNG) but does not explicitly mention that the operation is non-destructive, whether it captures the current viewport by default, or any permission requirements. The behavior is mostly obvious from the tool's nature, but the description adds limited context 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 sentence that is concise and to the point. It conveys the action, targets, and return format without any waste or redundancy. It is appropriately sized for a simple 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?
Given the tool's simplicity and rich schema (which fully describes parameters), the description is mostly complete. It states the action, targets, and return format. However, it does not mention potential issues like whether fullPage works with popup/sidepanel targets, or error conditions. For a simple screenshot tool, this is nearly complete, but a small gap remains.
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 description coverage is 100%, so the baseline is 3. The description adds no additional parameter semantics beyond the schema; it merely repeats 'page, popup, or side panel' from the target enum. No extra context about fullPage behavior or parameter interactions is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb ('Take a screenshot') and identifies the resources (page, popup, side panel). It also distinguishes this tool from siblings since no other sibling mentions screenshots. The return format (base64 PNG) adds clarity.
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 clear purpose, but it does not explicitly state when to use this tool versus alternatives. There are no alternative screenshot tools among siblings, so the usage is self-evident, but the description lacks explicit guidance or exclusions. The 'target' parameter is mentioned in the description, which hints at use cases, but no when-not guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_messageB
Send a message via chrome.runtime.sendMessage() and capture the response.
| Name | Required | Description | Default |
|---|---|---|---|
| message | No | Message to send via chrome.runtime.sendMessage() | |
| timeout | No | Timeout in milliseconds | |
| expectResponse | No | Whether to wait for a response |
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. It mentions 'capture the response' but does not explain timeout behavior, error handling, or side effects. This is minimal and leaves the agent without important contextual information about how the tool behaves in edge cases.
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, clearly structured sentence that accomplishes its purpose without redundancy or extraneous content. It is front-loaded with the primary action and followed by the outcome, making it easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the fact that all parameters are described in the schema, the description is mostly adequate. However, it lacks details about what happens on timeout or when expectResponse is false, and the return value is only vaguely indicated by 'capture the response'. These gaps make it less complete than ideal for a tool with no 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?
Schema coverage is 100%, so the baseline is 3. The description does not add extra meaning to the parameters beyond the schema; it only references 'message' implicitly. It fails to elaborate on timeout or expectResponse semantics, but the schema already covers those details, so the description adds no significant value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: sending a message via chrome.runtime.sendMessage() and capturing the response. The verb 'send' and specific API named make it distinct from sibling tools like evaluate or screenshot, which serve different purposes.
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 explicit guidance on when to use this tool versus alternatives. It does not mention scenarios where this is preferable to content_script_eval or other communication mechanisms, nor does it list any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snapshotA
Get an accessibility snapshot of the page, popup, or side panel.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | Which context to snapshot | page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must explain side effects and output. It only states 'Get an accessibility snapshot' without clarifying that it's read-only, what the snapshot contains, or any prerequisites (e.g., extension must be open). This leaves significant ambiguity.
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 short sentence, immediately states the action and scope with no filler words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity (one optional parameter) and no output schema, the description is minimal but acceptable; however, it doesn't describe the return format or structure of the accessibility snapshot, which would be helpful for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter 'target' is fully described in the schema with an enum and default, and the tool description merely echoes the enum values, adding no extra meaning beyond the 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 the specific verb 'Get' and identifies the resource as 'an accessibility snapshot' of three possible contexts, clearly distinguishing it from siblings like 'screenshot' or 'network_requests'.
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 specifies the target contexts (page, popup, side panel) which tells when it applies, but does not explicitly mention alternatives or exclusions, so it's clear but not fully comparative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
storage_getB
Read from chrome.storage (local/sync/session).
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | Storage area | local |
| keys | No | Key(s) to retrieve. Omit to get all. | |
| direct | No | Read via extension page instead of Service Worker (works even if SW is crashed) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It only states 'Read' which implies non-destructive behavior, but does not disclose return format, behavior when keys are omitted, or the significance of the direct parameter (like bypassing a crashed Service Worker) beyond what the schema already provides.
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, very efficient with no wasted words. However, it is arguably under-specified for a tool with three parameters and no output schema, so it loses a point for not using the space to add helpful context.
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 no output schema and no annotations, the description is incomplete. It does not explain what the tool returns, how keys are handled when omitted, or the practical context for the direct flag. The description is too brief to fully equip an agent to use the tool correctly in all scenarios.
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 100%, so the baseline is 3. The description repeats the area enum (local/sync/session) already in the schema and adds no additional meaning about keys or direct parameters. Thus it provides no extra value beyond the structured 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 says 'Read from chrome.storage (local/sync/session)' which clearly identifies the verb (read) and resource (chrome.storage), and differentiates from sibling storage_set (write). It is specific about the storage areas, though it doesn't mention key retrieval semantics.
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: read storage when you need to retrieve values. However, it does not explicitly state when to use this tool vs storage_set or other alternatives, nor does it mention exclusions like preferring direct mode in certain scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
storage_setA
Write to chrome.storage (local/sync/session).
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | Storage area | local |
| data | Yes | Key-value pairs to store |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It mentions 'Write' but does not explain whether it overwrites existing keys, merges data, requires special permissions, or what the return value/error behavior is. This leaves significant behavioral ambiguity.
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: 'Write to chrome.storage (local/sync/session).' Every word earns its place, and there is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple two-parameter tool with complete schema coverage, so the description need not explain parameters. It covers the core purpose and storage areas, which is largely sufficient. However, it omits behavioral details such as whether writes merge or overwrite existing data, which could matter in some 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?
The input schema provides descriptions for both parameters (area and data) with 100% coverage, so the baseline is 3. The description adds no parameter-level detail beyond restating the enum values (local/sync/session), meaning it does not elevate above the 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 the specific verb 'Write' and names the resource 'chrome.storage' with the scoping areas (local/sync/session). This clearly identifies the tool's function and distinguishes it from the sibling storage_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 verb 'Write' implies this tool is for storing data, providing some contextual guidance. However, there is no explicit statement of when to use this tool over storage_get or other alternatives, nor any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
typeB
Type text into an input element by CSS selector.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text to type | |
| clear | No | Clear existing value before typing | |
| submit | No | Press Enter after typing | |
| target | No | Which context to interact with | page |
| selector | Yes | CSS selector of the input element |
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 what the tool does and does not mention side effects, behavior when the selector matches no element, or whether it triggers native input events. This is a significant gap for a tool that types into a page.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the action and target. There is no wordiness or redundancy, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema fully documents parameters, but the description lacks broader behavioral context, such as the availability of different target contexts or expected behavior under error conditions. It is adequate for a simple tool but leaves gaps in operational understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% parameter coverage with descriptions for all five parameters, so the baseline is 3. The description's mention of 'CSS selector' adds no new meaning beyond the schema's existing 'CSS selector of the input element' parameter description.
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?
Description uses a specific verb 'Type' with a clear resource ('input element') and method ('by CSS selector'), making its purpose immediately understandable and distinguishing it from sibling tools like 'click' and 'navigate'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives, nor are any exclusions or context given. The description implies usage for typing text but does not address the different target contexts (page/popup/sidepanel) or when to prefer it over other input methods.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_forB
Wait for an element to appear, disappear, or change visibility.
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | Wait until element is visible/hidden/attached/detached | visible |
| target | No | Which context to interact with | page |
| timeout | No | Timeout in milliseconds | |
| selector | Yes | CSS selector to wait for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the core waiting behavior (appear, disappear, visibility change), but doesn't mention what happens on timeout, whether it polls, or if it returns immediately when the condition is already met. 'Change visibility' is vague about DOM attachment states, leaving some behavioral uncertainty.
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 that is front-loaded and contains zero wasted words. It immediately conveys the tool's action and resource. It is appropriately sized for the simplicity of the operation, though more behavioral detail could be added without harming conciseness.
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?
Combined with a rich schema, the description provides a basic operational picture for a wait tool. However, without annotations or an output schema, the description is thin on context such as when to use it in a workflow (e.g., before assertions or clicks) and what the return value signifies. This is adequate but has clear gaps for an agent to select and invoke correctly in varied scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all four parameters (selector, state, target, timeout) having clear types, defaults, and descriptions. The tool description adds no parameter-level detail beyond the schema, so baseline 3 is appropriate. It doesn't compensate with extra context that would aid invocation.
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 identifies the tool's purpose: waiting for an element to change its state. The verb 'wait' and resource 'element' are specific, and it distinguishes from sibling actions like click/type/navigate. However, 'change visibility' is ambiguous and doesn't fully map to the schema's state enum (attached/detached), which could confuse an agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention synchronization before interactions, nor does it state exclusions or prerequisites. 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.
TDQS
Each tool targets a distinct context or action: eval tools are separated by target (extension page, content script, service worker), while screenshot/snapshot differ between visual and accessibility representation. The descriptions clearly delineate the boundaries, so misselection is unlikely.
Tool names mix verb-first patterns (eval_extension_page, open_popup, send_message) with noun-first patterns (manifest_validate, storage_get, dnr_rules), and some use bare verbs (click, type, wait_for). This inconsistency is readable but not predictable, placing it at the mixed-conventions level.
With 23 tools, the server is on the heavier side, fitting the borderline 16-25 range. While each tool has a legitimate purpose in the extension-testing domain, the count feels heavy and could potentially be consolidated (e.g., merging DNR-related tools or grouping eval functions).
The tool surface covers the full lifecycle: loading and reloading the extension, evaluating in all contexts, storage, messaging, DNR, permissions, and UI automation. Minor gaps include no dedicated options-page automation or explicit permission manipulation, but agents can work around these via context eval and manifest validation.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Live browser debugging for AI assistants — DOM, console, network via MCP.
Hosted Amazon Seller Central and Amazon Ads MCP server for Claude, ChatGPT, Cursor, and agents.
Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.
MCP server for building and testing AI agents with multi-model experimentation and insights.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceAn MCP Server for Chrome DevTools, following the Chrome DevTools Protocol. Integrates with Claude Desktop and Claude Code.307MIT
- AlicenseAqualityCmaintenanceMCP server + Chrome extension that gives AI coding agents control of your real browser with existing sessions, logins, and cookies. Works with Cursor, Claude, Windsurf.1810449MIT
- AlicenseNot gradedqualityDmaintenanceAn extension-based MCP server that enables AI assistants to control your browser, leveraging existing sessions and login states for automation and content analysis. It provides over 20 tools for semantic tab search, interactive element manipulation, and network monitoring directly within your daily Chrome environment.MIT
- AlicenseNot gradedqualityNot gradedmaintenanceAn extension-based MCP server that enables AI assistants to control your existing Chrome browser, leveraging your active login states and settings for automation. It provides over 20 tools for tasks like semantic tab search, screen capture, network monitoring, and direct element interaction.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/youichi-uda/crx-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server