DevTools Lens 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., "@DevTools Lens MCPwhy did the login request return a 401 error?"
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.
DevTools Lens MCP
Give your AI agent Chrome DevTools.
DevTools Lens MCP is a production-oriented Model Context Protocol server that lets Claude, Codex, and other MCP clients inspect and control a live Chromium browser. It is built for frontend debugging—not just browser automation.
Ask an agent why a login request failed, which exception broke a click handler, what changed in the DOM after submit, or whether the current page has accessibility problems. The server combines Playwright's reliable lifecycle and interaction layer with direct Chrome DevTools Protocol diagnostics.
Why this exists
Browser automation tools can click and type, but debugging needs evidence: buffered console history, request/response details, stack traces, DOM state, computed styles, accessibility metadata, and before/after changes. DevTools Lens MCP exposes that evidence as focused, schema-validated tools that an AI agent can reason over.
Related MCP server: Chrome DevTools MCP
Highlights
19 purpose-built debugging tools over MCP stdio
Multiple isolated browser sessions with optional single-session shorthand
CDP-native console, exception, and network event collection
Grouped console errors with likely categories
Failed-request detection for HTTP, DNS, timeout, refused, CORS, and aborted requests
Bounded textual response-body inspection and default credential redaction
Compact DOM snapshots, element styles/layout, and structural DOM diffing
Click impact capture: DOM, console, network, and URL before/after evidence
Page and element screenshots written to a controlled output directory
axe-core accessibility analysis
Strict TypeScript, Zod inputs, Vitest coverage, Docker, and CI
Architecture
flowchart LR
Client[Claude / Codex / MCP client] -->|MCP stdio| Server[MCP tool registry]
Server --> Schemas[Zod validation + structured errors]
Server --> Manager[BrowserManager]
Manager --> S1[BrowserSession A]
Manager --> S2[BrowserSession B]
S1 --> PW[Playwright lifecycle + interactions]
S1 --> CDP[Chrome DevTools Protocol]
CDP --> Console[Console ring buffer]
CDP --> Network[Network ring buffer]
Server --> Services[DOM / console / network / a11y / screenshot services]
Services --> S1Each session owns one Chromium page, one CDP session, independent console/network buffers, active requests, and lifecycle timestamps. The transport is isolated in the server entry point so HTTP transports can be added later without rewriting browser services.
Five-minute setup
Requirements: Node.js 20.19+ and npm.
npm install -g devtools-lens-mcp
npx playwright install chromium
devtools-lens-mcpFor one-command client usage, configure the client to run:
npx -y devtools-lens-mcpWhen developing from source:
git clone https://github.com/aakcay5656/devtools-lens-mcp.git
cd devtools-lens-mcp
npm install
npx playwright install chromium
npm run build
npm startMCP client configuration
Claude Desktop
Add this server to the mcpServers object in Claude Desktop's configuration:
{
"mcpServers": {
"devtools-lens": {
"command": "npx",
"args": ["-y", "devtools-lens-mcp"]
}
}
}Restart Claude Desktop after saving the file.
Codex CLI or IDE extension
The CLI and IDE extension share MCP configuration. Add the server with:
codex mcp add devtools-lens -- npx -y devtools-lens-mcpOr add it manually to ~/.codex/config.toml:
[mcp_servers.devtools-lens]
command = "npx"
args = ["-y", "devtools-lens-mcp"]
startup_timeout_sec = 30
tool_timeout_sec = 120Tools
Tool | Purpose |
| Launch Chromium with URL, viewport, and headless options |
| Connect to an existing CDP remote-debugging endpoint |
| Navigate and wait for a lifecycle state |
| Get URL, title, viewport, UA, loading state, and DOM/resource counts |
| Filter buffered console history |
| Group errors/exceptions and classify likely causes |
| Filter complete session request history |
| Explain HTTP and transport failures |
| Get headers, payload, initiator, timing, and bounded text body |
| Get layout, visibility, styles, accessible identity, and selector |
| Capture a compact, depth-limited DOM model |
| Click and optionally capture diagnostic changes |
| Fill editable elements with password-safe results |
| Select an option by value, label, or index |
| Press keys or chords on a target or page |
| Save page or element screenshots |
| Run axe-core and return actionable findings |
| Compare snapshots by additions/removals/text/attributes/visibility |
| Safely close a session |
All browser-facing tools accept sessionId. It may be omitted when exactly one session exists. Ambiguous and invalid sessions return structured errors with available session IDs.
Example workflow
Ask the client to call
browser_launchwith{ "headless": true, "url": "https://example.com" }.Call
browser_get_console_errorsandbrowser_get_failed_requeststo establish a baseline.Call
browser_clickwith{ "selector": "button[type=submit]", "captureChanges": true }.Inspect new requests with
browser_get_request_detailsand the DOM diff from the click result.Call
browser_closewhen finished.
Prompts to try
“Find all console errors on this page and explain their likely causes.”
“Click the login button and analyze what fails.”
“Inspect failed API requests and suggest a fix.”
“Compare the page before and after submitting this form.”
“Find accessibility issues in the current page.”
“Inspect the styling and accessibility properties of the submit button.”
Configuration
Environment variable | Default | Meaning |
|
| Only directory used for screenshots |
|
| Console buffer capacity per session |
|
| Network buffer capacity per session |
|
| Maximum returned response-body bytes |
Security
Treat the browser and every page it opens as untrusted.
authorization,cookie,set-cookie,x-api-key, andproxy-authorizationheaders are masked by default.Password inputs are never returned by fill results or DOM snapshot value attributes.
Binary response bodies are not returned; textual bodies are byte-limited.
Screenshots can only be written under the configured output directory.
The server exposes no arbitrary shell command or general-purpose JavaScript evaluation tool.
Localhost and private-network navigation are not blocked. This is intentional for local frontend debugging, but it makes SSRF-style access possible when an agent follows untrusted instructions. Run the server with only the network access it needs.
Never attach this server to a trusted personal browser profile. Use a fresh, disposable debugging profile with no saved credentials, cookies, extensions, or open authenticated tabs.
Response bodies and page text may themselves contain secrets. Review outputs before sharing them.
Connecting by remote debugging endpoint grants powerful control over that browser. Bind debugging ports to loopback and do not expose them publicly.
For untrusted targets, prefer the Docker image with a restricted network policy and disposable filesystem. Report vulnerabilities privately according to SECURITY.md.
Development
npm run dev
npm run typecheck
npm run lint
npm run test:unit
npm run test:integration
npm run test
npm run build
npm run formatIntegration tests start a local fixture and a real headless Chromium instance. Install the browser once with npx playwright install chromium.
Docker
docker build -t devtools-lens-mcp .
docker run --rm -i -v "$PWD/output:/app/output" devtools-lens-mcpThe image is designed for MCP stdio (-i is required). See docker-compose.yml for a minimal example.
Roadmap
React component tree, props, and state inspection
Redux and Zustand state inspection
Vue component inspection
Performance trace analysis and Lighthouse integration
CSS and JavaScript coverage
Source-map-aware source navigation
Breakpoints, step debugging, and WebSocket inspection
IndexedDB, localStorage, sessionStorage, and cookie editing
Mobile device emulation and multi-tab support
Browser recording and replay
AI-driven automatic root-cause analysis
Contributing
Issues and pull requests are welcome. Read CONTRIBUTING.md, keep tools narrowly focused on frontend diagnosis, add Zod validation for inputs, and include unit or Chromium integration coverage for behavior changes.
License
MIT © DevTools Lens MCP contributors.
Available Tools
19 toolsbrowser_clickB
Click an element and optionally capture resulting DOM, console, network, and URL changes.
| Name | Required | Description | Default |
|---|---|---|---|
| timeout | No | ||
| selector | Yes | ||
| sessionId | No | Browser session ID; optional when exactly one session exists. | |
| captureChanges | No | ||
| waitAfterClick | 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. It discloses the optional capture feature, but omits behavioral details such as side effects of clicking (e.g., navigation, state changes), timeout behavior, or element readiness requirements. This is under-transparent for an interactive 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 a single 12-word sentence with no filler. It front-loads the core action and optional capture feature, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 parameters, no annotations, and no output schema, a one-sentence description is insufficient. It lacks clarity on timeout/wait behavior, session handling, return format, and when to use this tool versus siblings.
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?
Only 20% of parameters have schema descriptions. The description hints at captureChanges via 'optionally capture...' but does not explain the semantics of selector, timeout, waitAfterClick, or sessionId. With low schema coverage, the description fails to compensate.
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 'click' with a clear resource ('an element') and mentions optional capture of DOM, console, network, and URL changes. This clearly distinguishes it from sibling tools like browser_fill or browser_press_key.
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 when/when-not guidance or alternatives. However, the verb 'click' implies its use for clicking elements as opposed to filling or selecting, so usage is somewhat implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_closeB
Safely close a browser session.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | No | Browser session ID; optional when exactly one session exists. |
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. 'Safely close' is vague and does not explain what the operation entails (e.g., whether it destroys the session, requires an active session, or is idempotent). No consequences or side effects are mentioned.
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 unnecessary words. Every word earns its place, making it maximally concise and easily 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?
For a simple close operation with one optional parameter and no output schema, the description is minimally adequate. However, it lacks behavioral context (e.g., what happens if no session exists, whether it is safe to call multiple times) and does not clarify the meaning of 'safely', leaving gaps in the agent's understanding of edge cases.
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 the single parameter (sessionId), including format and optionality, so the description need not add parameter details. The description itself adds nothing beyond the schema, but the baseline of 3 is appropriate given schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'close' and the resource 'browser session', making the tool's purpose unambiguous. It also distinguishes this tool from siblings like browser_launch and browser_connect, which start or attach to sessions.
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 use this tool versus alternatives, nor does it mention prerequisites or exclusions. The optionality of sessionId is only conveyed through the schema, not the description, leaving the agent without explicit 'when' or 'when-not' context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_compare_domC
Compare two compact DOM snapshots.
| Name | Required | Description | Default |
|---|---|---|---|
| after | Yes | ||
| before | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description fails to disclose whether the comparison is read-only, what side effects exist, or what the output represents. The schema shows inputs but the description gives no behavioral context, leaving the tool's runtime behavior completely unspecified.
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 5-word sentence, extremely concise and front-loaded. It avoids unnecessary words while clearly stating the core action, making it a model of 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 complex nested input schema and lack of output schema, the description is far too minimal. It doesn't explain what the comparison yields, any constraints (e.g., same page), or how errors are handled. The tool requires two structured snapshot objects, and the description provides no guidance on using them.
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 'two compact DOM snapshots,' which loosely maps to the 'before' and 'after' parameters. However, it doesn't explain the expected relationship between the snapshots, the meaning of 'compact,' or how the parameters are interpreted. With 0% schema coverage, this 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 uses the verb 'Compare' with the resource 'two compact DOM snapshots,' clearly identifying the tool's core function. It is distinct from sibling tools like browser_get_dom_snapshot, as none other indicates comparison. However, it lacks specificity about what type of comparison (e.g., structural, textual) is performed.
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 on when to use this tool or how it relates to alternatives. The description doesn't mention prerequisites such as taking snapshots first or comparing before/after states, leaving the usage context undefined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_connectB
Connect to an existing Chromium remote-debugging endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| endpointUrl | No | ||
| debuggingPort | 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 of disclosing side effects, prerequisites, or error behavior. It only says 'connect' without explaining whether it is a read-only operation, what happens if the endpoint is unreachable, or whether it modifies browser state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no unnecessary words. It is immediately clear and front-loaded, though brief.
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 annotations, no output schema, and no parameter descriptions, the one-sentence description is insufficient. It does not cover return values, parameter usage, or when to use this tool relative to siblings, leaving significant gaps for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention or explain the two parameters (endpointUrl, debuggingPort). It provides no guidance on how to specify the endpoint, leaving the agent to guess from the schema alone.
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 ('connect') and resource ('existing Chromium remote-debugging endpoint'), and the word 'existing' distinguishes it from browser_launch, which presumably starts a new browser.
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 'existing endpoint' gives clear context that this tool is for attaching to an already-running browser, implying it is not for launching a new one. However, it does not explicitly mention alternatives like browser_launch, so it stops short of full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_fillB
Fill an input, textarea, or contenteditable element without exposing passwords.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| selector | Yes | ||
| sessionId | No | Browser session ID; optional when exactly one session exists. | |
| clearExisting | No | ||
| maskValueInResult | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full transparency burden. It discloses one safeguard—'without exposing passwords'—but omits important behavioral traits such as whether existing content is cleared by default (clearExisting=true) or how masking is controlled (maskValueInResult). For a mutating browser tool, this is insufficient.
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 words. It directly states the action and target, and the security note is concise rather than verbose.
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 five parameters, no output schema, and no annotations, the one-sentence description is far from complete. It does not explain the purpose of clearExisting or maskValueInResult, expected return behavior, or when this tool is appropriate relative to other browser-interaction siblings.
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 only 20% (only sessionId has a description), so the description must compensate. It adds some meaning by specifying the target element types, but it does not explain selector format, clearExisting semantics, or maskValueInResult behavior, leaving most parameters semantically vague.
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 'Fill' and identifies the resource as 'an input, textarea, or contenteditable element,' clearly conveying what the tool operates on. It distinguishes itself from sibling tools like browser_click or browser_select, which perform different actions.
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 such as browser_select or browser_press_key, nor are any prerequisites, exclusions, or complementary tools mentioned. The usage context is only implied by the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_get_accessibility_issuesB
Run axe-core accessibility checks and return actionable issues.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | No | Browser session ID; optional when exactly one session exists. |
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, but it only mentions running axe-core and returning issues. It does not explain prerequisites (e.g., a loaded page), side effects (e.g., executing scripts), or what 'actionable issues' includes.
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, compact sentence that front-loads the action and result. Every word contributes to understanding the tool's 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 tool with no output schema, the description only vaguely says 'return actionable issues' without specifying the structure or form of the results. It also lacks context about when the check runs (e.g., current page vs. full site) and prerequisites, leaving the agent with limited 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?
Schema description coverage is 100% for the single optional sessionId parameter, so the schema already documents it. The description adds no additional parameter semantics, which is acceptable given the high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Run' with a specific resource: 'axe-core accessibility checks' and promises 'actionable issues' as output. This distinguishes it from all sibling tools, none of which mention accessibility.
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 the tool is for checking accessibility issues but provides no explicit guidance on when to use it versus alternatives. Since no sibling covers accessibility, the use case is self-evident, but there are no exclusions or context beyond that.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_get_console_errorsB
Return grouped console errors and uncaught exceptions with likely categories.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| sessionId | No | Browser session ID; optional when exactly one session exists. |
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 that it returns grouped errors and exceptions, but does not explain whether this is a read-only operation, what prerequisites exist (e.g., an active session), how grouping works, or the structure of the output. This is minimal disclosure 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 a single, concise sentence with no wasted words. It front-loads the core purpose and avoids filler or redundant details, making it highly scannable for an AI agent.
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 relatively simple with two optional parameters and no output schema. The description gives the general idea but omits details about the return format, the meaning of 'likely categories', and how the limit parameter affects results. It is adequate as a minimal viable description but leaves some gaps for an agent to work with.
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 description for sessionId but not for limit, leaving 50% coverage. The tool description adds no parameter-specific information, failing to clarify how 'limit' behaves or whether it caps the number of errors per category or overall. Since the description does not compensate for the missing limit semantics, parameter understanding is incomplete.
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 specifies the tool's behavior with a specific verb ('Return') and a well-defined resource: grouped console errors and uncaught exceptions with likely categories. It distinguishes itself from the sibling tool browser_get_console_logs by emphasizing aggregation and categorization, which is a clear scope differentiator.
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 like browser_get_console_logs. It doesn't mention that raw logs are available elsewhere or explain under what circumstances the grouped/error-focused view is preferable. There is no stated context or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_get_console_logsB
Query buffered console messages from the entire browser session.
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | ||
| limit | No | ||
| search | No | ||
| sessionId | No | Browser session ID; optional when exactly one session exists. | |
| sinceTimestamp | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden of behavioral disclosure. The term 'Query' implies a read-only operation, and 'buffered' provides context that messages are accumulated from the session. However, it does not explicitly state side effects, whether the buffer is cleared, or any limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no filler words, making it easy to parse and front-loaded with the essential 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 has 5 parameters, no annotations, and no output schema, the description is under-specified. It fails to mention optional sessionId behavior, filtering options, return format, or any limitations, leaving the agent with insufficient context 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 only 20% (only sessionId has a description). The description does not compensate by explaining level, limit, search, or sinceTimestamp, though their names and schema constraints provide partial 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 'Query buffered console messages from the entire browser session' clearly identifies the action (query), resource (console messages), and scope (entire browser session). It distinguishes itself from the sibling tool browser_get_console_errors, which targets errors specifically.
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. The description does not mention browser_get_console_errors or any other sibling tool for specific use cases, nor does it provide any exclusions or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_get_dom_snapshotC
Capture a compact agent-friendly DOM snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| maxDepth | No | ||
| selector | No | ||
| sessionId | No | Browser session ID; optional when exactly one session exists. | |
| includeText | No | ||
| includeAttributes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds minimal behavioral context ('compact', 'agent-friendly') but doesn't disclose what the snapshot includes, read-only nature, session requirements, or output structure. With no annotations, this is a significant 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, front-loaded sentence that efficiently conveys the core purpose. It is concise, though it could benefit from more detail.
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 5 parameters, no annotations, and no output schema, the description is too sparse to fully inform the agent. It doesn't explain return values, parameter effects, or when to use 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 only 20% (sessionId has a description). The description provides zero parameter information, so it doesn't compensate for the low coverage. Parameter names hint at meaning but the description adds no 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 a specific verb (Capture) and resource (DOM snapshot), and 'compact agent-friendly' indicates the format. It distinguishes from siblings like browser_inspect_element which focuses on a single element, though it doesn't explicitly name 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 on when to use this tool versus alternatives. The description lacks any mention of use cases, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_get_failed_requestsB
Return failed HTTP and transport requests with likely causes.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| sessionId | No | Browser session ID; optional when exactly one session exists. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses the output (failed requests with likely causes) and implicitly indicates a read-only operation via 'Return', but omits details about pagination, limit behavior, session scope, or side effects. For a simple retrieval tool, this is minimally adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It efficiently conveys the tool's 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?
Given the simplicity (2 parameters, no output schema), the description explains the return type and purpose, but lacks any context about usage limits, session behavior, or related errors. It is minimally complete but not thorough.
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 50% (only sessionId has a description). The tool description adds no parameter information, leaving limit's purpose unclear (inferred only from its name). It fails to compensate for the undocumented 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 returns failed HTTP and transport requests with likely causes, using a specific verb ('Return') and resource. It distinguishes itself from sibling browser_get_network_requests by focusing on failures.
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 on when to use this tool versus siblings like browser_get_network_requests or browser_get_request_details. The description only states what it does without mentioning alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_get_network_requestsC
Query buffered network request history with diagnostic filters.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| method | No | ||
| search | No | ||
| status | No | ||
| sessionId | No | Browser session ID; optional when exactly one session exists. | |
| failedOnly | No | ||
| resourceType | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must fully disclose behavioral traits but only offers the word 'buffered,' implying a stored history rather than a live stream. It does not clarify the read-only nature, buffer limits, session requirements, or error behavior, which is a significant omission for a diagnostic tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-formed sentence that front-loads the core purpose without redundant words. It is concise, but the extreme brevity leaves necessary details unaddressed, making it efficient yet under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 parameters, no output schema, no annotations), the description is woefully incomplete. It does not explain parameter meanings, return data format, or when to use the tool relative to its 18 siblings, so it fails to provide enough context 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 only 14% (only sessionId has a description), and the tool description fails to add any detail about the seven parameters. The phrase 'diagnostic filters' is too vague to convey the meanings of limit, method, search, status, failedOnly, and resourceType, so it does not compensate for the schema's low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Query buffered network request history with diagnostic filters' clearly uses a specific verb 'Query' and specifies the resource as 'buffered network request history,' making its purpose understandable. It is somewhat distinguishable from the sibling 'browser_get_failed_requests' (which targets only failed requests), but it does not explicitly name 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?
The description provides no guidance on when to use this tool versus alternatives such as browser_get_failed_requests or browser_get_request_details. There is no mention of appropriate contexts, exclusions, or prerequisites, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_get_page_infoB
Return page URL, viewport, loading state, and resource counts.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | No | Browser session ID; optional when exactly one session exists. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears the full burden of behavioral disclosure. It implies a read-only operation via the verb 'Return,' but does not explicitly state that it avoids page modification, whether a valid session is required, or what happens if the session is invalid. Prerequisites and side effects are unaddressed.
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 lists all key return fields with no filler or redundancy. Every word earns its place, making it maximally concise and 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?
For a simple tool with one optional parameter and no output schema, the description gives a useful summary of return categories but lacks specificity about their format or structure (e.g., viewport dimensions, loading state values, which resource types are counted). This leaves some ambiguity about the exact response shape, but the core purpose is adequately conveyed.
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 does not mention the sessionId parameter at all, but the input schema provides a complete description ('Browser session ID; optional when exactly one session exists.'). Since schema description coverage is 100%, the description is not required to add parameter detail; 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 uses a specific verb ('Return') and enumerates the exact resource contents (page URL, viewport, loading state, resource counts), making it unmistakable what the tool does. This distinguishes it from sibling tools that focus on specific details like DOM snapshots or network requests, as no other sibling matches this combination of fields.
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 browser_get_dom_snapshot or browser_get_network_requests. The intended use is only implied by the tool's name and described outputs, but no explicit when-to-use or when-not-to-use context is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_get_request_detailsC
Inspect one request, including a bounded textual response body when available.
| Name | Required | Description | Default |
|---|---|---|---|
| requestId | Yes | ||
| sessionId | No | Browser session ID; optional when exactly one session exists. | |
| includeResponseBody | No |
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 adds the 'bounded textual response body' qualifier, but does not clarify the read-only nature, error handling, session requirements, or define what 'bounded' means. Minimal disclosure for a tool with no annotation support.
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 is front-loaded with the core action and adds a relevant qualifier. Every word earns its place with no redundancy or digression.
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?
There is no output schema, so the description should explain what 'inspect one request' returns. It doesn't specify the fields (URL, status, headers, etc.) or the nature of the bounded body. Among many sibling inspection tools, it lacks contextual completeness for an agent to select and invoke correctly.
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 only 33% (only sessionId has a description). The tool description does not elaborate on requestId or includeResponseBody; it vaguely references response body but doesn't explain the parameter or default behavior, leaving key parameters undocumented.
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 it inspects a single request and includes a bounded textual response body when available. The phrase 'one request' distinguishes it from sibling list tools like browser_get_network_requests and browser_get_failed_requests, though it doesn't name them explicitly.
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 vs alternatives. It implies usage for inspecting a specific request, but doesn't mention alternative tools for listing requests or handling failures, nor does it provide any exclusions or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_inspect_elementB
Inspect an element, its layout, computed styles, and accessible identity.
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | ||
| sessionId | No | Browser session ID; optional when exactly one session exists. | |
| includeStyles | No | ||
| includeAncestors | No | ||
| includeAccessibility | 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 of behavioral disclosure. The verb 'inspect' implies a read-only operation, and the description enumerates the kinds of information returned (layout, styles, accessibility), which is useful. However, it does not explicitly state that the tool makes no changes to the browser state or mention any requirements such as an active session, leaving some 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, concise sentence that is front-loaded with the verb 'Inspect' and the object 'an element'. Every word contributes value, and there is 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?
Given the tool has 5 parameters, no output schema, and no annotations, the description is underspecified. It provides only a high-level overview of what the tool does, without details on how selectors are interpreted, what the return structure looks like, or how flags like includeAncestors affect the output. For a tool of this complexity, more context is needed for an agent to invoke it correctly.
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 only 20%, so the description must compensate for the undocumented parameters. The phrase 'layout, computed styles, and accessible identity' hints at includeStyles and includeAccessibility, but it does not explain selector format, includeAncestors, or sessionId semantics beyond what the schema already provides. The description adds some meaning but not enough to fully offset the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'inspect' and identifies the resource as 'an element', enumerating the key aspects (layout, computed styles, accessible identity). It clearly conveys the tool's function, and the focus on a single element distinguishes it from broader tools like browser_get_dom_snapshot, though it does not explicitly name 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 on when to use this tool versus alternatives such as browser_get_dom_snapshot or browser_get_accessibility_issues. The intended use case is only implied by the name and description, with no explicit context, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_launchC
Launch a new Chromium instance and start collecting DevTools events.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| headless | No | ||
| viewportWidth | No | ||
| viewportHeight | 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 mentions that DevTools events are collected, but does not disclose other significant behaviors such as whether the provided URL is navigated to, whether the browser blocks on load, whether a headless instance is launched by default, or what return value is provided. This is a significant gap for a launch 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 concise sentence that front-loads the primary action. It avoids filler and is easy to scan. However, it is so minimal that it borders on under-specification, but for conciseness alone it is effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's role as an initial setup step in a browser automation suite, the description is incomplete. It does not explain how this tool relates to sibling tools, what 'collecting DevTools events' entails, or how to use the returned data. No output schema or annotations exist, so the description should have provided more context but does not.
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 lack of parameter documentation, but it does not mention any of the four parameters (url, headless, viewportWidth, viewportHeight). The schema provides only types and defaults, with no semantic meaning, and the description adds nothing to clarify what these parameters control.
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 action ('Launch') and the resource ('a new Chromium instance'), and adds a second purpose ('start collecting DevTools events'). This distinguishes it from siblings like browser_connect (which implies connecting to an existing instance) and browser_navigate (which implies an existing browser).
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 guidance is provided. The description does not mention when to use this tool versus alternatives like browser_connect, nor does it state any prerequisites (e.g., 'use this before other browser tools'). The implied usage is not explicit, so it falls short of even the 'implied usage' level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_press_keyB
Press a keyboard key or chord on the page or a selected element.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| selector | No | ||
| sessionId | No | Browser session ID; optional when exactly one session exists. |
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 mentions pressing a key or chord but does not explain side effects (e.g., triggering keydown/input events), whether it focuses the element first, or if it requires a selected element. This is a significant transparency gap for a tool that can alter page state.
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 words. Every word earns its place, conveying the action and target 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 but lacks annotations and output schema. The description does not mention return value, session requirements, or behavior when no selector is provided. For a mutation-like action, more context (e.g., how to specify chords, whether it works without a focused element) is needed; the minimal description leaves important gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (only sessionId has an inline description). The tool description adds meaning to 'key' as a keyboard key/chord and to 'selector' via 'selected element', but does not provide syntax examples or clarify behavior when selector is omitted. It partially compensates for the schema's low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Press' and the resource 'keyboard key or chord', with optional 'selected element' scope. This distinguishes it from sibling tools like browser_click (mouse) and browser_fill (text input), providing specific action and target.
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. The description implies keyboard interaction but does not state when to choose it over sibling tools, nor prerequisites (e.g., active session, focused element).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_screenshotA
Capture a page or element screenshot in the controlled output directory.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | png | |
| quality | No | ||
| fullPage | No | ||
| selector | No | ||
| sessionId | No | Browser session ID; optional when exactly one session exists. |
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. It discloses that the screenshot is saved to a controlled output directory, which is a useful behavioral trait, but it does not mention whether the operation is read-only, how the output file is named, or what 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?
The description is one concise sentence that front-loads the main purpose. Every word contributes useful meaning without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 parameters, no output schema, and no annotations, the description is too sparse to be complete. It lacks information about accepted formats, output file details, return values, or how selectors and full-page capture work.
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 only 20% (only sessionId is described). The description's mention of 'page or element' hints at fullPage vs selector, but it does not explain format, quality, or other parameters. The description only partially compensates for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool captures a page or element screenshot, using a specific verb and resource. It distinguishes from sibling tools like browser_get_dom_snapshot or browser_inspect_element by explicitly targeting visual screenshots.
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 a visual screenshot is required, but it does not explicitly state when to use this tool over alternatives, nor does it mention exclusions or alternative tools for non-visual inspection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_selectC
Select an option by value, label, or index.
| Name | Required | Description | Default |
|---|---|---|---|
| index | No | ||
| label | No | ||
| value | No | ||
| selector | Yes | ||
| sessionId | No | Browser session ID; optional when exactly one session exists. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavioral traits. It only states the selection methods (value, label, index) but doesn't mention behavior when no match is found, multiple matches exist, or whether it requires the element to be visible. This is a significant gap for a browser automation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is front-loaded with the action and method. Every word adds value, and there is no unnecessary information 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?
Given the tool has 5 parameters, no annotations, and no output schema, the description is inadequate. It fails to explain parameter interdependencies, error handling, or return behavior. The tool is more complex than what a one-liner can sufficiently describe, leaving significant gaps for an agent to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema coverage is low (20%), and the description compensates somewhat by explaining that selection can be by value, label, or index. However, it doesn't clarify whether these are mutually exclusive, what 'index' means (0-based vs 1-based), or the relationship with the required selector parameter. Adding these details would be more helpful.
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 'select' and resource 'option', making the primary purpose clear. It distinguishes from sibling tools like browser_click and browser_fill, which perform different actions. However, it doesn't explicitly mention 'dropdown' or 'select element', so the scope could be slightly clearer.
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 on when to use this tool versus alternatives. It doesn't specify that it's intended for dropdown/select elements or clarify interactions with other browser tools. The usage context is entirely implied, which is insufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have clearly distinct purposes, though some overlap exists between related inspection tools (e.g., get_dom_snapshot vs inspect_element, get_network_requests vs get_failed_requests vs get_request_details). Descriptions adequately distinguish them, but an agent might occasionally hesitate when choosing between similar-sounding network or DOM tools.
All tools follow a consistent snake_case pattern with the 'browser_' prefix, and the verb-noun structure is uniform (get_*, click, fill, select, press_key, launch, connect, navigate, screenshot, compare_dom, close). This makes the tool set highly predictable and easy to navigate.
With 19 tools, the server is on the heavier side, bordering on the 16-25 range that feels dense. However, each tool addresses a specific DevTools need, so the count is justifiable, but it still feels a bit large for a focused lens. Streamlining could help.
The tool set covers a broad range of browser automation and DevTools activities including navigation, interaction, DOM inspection, network and console diagnostics, screenshots, accessibility, and session management. Minor gaps exist such as no explicit browser history navigation or JavaScript evaluation, but the core workflows are well supported.
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.
Browser-based QA for AI-built software. Test pages with real browsers via agents.
Stealth web automation for AI agents. Login, signup, navigate, screenshot.
Stealth web automation for AI agents. Login, signup, navigate, screenshot.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables AI coding assistants to control and inspect a live Chrome browser through Chrome DevTools. Provides browser automation, performance analysis, debugging capabilities, and network request monitoring.3,288,16550,859Apache 2.0
- AlicenseAqualityCmaintenanceEnables AI coding assistants to control and inspect a live Chrome browser for automation, debugging, performance analysis, and screenshot capture through Chrome DevTools.263,288,1653Apache 2.0
- -licenseNot gradedqualityNot gradedmaintenanceEnables AI coding assistants to control and inspect a live Chrome browser for automated debugging, performance analysis, and web interaction. It leverages Puppeteer and Chrome DevTools to provide capabilities like network monitoring, console logging, and automated browser actions.
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to control and inspect a live Chrome browser for automated web debugging, performance analysis, and Lighthouse audits. It allows agents to capture screenshots, monitor network requests, and measure Core Web Vitals using plain-English prompts.3,288,165Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/aakcay5656/devtools-lens-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server