Skip to main content
Glama
NolanLT

Local Browser MCP

by NolanLT

Local Browser MCP

CI License: MIT Node

A headless, agent-controllable real browser as an MCP server. It gives an AI agent (Claude Code, or any MCP client) a real Playwright browser pointed at your local dev servers — and any hosts you explicitly allow — with no VS Code and no GUI required. The agent launches the browser, drives it, and it's torn down when the session ends.

Navigate, click, hover, fill, type, run JS, screenshot, snapshot the DOM, and read console/network — all over MCP. Because it normally only drives your own localhost, it's given broad control without general-web-browsing risk; additional hosts are opt-in.

Install

Requires Node.js ≥ 18. 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 browser_* tools appear with no other setup. (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 browser_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

browser_navigate({ url })

Go to a URL (allowlist-validated)

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

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

browser_snapshot()

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

browser_click({ selector | ref })

Click an element

browser_hover({ selector | ref })

Hover (e.g. open a dropdown)

browser_fill({ selector, value })

Fill an input

browser_type({ text })

Type into the focused element

browser_press_key({ key })

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

browser_eval({ expression })

Run JS in the page, return JSON result

browser_console() / browser_network()

Buffered console / recent requests

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

Wait for a condition

browser_resize({ width, height })

Resize the viewport

browser_reload() / browser_back() / browser_forward()

History nav

browser_get_text()

Visible page text

browser_tabs() / browser_new_tab({ url? }) / browser_switch_tab({ index }) / browser_close_tab({ index? })

Tabs & popups

browser_dialogs() / browser_set_dialog_behavior({ behavior })

JS dialogs (auto-handled; accept/dismiss)

browser_downloads()

Files downloaded this session (saved to LOCAL_BROWSER_DOWNLOAD_DIR)

browser_allow_host / browser_disallow_host / browser_list_allowed

Allowlist management

ref values come from browser_snapshot() (elements are tagged with data-lbmcp-ref), so browser_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.

  • browser_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

Run it directly for a stdio smoke test:

node dist/server.cjs

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

Project

License

MIT

Available Tools

27 tools
browser_allow_hostA

Request permission to add a host (e.g. "github.com") to the navigation allowlist. The user is asked to approve; returns whether it was granted.

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 burden. It transparently discloses that user approval is required and that a boolean return indicates grant status. This adds meaningful behavioral context beyond the schema, though it could mention side effects or error cases.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the primary purpose, and contains no filler. 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?

The description is adequate for a simple one-parameter permission tool: it explains the action, user interaction, and return value. Lacking explicit side-effect details or usage context, but overall complete 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 100%, with the parameter already well-described as a hostname. The tool description repeats the example 'github.com', adding no significant new meaning 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 clearly states the tool's function: requesting permission to add a host to the navigation allowlist. It specifies the resource (host) and distinguishes it from related tools like browser_disallow_host and browser_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 usage when a host needs to be allowed, but does not explicitly state when to use this tool versus alternatives like disallow_host or list_allowed. No exclusions or conditions are provided.

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

browser_backA

Navigate back 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, the description carries the full burden of behavioral disclosure, but it provides only the basic action. It does not state what happens when there is no history, whether the page state is preserved, or any side effects of going back.

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 with no filler or repetition. It is appropriately sized for such a simple operation.

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 trivial tool with no parameters, the description is minimally adequate but lacks behavioral context such as failure modes or state changes. Since there are no annotations or output schema, a few extra details would make it more 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, and the schema covers 100%, so the baseline is 4. The description adds nothing about parameters, but none 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 clearly states the tool's action: navigating back in browser history. It uses a specific verb ('navigate back') and resource ('history'), distinguishing it from siblings like browser_forward and browser_navigate.

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

Usage Guidelines2/5

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

The description offers no guidance on when to use this tool versus alternatives. It does not mention browser_forward for forward navigation or browser_navigate for direct URLs, leaving the agent without exclusions or context.

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

browser_clickA

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

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?

No annotations are provided, so the description carries the full burden. It only describes how to identify the element, but discloses no behavior such as waiting, error handling, side effects, or return values. For an interaction 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?

One concise sentence, front-loaded with the verb and resource, with no filler. Efficiently communicates the core function.

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 with only two optional parameters and no output schema, the description is minimally adequate. However, it leaves open questions about return values, waiting behavior, and failure handling, which are relevant in a browser automation context.

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 description explicitly explains the meaning of both parameters ('CSS selector' and 'ref from browser_snapshot'), compensating for the 0% schema description coverage. However, it does not clarify precedence or exclusivity between the two parameters.

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 ('Click an element') and specifies two identification methods (CSS selector or ref from browser_snapshot), distinguishing it from sibling tools like browser_hover and browser_fill.

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 implies clear usage context for clicking an element, but does not explicitly mention when not to use it or compare with alternatives. The context is evident enough for an agent to decide.

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

browser_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.1/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. It discloses two behavioral traits: the default action when no index is given and the fact that it returns the updated tab list. However, it omits important edge-case behaviors such as whether the index is zero-based, what happens on an invalid index, or whether closing the last tab terminates the browser. These gaps prevent a higher score.

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

Conciseness5/5

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

The description is two concise sentences. The first sentence states the core action and the parameter, the second sentence describes the return value. There is no redundant or filler language, and the front-loading is effective.

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-optional-parameter tool, the description covers the main behavior and return value, which is helpful since there is no output schema. However, it leaves out practical details such as indexing convention (zero-based vs one-based) and error handling for out-of-range indices. These are relevant in a browser automation context, making the description 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 input schema provides only a property name 'index' with a type number and zero documentation. The description adds key meaning: the index identifies which tab to close, and omitting it means the active tab is closed. This explains the parameter's role and optionality, going well beyond the bare 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 starts with a specific verb and resource: 'Close a tab by index'. It clearly distinguishes this tool from siblings like browser_tabs, browser_switch_tab, and browser_navigate by focusing on the closing action. It also clarifies the default behavior when no index is given, which further sharpens the purpose.

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

Usage Guidelines4/5

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

The description provides clear context: use this tool to close a tab, optionally specifying an index. It also explains the behavior when no index is provided ('or the active tab'), which is practical usage guidance. It doesn't explicitly name alternatives or exclusions, but the purpose is so distinct from siblings that the context is clear without them.

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

browser_consoleA

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

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

With no annotations, the description carries the full burden, but it only states what is returned. It does not disclose whether the buffer is cleared after retrieval, whether messages are scoped to the current page, or any side effects, which is a significant gap for a potentially stateful 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 sentence, front-loaded with the action and resource, and contains no unnecessary words. It is appropriately sized and instantly scannable.

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?

Since there is no output schema, the description should explain the return format. It mentions message types but not the structure (e.g., array of strings vs. objects), timing, or empty state, making it incomplete for an agent to reliably consume the result.

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 schema covers everything. The description adds no parameter semantics, but per the rubric, a baseline of 4 applies when no parameters 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 clearly states the action ('Return'), the resource ('buffered console messages'), and the specific types ('log/warn/error') captured from the page. This distinguishes it from sibling tools like browser_network (network logs) and browser_get_text (page text).

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool or offer alternatives/exclusions. While the name and content make it obvious for console debugging, there is no guidance on when to prefer it over browser_network or browser_snapshot, leaving usage implied rather than explicit.

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

browser_dialogsA

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/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 that the tool returns dialogs and their handling status, but does not mention potential side effects, whether it waits, or if it consumes/clears dialog state. This is adequate but minimal.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that conveys all necessary information without waste. Every word 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?

Given the low complexity (no params, no output schema), the description covers the core behavior adequately. However, it omits return format details and usage context, which would make it more 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?

There are zero parameters, and the empty schema provides 100% coverage. Per the guidelines, baseline for 0 params is 4. The description adds no parameter information, but none is 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 uses a specific verb 'Return' and identifies the resource as 'JS dialogs' with explicit types (alert/confirm/prompt/beforeunload). This clearly distinguishes the tool from sibling browser tools and unambiguously states its function.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as browser_set_dialog_behavior. It is purely factual and gives no context for selection or exclusion.

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

browser_disallow_hostA

Remove a host from the navigation allowlist.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose potential side effects, such as whether removal errors on missing hosts or affects the current page. It only states the core action without edge-case behavior or persistence 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?

One clear, single-purpose sentence. No redundant wording, front-loaded action, and fully readable at a glance.

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 single-parameter mutation tool, the description sufficiently conveys the purpose and parameter. However, it omits behavior for invalid hosts or persistence, which would be expected in a more complex tool. Given the low complexity, it is mostly 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?

With 0% schema description coverage, the description adds that 'a host' is the parameter to remove, but it lacks format details (e.g., domain vs. URL). It compensates minimally over the schema which only lists 'host' as a string.

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: 'Remove a host from the navigation allowlist.' It uses a specific verb ('Remove') and a specific resource ('navigation allowlist'), distinguishing it from sibling tools like browser_allow_host.

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

Usage Guidelines3/5

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

The description implies usage when a host should no longer be navigable, but it does not explicitly state alternatives or exclusion criteria. Sibling tools like browser_allow_host suggest the opposite operation, but no direct comparison is made.

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

browser_downloadsA

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the burden of behavioral disclosure. It clearly conveys a read-only list operation and discloses the scope ('during this session') and the exact data returned (url, filename, saved path). While it does not mention edge cases like 'no downloads' or 'list reset behavior', the simple nature of the tool makes this acceptable.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that immediately states the verb and object, then adds the return fields in parentheses. Every word earns its place; there is no redundancy or fluff.

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?

This is a low-complexity tool with no parameters and no output schema. The description fully specifies what it does, the session scope, and the composable return fields. There are no gaps in its context for an agent to invoke it correctly.

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

Parameters4/5

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

The tool takes zero parameters, so the description does not need to explain parameter meanings. The baseline for 0-parameter tools is 4, and the description appropriately focuses on behavior rather than arguments.

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 specifies the return fields (url, filename, saved path). This clearly distinguishes it from all browser siblings, none of which deal with downloads.

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 tool's purpose is self-evident: use it to see files downloaded during the current browser session. There are no alternative tools among the siblings for this function, so explicit when-not-to-use guidance is unnecessary. The context is clear, and no exclusions are missing.

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

browser_evalA

Evaluate a JavaScript expression in the page context and return the JSON-serializable result. On non-local pages this prompts the user for confirmation first.

ParametersJSON Schema
NameRequiredDescriptionDefault
expressionYes

TDQS

A4.2/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 the confirmation prompt on non-local pages, which is useful, but it doesn't warn about potential side effects of executing arbitrary JS or what happens if the expression throws. The safety behavior is only partially addressed.

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, front-loaded with the core purpose, then a conditional caveat. No unnecessary words or repetition.

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

Completeness4/5

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

For a one-parameter tool with no output schema, the description covers the essential points: what it does, the result format, and a key conditional behavior. It doesn't mention error handling or side effects, but given the low complexity, it is reasonably 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?

Though schema coverage is 0%, the description explicitly defines the single parameter 'expression' as a JavaScript expression to be evaluated in page context, and clarifies that the result must be JSON-serializable. This compensates well for the lack of schema description.

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 clearly identifies the target ('a JavaScript expression in the page context') and the output ('return the JSON-serializable result'). This is unambiguous and distinguishes it from sibling tools like browser_console or browser_get_text.

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 implies usage: use when you need to run JavaScript in the page and get a serializable result. It also gives context about non-local pages prompting for confirmation, but doesn't explicitly contrast with 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.

browser_fillB

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

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYes
selectorYes

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description carries full responsibility for disclosing behavioral aspects. It states the effect (fill) but does not mention whether this triggers events, replaces existing content, or handles missing selectors. It lacks any safety or side-effect information, which is significant for a mutation 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 sentence that is front-loaded with the verb and resource. Every word contributes to understanding, with no unnecessary filler or repetition.

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

Completeness3/5

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

The tool is relatively simple with only two string parameters, and the description covers the core behavior. However, given no annotations and no output schema, it leaves out behavioral context such as return values, error handling, or event triggering, making it only moderately complete for an agent.

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%, requiring the description to explain parameters. The description clarifies that 'selector' is a CSS selector and 'value' is the value to fill, adding meaning beyond bare parameter names. However, it does not provide additional details like value format or selector syntax nuances.

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

Purpose4/5

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

The description clearly states the action ('Fill') and the target resource ('input/textarea identified by a CSS selector'), making the tool's purpose unambiguous. It does not explicitly differentiate from sibling tools like browser_type, but the verb 'fill' and target element type provide reasonable distinction.

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 for setting form field values but does not provide explicit guidance on when to choose this tool over alternatives such as browser_type or browser_click. There are no when/when-not or alternative mentions, so it falls to 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.

browser_forwardB

Navigate forward 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?

With no annotations available, the description carries the full burden of disclosure. It only restates the basic action without detailing side effects, error conditions (e.g., no forward history), or what happens after navigation. This lack of transparency is a gap for a tool that modifies browser state.

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

Conciseness5/5

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

The description is a single, well-structured sentence with no redundant information. It is concise and directly states the purpose, earning every word with no waste.

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 tool with no parameters and no output schema, the description is minimally adequate but lacks additional behavioral context, such as return values, state changes, or failure modes. It does not address what happens when there is no forward history, which could be useful for the agent. Overall, it is sufficient for basic use but not 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, making schema coverage 100% vacuously. The baseline for 0 params is 4, and the description does not need to add anything about parameters. There is no ambiguity or need for further explanation.

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 'Navigate forward in history' clearly states the tool's action (navigate) and its scope (history), effectively distinguishing it from sibling tools like browser_back and browser_navigate. It is specific enough to be understood, though slightly terse.

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 mention of when to use this tool versus alternatives such as browser_back or browser_navigate. No context or exclusions are provided, leaving the agent without guidance on selecting it over other navigation tools.

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

browser_get_textA

Return the visible text content of the page body.

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 states the literal action and does not clarify nuances like what 'visible' means, whether it waits for page load, or if there are any side effects. Minimal behavioral context is added beyond the function itself.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no redundant wording. Every word contributes to understanding the tool's purpose, making it perfectly concise.

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 zero-parameter tool with no output schema, the description adequately conveys what is returned. It could be strengthened by explicitly stating the return type (e.g., string) or behavior regarding dynamic content, but the current description is sufficient for a basic getter.

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 schema is complete and the description need not elaborate on parameter syntax or meaning. Per the rubric, a baseline of 4 is appropriate for a no-parameter tool, and the description does not need to add anything further.

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

Purpose5/5

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

The description clearly states the tool's function with a specific verb ('Return') and resource ('visible text content of the page body'). It effectively distinguishes from sibling tools like browser_screenshot (visual capture) and browser_navigate (URL change), so the purpose is unambiguous.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention that it is a read-only operation or contrast with browser_snapshot or browser_eval, leaving the agent without explicit usage context.

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

browser_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.8/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 burden. It discloses that the tool targets elements via CSS selector or snapshot reference and performs a hover action, which is the core behavior. However, it does not mention any side effects, waiting behavior, or failure modes. For a simple hover tool, this is acceptable but not rich.

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

Conciseness5/5

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

The description is a single sentence that includes the action, targeting methods, and an example. Every word earns its place, with no redundant information or structuring issues.

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, no annotations, and absence of an output schema, the description is reasonably complete. It explains what it does and how to specify elements. It lacks details about return values or error handling, but for a hover action this is a minor gap.

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

Parameters3/5

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

The schema has zero description coverage, but the description explains that 'ref' refers to a snapshot reference and 'selector' refers to a CSS selector. This adds meaning beyond the raw parameter names. It does not detail precedence or constraints, so it is moderate but helpful.

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 the two targeting methods ('by CSS selector or snapshot ref'). This distinguishes it from siblings like browser_click or browser_fill. The example 'e.g. to open a dropdown menu' reinforces its specific purpose.

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 provides an example use case ('to open a dropdown menu') which implies when to use it, but does not explicitly mention alternative tools or when not to use it. This is more than no guidance but less than explicit differentiation, so a score of 3 is appropriate.

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

browser_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, the description carries the full burden of disclosure. It clearly states the tool returns a list of allowed hosts and a boolean indicating whether all hosts are allowed, which fully describes its observable behavior. It does not reveal potential side effects, but none are implied for a list 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 sentence that is direct and informative. Every word contributes value, and it is fully front-loaded with the action and subject.

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 tool with zero parameters and no output schema, the description is complete. It explains both the primary output (list of hosts) and the additional flag (whether all hosts are allowed), leaving no ambiguity about what the tool does.

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%, so there is no need for parameter explanations. The description focuses on the output rather than inputs, which is appropriate. The baseline of 4 applies for a parameterless tool.

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

Purpose5/5

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

The description uses a specific verb ('List') and a clear resource ('hosts the browser may navigate to') plus the additional detail about whether all hosts are allowed. This clearly distinguishes it from sibling tools like browser_navigate (which performs navigation) and browser_allow_host/browser_disallow_host (which modify the allowed hosts).

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 for checking the current allowed-host configuration but does not explicitly state when to use it versus alternatives. It does not mention exclusions or compare with browser_allow_host/browser_disallow_host, so the guidance is only implicit.

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

browser_navigateA

Navigate the browser to a local dev URL (validated against the localhost allowlist).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL to load, e.g. http://localhost:8787

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries the transparency burden. It discloses the allowlist validation, but doesn't explain what happens on rejection, whether it waits for page load, or any error handling. This is partial disclosure but leaves 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?

One sentence, front-loaded with the verb, no filler. Every word contributes meaning (action, target, constraint). Ideal conciseness.

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

Completeness4/5

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

For a simple one-parameter navigation tool with no output schema, the description covers the core action and key constraint. It could mention post-navigation behavior (e.g., waiting for load) but overall is sufficiently 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 schema already fully describes the 'url' parameter (100% coverage), so baseline is 3. The description adds the key constraint that the URL must be a local dev URL and subject to the allowlist, providing valuable context 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 uses a specific verb 'Navigate' with the resource 'browser' and clearly specifies the URL type ('local dev URL') plus the allowlist validation. This clearly distinguishes it from sibling tools like browser_reload or browser_back.

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

Usage Guidelines4/5

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

The description gives clear context: it is for navigating to local dev URLs, with an implicit exclusion of non-allowlisted URLs. However, it doesn't explicitly name alternatives or state when not to use this tool, 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.

browser_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 says 'recent' but does not clarify the time window, ordering, limits, whether it logs all frames/types, or whether it clears the log. This vagueness leaves 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, well-structured sentence that leads with the verb and resource, then packs the output fields into a parenthetical list. Every word earns its place with no redundancy.

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

Completeness4/5

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

Given the tool's zero-parameter complexity and lack of an output schema, the description sufficiently communicates the return content. However, it omits expected details like whether the list is sorted, what 'recent' means, or if it covers only the current page. These gaps prevent a perfect score.

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, which gives a baseline of 4. The description adds no parameter details, but none are needed since the input schema is empty and there is nothing to clarify.

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 the specific verb 'Return' with a clear resource ('recent network requests') and enumerates the exact fields returned (method, url, status, resourceType). This makes the tool's purpose immediately clear and distinguishes it from sibling tools like browser_screenshot or browser_console.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives or what context it applies to (e.g., current page, session, or navigation). The description only states what it does, not when to call it. With no alternative network inspection tool among siblings, some usage context would help.

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

browser_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.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 burden. It discloses key behaviors: creates a new tab, optionally navigates to a URL, makes it active, and returns the updated tab list. This is adequate for a simple operation, though it lacks edge-case details like error handling.

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 sentences, front-loaded with the core action, no filler. Every word earns its place.

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

Completeness5/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 param, no output schema), the description fully covers purpose, behavior, and return value. It is complete for an agent to select and invoke correctly.

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

Parameters3/5

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

Schema coverage is 0% for the single 'url' parameter, so the description must compensate. It says 'optionally navigating to a URL', clarifying that URL is optional, but does not explain format requirements or what happens if omitted (implied blank tab). This is minimal but functional.

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

Purpose5/5

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

The description clearly states the tool's action: 'Open a new tab' with optional URL navigation and activation. It distinguishes from siblings like browser_navigate (likely navigates current tab) and browser_switch_tab (switches existing tab) by specifying new tab creation.

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: use when you want to create a new tab. However, it does not contrast with alternatives like browser_navigate or browser_switch_tab, so there is no explicit when-not guidance.

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

browser_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 explains the action and gives examples, but does not disclose potential side effects like triggering navigation or page reloads, or how invalid keys are handled. This is adequate but has gaps for a keyboard action 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 two concise sentences: the first clearly states the action with examples, the second gives practical use cases. Every word earns its place, with no redundancy or fluff.

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

Completeness4/5

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

For a simple tool with one parameter and no output schema, the description is nearly complete. It includes examples and use cases, and sibling names provide context. It could mention that the key press applies to the current page/focused element, but this is a minor gap 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 100% and the schema already describes the key parameter with the same examples as the tool description. The description adds usage context but no additional parameter syntax or format details beyond what the schema provides, so the baseline 3 applies.

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

Purpose5/5

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

The description clearly states the verb 'Press' and the resource 'a key or chord on the keyboard', with concrete examples (Enter, Tab, Control+A). This distinguishes it from sibling tools like browser_click (mouse) and browser_type (text input).

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 explicitly says 'Useful to submit forms or navigate without a mouse', giving clear use cases. While it doesn't name specific alternatives, the context implies when to choose this over mouse-based tools.

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

browser_reloadA

Reload the current page.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/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. 'Reload the current page' describes the core behavior but does not mention side effects like discarding unsaved state or whether the tool waits for the page to load. It is minimally 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, short sentence with no wasted words. It says exactly what is needed and nothing more.

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 extreme simplicity (no parameters, no output schema, no annotations), the one-sentence description fully covers what the tool does. There is no missing information that would affect an agent's ability to invoke 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 zero parameters, so the description has no parameter details to add. The schema already covers the empty input, and the baseline of 4 for zero-parameter tools applies.

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

Purpose5/5

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

The description uses a specific verb 'reload' and a clear resource 'current page', which immediately distinguishes it from sibling tools like navigate, back, and forward. It is direct and unambiguous.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. While the usage is straightforward, there is no explicit context to help an agent decide between this and potentially similar actions.

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

browser_resizeB

Resize the page viewport.

ParametersJSON Schema
NameRequiredDescriptionDefault
widthYes
heightYes

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 full burden. It correctly implies the behavior of resizing the viewport, but does not disclose side effects, units, or whether it affects the current page only or persists across navigations. The basic operation is transparent, but lacking richer 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 a single clear sentence with no redundant words or filler. It is appropriately sized for the tool's simplicity, front-loading the core function perfectly.

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

Completeness3/5

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

Given the simple nature of the tool, the description provides the core function but leaves gaps such as units and behavioral side effects. It is reasonable for a basic resizing operation, but not fully complete for an agent that may need to know whether a reload occurs or what happens to the page state.

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 compensate by explaining units (e.g., pixels), constraints, or the meaning of width/height beyond their names. The parameter names are self-evident, but critical semantic details are missing.

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 'Resize the page viewport' clearly states a specific verb and resource, distinguishing it from sibling tools like navigate, click, or screenshot. The scope is precise, leaving no ambiguity about what the tool does.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, nor any context such as emulating different screen sizes or responsive design testing. The description simply states the action without any situational or prerequisite information.

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

browser_screenshotA

Capture a 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

A3.7/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 burden of disclosing behavior. It accurately describes the capture action and the trade-off between jpeg and png formats, but it does not mention the return format (e.g., base64) or any potential side effects or limitations. It does not contradict any 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 consists of two sentences that efficiently cover the purpose, options, and format guidance without any redundant phrases. The core action is front-loaded, making it easy to understand quickly.

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

Completeness3/5

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

The description covers the main features but leaves some gaps: it does not explicitly state whether fullPage and selector are mutually exclusive, nor does it describe what the tool returns (which is important given the absence of an output schema). For a tool with four optional parameters, this ambiguity reduces completeness.

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 low (only quality is described), but the tool description compensates by explaining the meaning of key parameters: 'optionally full page or a single element' clarifies the roles of fullPage and selector, and the format discussion explains the format parameter. This adds meaningful context beyond the bare parameter names.

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 and resource: 'Capture a screenshot of the current page', clearly stating the tool's primary function. It also mentions optional full-page or single-element capture, which distinguishes it from sibling browser tools that do not offer screenshot capabilities.

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 explicit guidance is provided on when to use this tool compared to alternatives like browser_snapshot or other sibling tools. The only usage advice concerns format selection (jpeg vs png), which is parameter-level advice, not tool-selection guidance. Thus, the description lacks clear context for choosing this tool over others.

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

browser_set_dialog_behaviorA

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

ParametersJSON Schema
NameRequiredDescriptionDefault
behaviorYes

TDQS

A4.5/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 discloses the default behavior ('accept'), the alternative ('dismiss'), and an important edge case ('beforeunload is always dismissed'), providing useful behavioral context beyond a simple statement of functionality.

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

Conciseness5/5

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

The description is a single sentence that front-loads the action and includes all necessary details without redundancy.

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 one-parameter setter with no output schema and no annotations, the description is sufficiently complete. It covers the purpose, the parameter values, the default, and a critical special case, leaving no significant ambiguity for 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 schema only lists an enum with no defaults or explanations. The description compensates by explaining that 'accept' is the default and 'dismiss' is the alternative, and clarifies the beforeunload behavior, adding meaning 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 uses the specific verb 'Set' and identifies the resource 'JS dialogs' and the two behaviors ('accept' or 'dismiss'). It clearly differentiates from sibling tools like browser_dialogs (which likely reads dialogs) by focusing on auto-handling configuration.

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

Usage Guidelines4/5

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

The description provides clear context that this tool configures auto-handling of JS dialogs, implying usage when such behavior needs to be controlled. It does not explicitly mention alternatives or exclusions, so it lacks the explicit guidance of the highest tier.

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

browser_snapshotA

Return a flat accessibility/DOM snapshot (tag, role, text, ref) for element targeting. Use a returned ref with browser_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?

With no annotations, the description carries the burden. It discloses that the snapshot is 'flat' and includes tag, role, text, and ref, which is helpful. However, it does not mention potential side effects, timing, or whether the snapshot represents the full page or a viewport, leaving some behavioral aspects unspecified.

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: the first states the resource and content, the second gives a direct usage instruction. Every word adds value, with no redundant 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 tool with no output schema, the description provides all essential context: what is returned, the fields included, and how to use the result. It is complete for the tool's simplicity.

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 per the baseline rule, a score of 4 is appropriate. There is no parameter information to add beyond the empty schema, and the description does not need to compensate.

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

Purpose5/5

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

The description clearly states the tool returns a flat accessibility/DOM snapshot with specific fields (tag, role, text, ref), and ties it to element targeting. It explicitly mentions using the returned ref with browser_click, distinguishing it from sibling tools like browser_get_text.

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

Usage Guidelines4/5

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

The description gives clear usage context: use it for element targeting and pass the returned ref to browser_click. It does not explicitly list exclusions or alternatives, but the guidance is sufficient for a zero-parameter tool.

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

browser_switch_tabA

Switch the active tab by index (see browser_tabs).

ParametersJSON Schema
NameRequiredDescriptionDefault
indexYes

TDQS

A3.6/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden. It only states the basic action without disclosing any side effects, prerequisites, or behavior on invalid indices. The reference to browser_tabs is helpful but does not reveal what happens after switching (e.g., return value, focus changes).

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 that is front-loaded with the verb and object. Every word is necessary and no space is wasted.

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 (one parameter, no output schema), and the description points to browser_tabs for obtaining the index, which is a key piece of context. However, it lacks any mention of error handling or what happens on invalid indices, making it minimally adequate.

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 provides no description for 'index', and the description only says 'by index' plus '(see browser_tabs)'. This implies the index is from browser_tabs but does not explicitly state whether it is 0-based or how it maps to tab positions, leaving ambiguity.

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 verb 'Switch' and the resource 'active tab', and specifies the method 'by index'. It also references browser_tabs, which distinguishes it from other tab-related tools like browser_new_tab or browser_close_tab.

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

Usage Guidelines4/5

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

The description provides clear context by stating 'by index (see browser_tabs)', which tells the agent to first obtain the list of tabs from browser_tabs. However, it does not explicitly mention when not to use this tool or provide alternatives.

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

browser_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?

With no annotations, the description carries the full burden. It clearly indicates a read-only 'list' operation and discloses the exact data returned (index, url, title, active status). It does not explicitly state the absence of side effects, but the verb 'list' strongly implies no mutation, which is sufficient for a simple 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. Every element is useful: the verb, the resource, and the parenthetical list of return fields. No wasted words.

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, no annotations), the description completely covers what an agent needs to know: what the tool does and what information it will receive. It is self-contained and sufficient for selection and invocation.

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. The description adds value by explaining the output shape, which is the most relevant information for invocation and interpretation.

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 verb ('List') and resource ('open tabs'), and adds specificity by enumerating the included fields (index, url, title, active). This unambiguously distinguishes it from sibling tools like browser_new_tab, browser_switch_tab, and browser_close_tab.

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

Usage Guidelines3/5

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

The usage is implied by the name and description: it lists tabs so an agent can see what's open and which is active. However, it does not explicitly state when to use this over alternatives, nor does it note that the returned index can be used with browser_switch_tab or browser_close_tab. This is minimal viable guidance but leaves the agent to 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.

browser_typeA

Type text using the keyboard into the currently focused element.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are present, so the description carries the full burden of behavioral disclosure. It only says that text is typed; it does not mention whether existing text is replaced, whether it executes after a delay, or what happens with special characters. There is also no mention of return values or side effects.

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 action and target. It contains no redundant or vague wording, making it highly efficient.

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

Completeness3/5

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

The tool is simple with one parameter and no output schema, so the core behavior is covered. However, it lacks guidance on focus prerequisites, the distinction from browser_fill, and handling of special keys. This makes it minimally complete but not fully self-sufficient given the large sibling context.

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?

With schema description coverage at 0%, the description must compensate. The phrase 'Type text' clarifies that the 'text' parameter is the string to be typed, which is helpful. However, it adds no details about accepted formats (e.g., newlines, key names) beyond the schema's generic string 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 states a clear verb ('Type'), a resource ('text'), and a specific target ('currently focused element'). This differentiates it from sibling tools like browser_fill (which fills form fields) and browser_press_key (which sends key combinations). The purpose is unambiguous.

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

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 after focusing an element, but it does not explicitly state when to use it over alternatives like browser_fill or browser_press_key. No when-not conditions or alternative tool references are provided, leaving some ambiguity for the agent.

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

browser_wait_forB

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

ParametersJSON Schema
NameRequiredDescriptionDefault
textNo
selectorNo
timeoutMsNo

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It explains what conditions are waited for but omits critical details such as what happens on timeout (e.g., error thrown), default timeout behavior, or whether the tool returns a value. This leaves the agent uncertain about failure modes.

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 sentence, front-loaded with the core action, and contains no unnecessary words. However, it is terse to the point of omitting important details, so it loses a point for sacrificing completeness for 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?

Given the lack of annotations and output schema, the description should compensate by explaining behavior, parameters, and results. It only covers basic purpose, leaving the agent without enough information to predict outcomes or handle errors, making it incomplete for reliable tool invocation.

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, so the description must clarify parameters. It loosely maps selector to visibility, text to appearance, and timeoutMs to 'short delay', but it does not explain how these parameters interact, which are mutually exclusive, or the format of selector/text. This is insufficient for a 3-parameter tool with no schema descriptions.

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 'Wait' with clear resources: selector visibility, text appearance, and short delay. It distinguishes itself from sibling browser actions like click, hover, and navigate, making the tool's purpose immediately obvious.

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 for synchronizing or delaying actions, but it does not explicitly state when to prefer this tool over alternatives, nor does it mention any exclusions or prerequisites. The intended context is inferable but not stated.

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. Dates show when Glama detected each change.

  1. 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
  2. 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

A3.6/5.0
Disambiguation4/5

Most tools have clearly distinct purposes (navigation, interaction, reading page state, tabs, dialogs). A few pairs like browser_snapshot vs browser_get_text and browser_type vs browser_fill could cause confusion, but descriptions clarify the differences.

Naming Consistency4/5

All tools share the browser_ prefix, but the pattern mixes verbs (browser_reload), verbs with objects (browser_get_text), and nouns (browser_console, browser_tabs). This is mostly predictable but not perfectly uniform.

Tool Count2/5

At 27 tools, the set is over the 25-tool threshold for appropriateness. While each tool serves a distinct function, the granularity could be consolidated (e.g., combine type/fill or console/network into single tools).

Completeness4/5

The server covers navigation, interaction, page reading, tab management, dialogs, downloads, and permissions, making it quite complete. Minor gaps like cookie/localStorage handling are absent but not critical.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

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
    26
    15
    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.
    741
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/NolanLT/local-browser-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server