Skip to main content
Glama
nolanbaxter

Local Browser MCP

by nolanbaxter

Local Browser MCP

CI License: MIT Node

A headless, agent-controllable real browser as an MCP server. It gives an agent (Claude Code, or any MCP client) a real Playwright browser pointed at your local dev servers — and any hosts you explicitly allow. Navigate, click, hover, fill, type, run JS, screenshot, snapshot the DOM, and read console/network, all over MCP.

The agent launches the browser, drives it headlessly, and it's torn down when the session ends. Because it normally only drives your own localhost, it can be given broad control without general-web-browsing risk; additional hosts are opt-in.

Install

Requires Node.js ≥ 20. The Chromium binary (~110 MB) is downloaded automatically on first install.

Add it to your MCP config (e.g. a project .mcp.json, your user config via claude mcp add, or your client's equivalent). npx runs it straight from this GitHub repo — no npm registry account needed (requires git on the machine):

{
  "mcpServers": {
    "local-browser": {
      "command": "npx",
      "args": ["-y", "github:NolanLT/local-browser-mcp"],
      "env": {
        "LOCAL_BROWSER_ALLOWED_HOSTS": "localhost,127.0.0.1"
      }
    }
  }
}

Restart your client. The tools appear with no other setup — MCP namespaces them under the server name, so they show up as local-browser: navigate, local-browser: click, and so on. (First run installs dependencies and downloads Chromium, then caches.)

If the package is also published to npm, you can swap the arg for the shorter ["-y", "local-browser-mcp"].

As a Claude Code plugin (GitHub marketplace)

/plugin marketplace add NolanLT/local-browser-mcp
/plugin install local-browser@local-browser-marketplace

The plugin's MCP server is the same npx invocation above.

Related MCP server: bwb-browser

Configuration (environment variables)

Variable

Default

Purpose

LOCAL_BROWSER_ENGINE

chromium

chromium (recommended) | firefox | webkit

LOCAL_BROWSER_ALLOWED_HOSTS

localhost,127.0.0.1

Comma-separated navigation allowlist

LOCAL_BROWSER_ALLOW_ALL

false

true allows any http/https host (see Security)

LOCAL_BROWSER_SKIP_BROWSER_DOWNLOAD

1 to skip the Chromium download on install

LOCAL_BROWSER_HTTP_PORT

If set, run in HTTP mode on this port (else stdio)

LOCAL_BROWSER_HTTP_HOST

127.0.0.1

HTTP bind address; use 0.0.0.0 for a directly-hosted box

LOCAL_BROWSER_TOKEN

If set, HTTP requests need Authorization: Bearer <token>

Remote / connector mode (claude.ai web & mobile, Cowork, Desktop connectors)

stdio only reaches clients on the same machine. To use this from claude.ai (web/mobile), Cowork, or a Desktop custom connector, run it in HTTP mode and expose it over public HTTPS — Anthropic's cloud connects to your endpoint, so it must be reachable and authenticated.

⚠️ A public endpoint can drive a real browser, including eval. Always set LOCAL_BROWSER_TOKEN and keep a tight LOCAL_BROWSER_ALLOWED_HOSTS (and LOCAL_BROWSER_ALLOW_ALL=false) before exposing it. Without a token the HTTP path is unauthenticated.

Quick start (tunnel)

# 1. Generate a secret and run in HTTP mode
export LOCAL_BROWSER_TOKEN=$(openssl rand -hex 32)
LOCAL_BROWSER_HTTP_PORT=3000 node dist/server.cjs
#   → [local-browser] HTTP MCP ready on http://127.0.0.1:3000/mcp

# 2. In another shell, expose it over public HTTPS (TLS terminates at the tunnel)
cloudflared tunnel --url http://127.0.0.1:3000     # or: ngrok http 3000
#   → https://something.trycloudflare.com

Then register the connector in claude.ai (also Desktop/Cowork): Customize → Connectors → "+" → name it, enter the public https://…/mcp URL, and put your token in the auth/Bearer field → Add → enable it per-conversation via the "+" in the composer.

Production (always-on)

Host on a box that can run Chromium (VPS, Fly.io, Render, a Playwright-deps container — not serverless edge, which can't spawn Chromium). Set LOCAL_BROWSER_HTTP_HOST=0.0.0.0, keep LOCAL_BROWSER_TOKEN on, and terminate TLS at a reverse proxy (Caddy/nginx) or pass real certs.

GET /health is always open (no secrets) for setup checks; everything else requires the token.

Tools

Tool

Purpose

navigate({ url })

Go to a URL (allowlist-validated)

screenshot({ fullPage?, selector?, format?, quality? })

Image to the agent; format: "jpeg" (+quality 1-100) for lighter captures, else PNG

snapshot()

Flat DOM/a11y snapshot { tag, role, text, ref }

click({ selector | ref })

Click an element

hover({ selector | ref })

Hover (e.g. open a dropdown)

fill({ selector, value })

Fill an input

type({ text })

Type into the focused element

press_key({ key })

Press a key/chord (Enter, Tab, Escape, Control+A, …)

eval({ expression })

Run JS in the page, return JSON result

console() / network()

Buffered console / recent requests

wait_for({ selector?, text?, timeoutMs? })

Wait for a condition

resize({ width, height })

Resize the viewport

reload() / back() / forward()

History nav

get_text()

Visible page text

tabs() / new_tab({ url? }) / switch_tab({ index }) / close_tab({ index? })

Tabs & popups

dialogs() / set_dialog_behavior({ behavior })

JS dialogs (auto-handled; accept/dismiss)

downloads()

Files downloaded this session (saved to LOCAL_BROWSER_DOWNLOAD_DIR)

allow_host / disallow_host / list_allowed

Allowlist management

ref values come from snapshot() (elements are tagged with data-lbmcp-ref), so click({ ref }) targets them reliably.

Security

  • Navigation is rejected unless the host is in LOCAL_BROWSER_ALLOWED_HOSTS (or ALLOW_ALL is on) and the protocol is http/https.

  • The browser uses a fresh, ephemeral profile — no saved cookies, logins, or passwords.

  • eval runs arbitrary JS with the page's full privileges. Harmless on your own dev site; powerful on a real one. With ALLOW_ALL on, every visited page is untrusted input (prompt- injection surface) and the agent can script it — keep ALLOW_ALL off unless you mean it.

  • There's no built-in approval dialog (the server is headless). When run under Claude Code, host additions and eval calls are gated by Claude Code's own per-tool permission prompts.

  • In HTTP mode there is no per-call prompt — the bearer token (LOCAL_BROWSER_TOKEN) is the gate. Set it before exposing the endpoint publicly, and keep the host allowlist tight. See Remote / connector mode.

Develop

npm install        # installs deps + downloads Chromium
npm run typecheck  # tsc --noEmit
npm run build      # bundle → dist/server.cjs
npm test           # spawn the built server, assert the MCP handshake + tool list

Run it by hand over stdio (it waits for JSON-RPC on stdin):

node dist/server.cjs

See CONTRIBUTING.md for the full dev/release workflow.

Project

License

MIT

Available Tools

27 tools
allow_hostA

Add a host (e.g. "github.com") to the navigation allowlist for this session. The client's own per-tool approval is the gate.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostYesHostname to allow, e.g. github.com

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full disclosure burden. It usefully discloses that the change is session-scoped and that the client's per-tool approval gates the action, which are real behavioral traits. It does not mention idempotency or the effect of re-allowing an already allowed host, but for a simple allowlist mutation this is adequate.

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

Conciseness5/5

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

Two concise sentences with no filler. The core action and example are front-loaded, and the session scope and approval caveat are placed second for added clarity.

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

Completeness4/5

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

For a one-parameter tool with no output schema, the description covers purpose, scope, and approval behavior. Minor gaps like idempotency or how to list allowed hosts are not critical for a correct call, so the definition is nearly complete.

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

Parameters3/5

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

Schema coverage is 100% and the only parameter already has a clear description with an example. The tool description adds context by tying the host to the navigation allowlist, but does not need to add further parameter semantics. Baseline 3 is appropriate.

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

Purpose5/5

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

The description states a specific action ('Add a host') with a clear resource ('the navigation allowlist') and scope ('for this session'), with a concrete example. It is unambiguous and distinguishes itself from siblings like disallow_host and list_allowed.

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

Usage Guidelines3/5

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

The description implies when to use it: before or when needing to navigate to a host not on the allowlist. It also clarifies session scoping and that client per-tool approval is the gate. However, it does not explicitly mention alternatives or conditions such as 'use disallow_host to remove' or 'use list_allowed to inspect', leaving some inference to the agent.

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

backB

Navigate back in history.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only restates the core action and does not mention whether it waits for page load, what happens at the start of history, or whether the action can fail.

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

Conciseness5/5

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

The description is a single five-word sentence with no filler. It is concise, front-loaded, and every word contributes to the meaning.

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

Completeness3/5

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

For a zero-parameter tool with no output schema, the description is minimally viable. However, it omits behavioral context such as boundary behavior at the start of history and whether navigation is synchronous, leaving some assumptions to the agent.

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

Parameters4/5

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

The tool has zero parameters and schema coverage is 100%, so there is nothing meaningful for the description to add. The baseline of 4 applies because the absence of parameters is already fully clear from the schema.

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

Purpose4/5

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

The description states a clear action — navigating back in history — with a specific verb and resource. It is unambiguous, though it does not explicitly differentiate itself from siblings like navigate or forward beyond the word 'back'.

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool versus siblings such as navigate or forward, nor any mention of conditions or exclusions. The agent must infer usage context entirely from the tool name and sibling list.

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

clickB

Click an element by CSS selector or by a ref from snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNo
selectorNo

TDQS

B3.2/5.0
Behavior2/5

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 two input mechanisms but does not state what happens when both are provided, whether the element must be visible or attached, what errors can occur, or what the click triggers. The wording is minimal rather than behaviorally transparent.

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

Conciseness4/5

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

A single sentence with no filler, and the core scoping information is front-loaded. It is appropriately concise, though it could carry a bit more useful context without becoming bloated.

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

Completeness3/5

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

For a simple click tool the definition is close to adequate, but it lacks usage context, parameter precedence, error behavior, and return value information. With no output schema or annotations, the description does not fully stand alone.

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

Parameters3/5

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

Schema coverage is 0% and the parameters are bare strings. The description adds useful meaning by clarifying that selector means a CSS selector and ref means a ref from snapshot, but it leaves format, optionality, and precedence unspecified.

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

Purpose5/5

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

The description uses a specific verb 'Click' with the resource 'an element' and clearly identifies the two targeting mechanisms (CSS selector or ref). This is enough to distinguish it from sibling tools like hover, type, and press_key.

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

Usage Guidelines2/5

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

No guidance is given on when to use click over sibling tools, when to prefer ref over selector, or whether certain conditions must be met before clicking. There are no exclusions, alternatives, or prerequisites described.

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

close_tabA

Close a tab by index, or the active tab if no index is given. Returns the updated tab list.

ParametersJSON Schema
NameRequiredDescriptionDefault
indexNo

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral burden. It does disclose the default behavior and the return value, which is helpful. However, it does not mention what happens on an invalid index, whether the operation is irreversible, or that closing the active tab may invalidate the current browsing context.

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

Conciseness5/5

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

The description is two short sentences with no filler. The core behavior is front-loaded and the return value is stated compactly.

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

Completeness4/5

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

For a simple one-parameter tool with no output schema or annotations, the description covers purpose, optional parameter semantics, default behavior, and return value. The main omissions are error behavior and index base, which are relatively minor for this tool.

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

Parameters4/5

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

Schema coverage is 0%, so the description must add meaning. It does: 'index' is optional and defaults to closing the active tab. It stops short of specifying zero-based indexing or accepted ranges, but for a single optional parameter this is reasonably complete.

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

Purpose5/5

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

The description uses a specific verb ('Close') and resource ('tab'), and clarifies both modes: by index or the active tab by default. This clearly distinguishes it from sibling tools like new_tab, switch_tab, and tabs.

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

Usage Guidelines3/5

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

The description implies when to use the tool: whenever a tab needs to be closed. It also gives guidance on parameter omission ('or the active tab if no index is given'), but it does not explicitly compare against alternatives or state 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.

consoleA

Return buffered console messages (log/warn/error) captured from the page.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

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 states that messages are 'buffered' and captured from the page, but it does not disclose whether reading clears the buffer, whether repeated calls return the same messages, or what the exact return structure is. Some behavior is transparent, but key details are missing.

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

Conciseness5/5

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

The description is one concise sentence with no filler. It front-loads the core behavior and the qualifying details (buffer, levels, page origin) are packed efficiently.

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

Completeness4/5

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

For a zero-parameter retrieval tool with no nested schema and no output schema, the description is largely complete. An agent can understand what the tool returns and from where, though a bit more detail about return format or buffer semantics would fully round it out.

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

Parameters4/5

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

The tool has zero parameters and schema coverage is 100%, so the description has no parameter burden to carry. The baseline of 4 applies because there are no parameters to explain.

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

Purpose5/5

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

The description uses a specific verb ('Return') with a clear resource ('buffered console messages') and specifies the message kinds included ('log/warn/error') and their origin ('captured from the page'). This clearly distinguishes it from siblings like network, dialogs, or downloads.

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

Usage Guidelines3/5

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

The description makes it clear the tool is for retrieving page console output, so the intended context is implied. However, it does not explicitly state when to prefer this tool over alternatives such as network or eval, nor does it mention any prerequisites like having navigated first.

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

dialogsA

Return JS dialogs (alert/confirm/prompt/beforeunload) the page has raised, and how each was handled.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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

No annotations are present, so the description carries the full behavioral burden. 'Return' clearly signals a read operation, and the description adds that each dialog's handling is included. It does not mention whether reading consumes the dialog list, but for a simple parameterless getter this is reasonably transparent.

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

Conciseness5/5

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

The description is a single focused sentence that front-loads the verb and resource, then adds specific dialog types and the handling detail. There is no filler or redundancy.

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

Completeness3/5

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

The tool is simple and parameterless, but there is no output schema and the description leaves 'how each was handled' underspecified. An agent still lacks a clear sense of the return shape, such as whether handling is expressed as accepted/dismissed, input values, or timestamps.

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

Parameters4/5

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

The input schema has zero properties, so there are no parameter semantics to document. Schema description coverage is 100%, and the description appropriately avoids inventing parameter details where none exist.

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

Purpose5/5

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

The description uses a specific verb ('Return') and identifies a precise resource: JS dialogs of types alert/confirm/prompt/beforeunload. It also states that the result includes handling outcomes, which clearly distinguishes it from siblings like set_dialog_behavior that configure dialog behavior.

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

Usage Guidelines3/5

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

The description implies the tool is for inspecting dialogs that the page has raised, but it does not explicitly state when to use it over alternatives such as set_dialog_behavior or snapshot. No exclusions, prerequisites, or alternative-selection conditions are provided.

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

disallow_hostB

Remove a host from the navigation allowlist.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostYes

TDQS

B3.3/5.0
Behavior2/5

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 states the action but does not disclose behavioral traits such as idempotency (what happens if the host is not in the allowlist), reversibility, or any side effects. For a mutation tool, 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.

Conciseness5/5

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

The description is a single concise sentence with no wasted words. It is front-loaded with the core action and resource, achieving maximum brevity.

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

Completeness2/5

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

For a tool with one parameter and no output schema or annotations, the description is too sparse. It omits parameter format, edge-case behavior, and any usage context. An agent needs more to call it correctly, especially regarding host input validation.

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

Parameters2/5

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

The schema has a single required parameter 'host' with 0% description coverage, and the tool description does not clarify the expected format (e.g., domain, URL, or exact string). The agent must guess the syntax, making this inadequate for correct invocation.

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

Purpose5/5

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

The description uses a specific verb ('Remove') and a clear resource ('host from the navigation allowlist'). It distinguishes from siblings like 'allow_host' (add) and 'list_allowed' (list) by its action, making the tool's purpose unambiguous.

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

Usage Guidelines3/5

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

The description implies usage through the verb 'Remove' versus 'allow_host', but it does not explicitly state when to choose this tool over alternatives or any prerequisites (e.g., host must already be allowed). No exclusion criteria or context are provided, so it relies on the agent to infer the appropriate situation.

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

downloadsA

List files downloaded during this session (url, filename, saved path).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden: it clearly signals a read-only listing operation, scopes results to the current session, and discloses the returned data fields. It does not elaborate on edge cases (e.g., empty history), but for a zero-parameter list tool this is reasonably transparent.

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

Conciseness5/5

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

A single sentence that front-loads the action and resource, with the output shape appended compactly. Every word earns its place; there is no redundancy or filler.

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

Completeness5/5

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

For a zero-parameter, no-output-schema tool, the description adequately covers what the agent needs: what it returns and the session scoping. There is no missing information critical for invoking this tool correctly.

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

Parameters4/5

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

There are zero parameters, so the baseline of 4 applies. The description does not need to add parameter meaning, and the parenthetical output fields give useful context beyond the empty schema.

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

Purpose5/5

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

The description uses a specific verb ('List') with a clear resource ('files downloaded during this session') and states the payload fields (url, filename, saved path). It is unambiguous and distinguishable from the sibling set, none of which involve download listing.

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

Usage Guidelines2/5

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

The description gives no explicit guidance on when to use this tool versus alternatives, and no exclusion or prerequisite information. The use case is implied by the name and description, but the instruction to state when-not/alternatives is not satisfied.

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

evalA

Evaluate a JavaScript expression in the page context and return the JSON-serializable result. Runs with the page's full privileges — the client's own per-tool approval is the gate.

ParametersJSON Schema
NameRequiredDescriptionDefault
expressionYes

TDQS

A3.8/5.0
Behavior4/5

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

Even though no annotations are provided, the description discloses meaningful behavioral traits: execution happens in page context, it runs with page-full privileges, the client's per-tool approval is the gate, and the result is JSON-serializable. This gives agents an appropriate sense of risk and output constraints, though it does not detail side effects or asynchronous behavior.

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

Conciseness5/5

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

Two short sentences carry the essential information with no filler. The core operation and return contract appear first, and the important security/privilege warning follows naturally. Every clause earns its place.

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

Completeness4/5

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

For a single-parameter, no-output-schema tool with no annotations, the description covers the operation, return format, and security model. It is adequate for an agent to invoke the tool safely, though it could be more complete with error or side-effect details. Overall it is strong given the tool's simplicity.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate for the single 'expression' parameter. It adds that the value must be a JavaScript expression executed in page context and that its result must be JSON-serializable. This is helpful, but it leaves details like statement vs expression syntax, promise handling, and serialization failure behavior unaddressed.

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

Purpose5/5

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

The description uses a specific verb ('Evaluate') and resource ('JavaScript expression in the page context'), and it distinguishes the tool from browser-automation siblings by focusing on code execution. It also clarifies the return type ('JSON-serializable result'). This uniquely identifies what eval does among the sibling set.

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

Usage Guidelines2/5

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

No guidance is given about when to use eval versus alternatives, and there are no exclusions or conditions stated. The approval note explains permission context but does not help an agent decide when this tool is the right choice compared to console, get_text, or other siblings.

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

fillC

Fill an input/textarea identified by a CSS selector with the given value.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYes
selectorYes

TDQS

C2.9/5.0
Behavior2/5

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 does not disclose whether the fill replaces existing content, triggers events, waits for visibility, or errors when the selector is not found. The description only states 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.

Conciseness5/5

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

A single, front-loaded sentence with no filler or redundancy. Every word contributes to understanding what the tool does.

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

Completeness2/5

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

Given no annotations and no output schema, the description is too thin for an agent to fully anticipate behavior. It lacks side effects, prerequisites, and failure behavior, which are relevant for a tool that modifies a page.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It usefully clarifies that 'selector' is a CSS selector and that 'value' is the value to fill, but it adds no further detail about value formatting or selector behavior.

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

Purpose4/5

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

States a specific verb ('Fill'), a clear resource ('input/textarea'), and the mechanism ('identified by a CSS selector') with the value to set. It is clear about what the tool operates on, though it does not explicitly distinguish itself from the sibling 'type' tool.

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

Usage Guidelines2/5

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

Provides no guidance on when to use fill versus alternatives like type, or any conditions or exclusions. The agent is left to infer when this tool is appropriate relative to its siblings.

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

forwardA

Navigate forward in history.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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 simply states the action without explaining what happens if there is no forward history, whether it triggers a page load, or how errors are handled. This lack of behavioral context is a significant gap for a zero-annotation tool.

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

Conciseness5/5

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

The description is a single, four-word sentence that is perfectly concise. It contains no fluff or redundant information, and the key action is front-loaded.

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

Completeness3/5

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

For a zero-parameter tool with no output schema, the description covers the core action but omits contextual details like prerequisites (e.g., must have navigated back first) and failure behaviors. It is adequate for understanding the basic purpose but incomplete for robust agent decision-making.

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

Parameters4/5

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

The tool has zero parameters, so there is no semantic gap for the description to fill. Per the rubric, a tool with no parameters receives a baseline score of 4.

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

Purpose5/5

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

The description clearly specifies the action: navigate forward in history. It distinguishes itself from sibling tools like 'back' (the inverse) and 'navigate' (which typically goes to a specific URL) by indicating direction within the browsing history.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool versus alternatives. It does not mention that forward navigation only works after going back, nor does it name or contrast with similar tools. Usage is only implied by the noun 'forward', which is insufficient for an agent deciding between this and other navigation tools.

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

get_textB

Return the visible text content of the page body.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not mention return format (e.g., plain string, encoded text), behavior on dynamic content, or whether it waits for page load. The phrase 'visible text' implies it excludes hidden elements, but this is not confirmed.

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

Conciseness5/5

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

The description is a single, concise sentence that is front-loaded with the core action and resource. Every word serves a purpose, and there is no redundancy.

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

Completeness2/5

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

For a tool with no parameters and no annotations, the description should cover return format, timing, and exclusions, but it only states the basic purpose. The absence of output schema means the agent cannot infer return details from structured metadata, so these gaps are significant.

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

Parameters4/5

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

The tool has zero parameters, and the schema coverage is 100% (no properties). The description adds value by clarifying what is returned, which is the only relevant semantic for a no-parameter tool. The baseline for zero params is 4, and the description meets that.

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

Purpose4/5

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

The description clearly identifies the verb ('Return') and the resource ('visible text content of the page body'), making the purpose obvious. It distinguishes itself from sibling tools like screenshot (visual) and snapshot (likely structural/DOM), though it doesn't explicitly name them.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives like snapshot or eval. The agent must infer from the description that get_text is for visible text only, which is not explicitly stated.

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

hoverA

Hover the mouse over an element (by CSS selector or snapshot ref) — e.g. to open a dropdown menu.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNo
selectorNo

TDQS

A3.9/5.0
Behavior2/5

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

With no annotations provided, the description must disclose behavioral traits on its own. It only states the basic action without mentioning side effects, whether it waits for element visibility, triggers events, or any state changes. This is a significant gap for a tool that could have nuanced behavior.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. It efficiently conveys the action and targeting method, making it easy to parse.

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

Completeness3/5

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

For a simple two-parameter action with no output schema, the description covers the core usage and a common example. However, it omits behavioral details (e.g., whether hover triggers events, waits for element, or errors on missing element) that an agent might need for reliable execution, especially given the lack of annotations.

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

Parameters4/5

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

The schema lists two string parameters with no descriptions (coverage 0%), so the description compensates by explaining that 'selector' is a CSS selector and 'ref' is a snapshot ref, and implies they are alternatives. This adds meaning beyond the raw schema.

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

Purpose5/5

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

The description clearly states the action ('hover the mouse over an element') and specifies the two methods of targeting (CSS selector or snapshot ref). This distinguishes it from siblings like click, fill, and type, 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.

Usage Guidelines4/5

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

It provides a concrete example ('to open a dropdown menu') that signals a common use case. However, it does not explicitly contrast with alternatives (e.g., when to use click instead) or state exclusions, so it falls short of a 5.

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

list_allowedA

List the hosts the browser may navigate to, and whether all hosts are allowed.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral burden. 'List' clearly signals a non-mutating read operation, and the description discloses that the output includes both the hosts and a boolean indicating whether all hosts are allowed. It does not detail output format or ordering, but for a parameterless query this is largely sufficient.

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

Conciseness5/5

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

A single, front-loaded sentence that conveys both the primary action and the extra output component with no filler. Every word contributes meaning.

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

Completeness5/5

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

Given the tool's simplicity, zero parameters, and clear read-only purpose, the description is complete enough for an agent to invoke it correctly. The presence of sibling tools like allow_host and disallow_host gives sufficient context for how this fits into host management.

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

Parameters4/5

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

The tool has zero parameters, so the description does not need to explain parameter meanings. The baseline of 4 applies because the schema is vacuously complete at 100% coverage and no parameter clarifications are needed.

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

Purpose5/5

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

The description states a specific verb, 'List,' and a clear resource, 'hosts the browser may navigate to,' and adds the extra output element, 'whether all hosts are allowed.' This distinguishes it well from siblings like allow_host and disallow_host, which mutate host permissions.

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

Usage Guidelines3/5

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

The description implies the tool is used to inspect the current set of allowed hosts, and the naming convention suggests it complements allow_host and disallow_host. However, it does not explicitly state when to prefer this over alternatives, nor does it mention any verification workflow.

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

networkA

Return recent network requests (method, url, status, resourceType).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

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 says it returns requests, but does not clarify whether the list is cleared on retrieval, whether it includes pending requests, or whether it has side effects. For a read-like tool this is a notable gap.

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

Conciseness5/5

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

A single sentence that is fully front-loaded with the action and the returned fields. There is no filler or redundant phrasing; every word contributes to understanding the tool.

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

Completeness4/5

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

For a zero-parameter, simple getter, the description is largely complete: it names the resource and the fields returned. However, there is no output schema and the description does not explain the meaning of 'recent' (e.g., count limits, persistence), but these are minor for the simplicity of the tool.

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

Parameters4/5

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

The input schema is empty (0 parameters), so the baseline is 4 and no parameter documentation is needed. The description adds no parameter-related meaning, but none is required; there is nothing to compensate for.

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

Purpose5/5

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

The description states a specific verb ('Return') and resource ('recent network requests'), and enumerates the exact fields (method, url, status, resourceType) that make the purpose concrete. This clearly differentiates it from sibling tools like 'console' or 'downloads', which cover other event types.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, no mention of prerequisites, and no indication of whether it should be called before or after navigation. The description simply states what it returns, leaving the agent to infer usage context.

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

new_tabA

Open a new tab (optionally navigating to a URL) and make it active. Returns the updated tab list.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNo

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of explaining behavior. It clearly discloses that a new tab is opened, that navigation is optional, that the tab becomes active, and that the updated tab list is returned. This is meaningful transparency for a simple tab-creation operation.

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

Conciseness5/5

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

The description is a single, tightly written sentence that front-loads the core action, adds the key optional behavior, and notes the return value. Every clause earns its place with no redundancy.

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

Completeness4/5

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

Given the tool's low complexity, one optional parameter, and absence of an output schema, the description covers the essential behavior and return value. It is somewhat light on parameter detail and alternative routing, but it provides enough for an agent to call this tool correctly in most cases.

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

Parameters3/5

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

The single url parameter has no schema-level description, so the description's mention of 'optionally navigating to a URL' adds useful context by indicating the parameter is optional and controls navigation. It does not specify URL formatting or what happens when omitted, but the parameter name and string type make the basic meaning clear.

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

Purpose5/5

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

The description states a specific verb and resource: open a new tab, optionally navigate it to a URL, and make it active. This clearly distinguishes it from sibling tools like navigate, switch_tab, or close_tab by focusing on creating a new tab rather than operating on an existing one.

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

Usage Guidelines3/5

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

The intended use is implied by the description: use this when a new tab should be created and activated. However, it does not explicitly contrast with alternatives such as navigate (for changing the current tab) or switch_tab (for activating an already-open tab), leaving some routing to inference.

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

press_keyA

Press a key or chord on the keyboard (e.g. "Enter", "Tab", "Escape", "ArrowDown", "Control+A"). Useful to submit forms or navigate without a mouse.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesKey name or chord, e.g. "Enter" or "Control+A"

TDQS

A4/5.0
Behavior3/5

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 action and a likely consequence (form submission/navigation), but does not explain synthetic-event behavior, focus requirements, or side effects beyond pressing a key. 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.

Conciseness5/5

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

Two short sentences, front-loaded with the action, zero fluff. The first sentence conveys the operation and examples; the second adds the use case. Every sentence earns its place.

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

Completeness4/5

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

For a one-parameter, no-output-schema tool, the combination of description and schema is sufficient. It lacks only deeper side-effect or event-detail disclosure, which is a minor gap given the straightforward scope.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema already defines the 'key' parameter with examples matching the description. The description adds no additional parameter-level meaning, so it sits at the baseline of 3.

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

Purpose5/5

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

States a specific verb and resource: 'Press a key or chord on the keyboard.' The examples ('Enter', 'Tab', 'Escape', 'ArrowDown', 'Control+A') and the use case ('submit forms or navigate without a mouse') make it easy to distinguish from sibling tools like click, hover, or type.

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

Usage Guidelines4/5

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

Provides clear contexts: 'submit forms or navigate without a mouse.' However, it does not name alternatives (e.g., type for text, click for button activation) or explicitly state when not to use it, so the guidance is contextual but not comparative.

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

reloadB

Reload the current page.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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 does not state whether the reload waits for page load, discards unsaved form state, or returns any result, leaving important behavioral traits undisclosed.

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

Conciseness5/5

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

The description is a single sentence with no filler or redundant detail. It is appropriately sized for a zero-parameter tool and front-loads the action clearly.

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

Completeness3/5

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

The core behavior is stated, but with no output schema and no annotations, the description leaves some context unspecified, such as whether the tool waits for navigation to complete and how it relates to reload_and_snapshot. It is adequate for invocation but not fully complete.

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

Parameters4/5

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

The tool has zero parameters, so the baseline is 4. No parameter-level documentation is needed, and the description adds no parameter meaning because there are no parameters to clarify.

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

Purpose4/5

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

The description specifies the verb 'reload' and the resource 'current page', making the core action clear. However, it does not differentiate itself from the sibling tool reload_and_snapshot, which also reloads the current page but then takes a snapshot.

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

Usage Guidelines2/5

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

No guidance is given about when to use reload versus navigate, go_back, go_forward, or reload_and_snapshot. The agent must infer the appropriate context 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.

resizeB

Resize the page viewport.

ParametersJSON Schema
NameRequiredDescriptionDefault
widthYes
heightYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations and no output schema, the description is the only behavioral disclosure, but it contains no side effects, units, constraints, or postconditions. It does not contradict anything, but it also does not add any hidden behavior details.

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

Conciseness5/5

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

The description is one short sentence with no filler, making it easy to parse quickly. It earns its place, even if lean.

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

Completeness3/5

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

For a simple two-parameter tool this is barely adequate, but the absence of units or behavioral notes leaves room for mis-invocation. It covers the basic action but lacks enough context to be considered fully complete.

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

Parameters2/5

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

The schema has 0% description coverage and the description does not explain width/height units, interpretation, or constraints. The parameter names are self-evident, but the description adds no semantic value beyond the schema.

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

Purpose5/5

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

The description states exactly what the tool does with a specific verb ('Resize') and a clear target ('the page viewport'). It is concise and distinguishable from the sibling navigation and interaction tools.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool versus alternatives or any prerequisites. The description merely states the action, leaving the agent to infer context.

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

screenshotB

Capture a screenshot of the current page (optionally full page or a single element). Use format 'jpeg' (with optional quality 1-100) for a lighter, faster capture; 'png' (default) is lossless.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNo
qualityNoJPEG quality 1-100 (default 70); ignored for png
fullPageNo
selectorNo

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses format tradeoffs, default png, quality range, and optional full page/element capture. However, it does not state the return type (e.g., image data or file path), default viewport behavior, or what the 'selector' parameter expects. It adds useful behavioral context but leaves significant gaps.

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

Conciseness5/5

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

The description is two sentences with no wasted words. The core action is front-loaded, and the format guidance is compactly integrated. Every clause earns its place.

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

Completeness3/5

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

For a 4-parameter tool with no output schema and no annotations, the description is moderately helpful but incomplete: it omits return value details and precise semantics for fullPage and selector. An agent could likely handle a basic viewport screenshot but may struggle with element capture or interpreting the result.

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

Parameters3/5

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

Schema description coverage is only 25% (only quality has a description), so the description must compensate. It explains format and quality tradeoffs and mentions full page/element options, but it does not clarify the exact semantics of fullPage (default value, viewport vs full scroll) or selector (CSS selector vs other syntax). It adds value but does not fully cover the undocumented parameters.

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

Purpose4/5

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

The description states a specific verb and resource: 'Capture a screenshot of the current page' with optional full page or element capture. It is clear about the tool's function, but it does not explicitly distinguish itself from the sibling 'snapshot' tool, so it falls short of a 5.

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

Usage Guidelines2/5

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

The description provides format-selection guidance ('jpeg' for lighter/faster capture, 'png' is lossless) but gives no guidance on when to use screenshot versus the sibling snapshot tool or other browser tools. There is no when-not-to-use information or alternative recommendations, leaving tool selection to inference.

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

set_dialog_behaviorA

Set how JS dialogs are auto-handled: 'accept' (default) or 'dismiss'. beforeunload is always dismissed.

ParametersJSON Schema
NameRequiredDescriptionDefault
behaviorYes

TDQS

A3.5/5.0
Behavior3/5

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 does disclose a key behavioral trait: beforeunload is always dismissed regardless of the setting. It also implies that the setting persists for subsequent dialogs. However, it doesn't disclose whether this setting is session-wide, per-page, or resets after navigation, nor does it mention any side effects or limitations. The description adds some value but leaves important behavioral questions unanswered.

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

Conciseness5/5

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

The description is a single, compact sentence that front-loads the core purpose and includes the key behavioral exception. Every word earns its place, and the structure is clear and efficient. No wasted words or redundant information.

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

Completeness3/5

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

For a simple one-parameter tool with an enum, the description is mostly adequate. It covers the core purpose, the parameter values, and a key behavioral exception. However, it lacks context about the scope of the setting (session, page, navigation), whether it affects all tabs or just the current one, and how it interacts with the 'dialogs' sibling tool. Given the tool's simplicity, this is a minor gap, but the missing scope information could lead to incorrect usage.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. The description does explain the two enum values ('accept' and 'dismiss') and their meaning, which adds value beyond the raw schema. However, it doesn't explain the exact effect of each choice in detail (e.g., what happens to the dialog, whether a callback is triggered), and the schema already provides the enum values. The description adds some semantic meaning but not comprehensive parameter documentation.

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

Purpose4/5

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

The description clearly states the tool's purpose: setting how JS dialogs are auto-handled, with 'accept' or 'dismiss' options. It distinguishes itself from sibling tools like 'dialogs' (which likely inspects dialogs) by focusing on the auto-handling behavior. However, it doesn't explicitly name a sibling alternative, so it loses a point for not fully differentiating from the 'dialogs' tool.

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

Usage Guidelines3/5

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

The description implies when to use this tool: when you want to control JS dialog auto-handling. It mentions the default behavior ('accept') and a special case (beforeunload is always dismissed), which gives some context. However, it doesn't explicitly state when NOT to use it or mention alternatives like 'dialogs' for inspecting dialogs, so usage guidance is only implied, not explicit.

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

snapshotA

Return a flat accessibility/DOM snapshot (tag, role, text, ref) for element targeting. Use a returned ref with click.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. 'Return a flat snapshot' implies a read-only operation and no side effects, but it does not explicitly state that it does not modify the page or disclose any performance or pagination considerations. While the behavior is largely inferable from the name and description, the lack of explicit confirmation about non-modification is a gap.

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

Conciseness5/5

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

The description is two sentences with zero fluff. It front-loads the output structure and then provides actionable usage in the same breath. Every word earns its place, making it highly efficient.

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

Completeness5/5

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

Given the tool's simplicity (no parameters, no output schema), the description is complete. It specifies the exact fields of the snapshot and how to consume them, which is all an agent needs to call and use the tool correctly. The absence of an output schema is compensated by the explicit field enumeration.

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

Parameters4/5

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

The tool has zero parameters, so the baseline is 4 per the rubric. The description adds value beyond the empty schema by explaining what the snapshot contains (tag, role, text, ref) and how the ref should be used, which is helpful for agents even though there is nothing to parameterize.

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

Purpose5/5

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

The description clearly states a specific verb (return), resource (flat accessibility/DOM snapshot), and the distinguishing content (tag, role, text, ref). It also ties the output to a concrete use case (element targeting) and names the sibling tool 'click' for downstream usage, making its purpose unambiguous and distinct from siblings.

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

Usage Guidelines4/5

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

The description gives explicit guidance: 'Use a returned `ref` with `click`.' This provides a clear next step and implies the tool is for obtaining targeting references. However, it does not mention when to prefer this over alternatives (e.g., get_text or screenshot) or any exclusions, leaving some inference for the agent.

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

switch_tabB

Switch the active tab by index (see tabs).

ParametersJSON Schema
NameRequiredDescriptionDefault
indexYes

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('switch') but does not disclose consequences such as what happens to the current tab, whether the operation is reversible, or error behavior for invalid indices. This is a significant gap for a state-changing tool.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. Every word earns its place, and the parenthetical pointer to `tabs` is an efficient way to link related tooling.

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

Completeness3/5

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

This is a simple tool with one parameter and no output schema, so the description is moderately complete. However, with no annotations, it should at least note that it changes browser state and handle out-of-range indices or return values. The current description covers the basic action but leaves behavioral edge cases unaddressed; a 3 reflects this minimal-but-clear coverage.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It mentions 'by index' and directs the agent to `tabs`, which helps infer the parameter's source, but it does not explain the indexing scheme (0-based, bounds, type semantics beyond schema). The description adds minimal meaning beyond the parameter name and type.

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

Purpose5/5

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

The description uses a specific verb ('Switch') and resource ('active tab') and clearly indicates the mechanism ('by index'). It also references the sibling tool `tabs`, which tells the agent where to obtain valid indices. This distinguishes it from related tab tools like new_tab, close_tab, and navigate.

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

Usage Guidelines3/5

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

The description implies the workflow: use `tabs` to get indices, then switch by index. However, it does not explicitly state when to prefer this tool over alternatives or any exclusions (e.g., limitations with multiple windows). The guidance is present but implicit, so it's adequate but not thorough.

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

tabsA

List open tabs (index, url, title, and which is active).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

The description clearly indicates a read-only operation by using 'List', and specifies the output fields, so an agent knows it does not modify browser state. However, it does not explicitly state that there are no side effects or mention any permissions or system requirements, which would be helpful given the absence of annotations.

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

Conciseness5/5

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

The description is a single sentence with no filler, front-loading the action and resource, then listing details. Every word earns its place.

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

Completeness5/5

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

For a zero-parameter, read-only listing tool, the description is complete: it states the action, the target (open tabs), and the returned fields (index, url, title, active flag). No output schema exists, but the description covers what an agent needs to call it correctly.

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

Parameters4/5

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

The tool has no parameters, so the schema fully documents everything. The description adds no parameter information, but none is needed. Baseline 4 is appropriate.

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

Purpose5/5

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

The description states a specific verb ('List') and resource ('open tabs'), and enumerates the fields returned (index, url, title, active). This clearly distinguishes it from sibling tools like switch_tab and new_tab, which perform different actions on tabs.

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

Usage Guidelines3/5

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

The description implies usage (when you need to see open tabs) but does not explicitly mention when to use it over alternatives like switch_tab or new_tab. There is no guidance on prerequisites or related tools, so an agent must infer the use case.

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

typeB

Type text using the keyboard into the currently focused element.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It discloses that this simulates keyboard input and requires focus, but it does not say whether existing text is replaced or appended, how special characters/newlines are handled, or what side effects may occur.

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

Conciseness4/5

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

The description is a single concise sentence with no wasted words. It would earn a 5 if it also included a brief usage hint, but as written it is efficient and front-loaded.

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

Completeness3/5

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

For a simple one-parameter tool, the description covers the core operation reasonably well)Skip—what it does and where. However, it omits practical context like whether the text appends or replaces existing inputiard and when to prefer fill, which an agent would need to avoid mistakes.

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

Parameters3/5

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

The schema provides no description for text, so the parameter's meaning relies entirely on the tool description. The description makes clear that text is what gets typed, which is adequate for a single untyped string, but it adds no format details such as support for newlines or special keys.

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

Purpose5/5

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

The description specifies a concrete action ('Type text using the keyboard') and identifies the target resource ('the currently focused element'). This separates it from sibling tools like navigate or screenshot, and from fill, which might target form fields differently.

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

Usage Guidelines2/5

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

The description implies the element must already be focused, but it does not explain when to choose type over fill, press_key, or other input-related siblings, nor does it mention any prerequisites like clicking or focusing first.

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

wait_forC

Wait for a selector to become visible, for text to appear, or for a short delay.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNo
selectorNo
timeoutMsNo

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description must fully disclose behavior, but it omits key traits: what happens on timeout, whether an error is thrown, polling/checking behavior, and whether timeoutMs represents a delay or a timeout limit. It names three modes but does not explain their semantics beyond surface level.

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

Conciseness4/5

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

The description is a single efficient sentence and is easy to parse. It front-loads the primary action, though it omits important detail; this is conciseness but also under-specification.

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

Completeness2/5

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

For a tool with no annotations, no output schema, and three undocumented parameters, the description is incomplete. An agent cannot determine timeout behavior, parameter interaction, or whether calling with no arguments is valid. The described modes give some context but leave critical operational details unspecified.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It mentions 'selector', 'text', and 'short delay', loosely mapping to the three properties, but it does not clarify units for timeoutMs, whether the parameters are mutually exclusive, or what happens when multiple are supplied. This is insufficient for correct invocation.

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

Purpose4/5

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

The description states a clear action ('wait for') and identifies the resources: a selector becoming visible, text appearing, or a short delay. It distinguishes the tool from siblings by its synchronization purpose, though it does not explicitly name an alternative or contrast behavior.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, no prerequisites, and no mention of when not to use it. The description implies a synchronization use case but leaves the agent to infer context.

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

Tool Schema Changelog

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

  1. 54 tool updatesv0.4.0
    • Addedallow_host
    • Addedback
    • Removedbrowser_allow_host
    • Removedbrowser_back
    • Removedbrowser_click
    • Removedbrowser_close_tab
    • Removedbrowser_console
    • Removedbrowser_dialogs
    • Removedbrowser_disallow_host
    • Removedbrowser_downloads
    • Removedbrowser_eval
    • Removedbrowser_fill
    • Removedbrowser_forward
    • Removedbrowser_get_text
    • Removedbrowser_hover
    • Removedbrowser_list_allowed
    • Removedbrowser_navigate
    • Removedbrowser_network
    • Removedbrowser_new_tab
    • Removedbrowser_press_key
    • Removedbrowser_reload
    • Removedbrowser_resize
    • Removedbrowser_screenshot
    • Removedbrowser_set_dialog_behavior
    • Removedbrowser_snapshot
    • Removedbrowser_switch_tab
    • Removedbrowser_tabs
    • Removedbrowser_type
    • Removedbrowser_wait_for
    • Addedclick
    • Addedclose_tab
    • Addedconsole
    • Addeddialogs
    • Addeddisallow_host
    • Addeddownloads
    • Addedeval
    • Addedfill
    • Addedforward
    • Addedget_text
    • Addedhover
    • Addedlist_allowed
    • Addednavigate
    • Addednetwork
    • Addednew_tab
    • Addedpress_key
    • Addedreload
    • Addedresize
    • Addedscreenshot
    • Addedset_dialog_behavior
    • Addedsnapshot
    • Addedswitch_tab
    • Addedtabs
    • Addedtype
    • Addedwait_for
  2. 19 tool updatesv0.3.0
    • Changedbrowser_allow_host1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedbrowser_click1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Addedbrowser_close_tab
    • Addedbrowser_dialogs
    • Changedbrowser_disallow_host1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Addedbrowser_downloads
    • Changedbrowser_eval1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedbrowser_fill1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedbrowser_hover1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedbrowser_navigate1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Addedbrowser_new_tab
    • Addedbrowser_press_key
    • Changedbrowser_resize1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedbrowser_screenshot3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / format
        Added value: +{
        +  "enum": [
        +    "png",
        +    "jpeg"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / quality
        Added value: +{
        +  "description": "JPEG quality 1-100 (default 70); ignored for png",
        +  "maximum": 100,
        +  "minimum": 1,
        +  "type": "number"
        +}
    • Addedbrowser_set_dialog_behavior
    • Addedbrowser_switch_tab
    • Addedbrowser_tabs
    • Changedbrowser_type1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedbrowser_wait_for1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
  3. 19 tool updatesv0.2.0
    • First observedbrowser_allow_host
    • First observedbrowser_back
    • First observedbrowser_click
    • First observedbrowser_console
    • First observedbrowser_disallow_host
    • First observedbrowser_eval
    • First observedbrowser_fill
    • First observedbrowser_forward
    • First observedbrowser_get_text
    • First observedbrowser_hover
    • First observedbrowser_list_allowed
    • First observedbrowser_navigate
    • First observedbrowser_network
    • First observedbrowser_reload
    • First observedbrowser_resize
    • First observedbrowser_screenshot
    • First observedbrowser_snapshot
    • First observedbrowser_type
    • First observedbrowser_wait_for

TDQS

B3.4/5.0

Scored across 27 tools

Disambiguation5/5

Each tool targets a distinct browser action (navigation, interaction, inspection, tab management, dialogs, downloads, allowlist). No significant overlap; `snapshot` vs `get_text` and `fill` vs `type` are clearly differentiated.

Naming Consistency5/5

All tools use lowercase_with_underscores, with action-oriented verbs (e.g., `navigate`, `click`, `wait_for`, `new_tab`). Consistent pattern throughout.

Tool Count2/5

With 27 tools, the server exceeds the recommended range. While the breadth is comprehensive, it pushes into the 'too many' territory, risking agent confusion and maintenance overhead.

Completeness4/5

The tool set covers core browser operations well, but lacks explicit tools for URL retrieval, scrolling, and cookie management. However, `eval` can work around these gaps, so coverage is mostly complete.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    MCP server that connects AI agents to a real Chrome browser via a WebSocket extension bridge, enabling over 40 browser control tools without debug mode or profile isolation.
    -
  • A
    license
    B
    quality
    A
    maintenance
    A lightweight 30KB MCP browser automation server that uses raw Chrome DevTools Protocol to enable AI agents to browse the web, take screenshots, interact with elements, and capture live page events like console logs and network requests.
    26
    7 npm
    15
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    An MCP server that gives AI clients controlled access to a real headless browser with domain allowlisting, SSRF protection, per-session isolation, audit logging, and persistent cookies/state across restarts.
    6 npm
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    A zero-dependency MCP server that drives a real Chrome browser through a companion extension, enabling AI agents to automate real user sessions with trusted input events, compact accessibility-tree snapshots, and 14 tools for navigation, interaction, scripting, and inspection.
    302 npm
    1
    MIT