Skip to main content
Glama
etairl

parallel-browser-mcp

by etairl

parallel-browser-mcp

npm version npm downloads

parallel-browser-mcp is an MCP server for parallel browser automation. It exposes a numeric session model over MCP so one client can create and control multiple browser sessions at the same time across multiple browser providers.

Supported providers:

  • playwright for local Chromium

  • browserbase via @browserbasehq/sdk

  • anchor via anchorbrowser

  • cloudflare via Cloudflare Browser Run

Each browser session gets a numeric ID like 1, 2, 3, and every browser_* tool accepts a sessionId.

Features

  • Multiple concurrent browser sessions in memory

  • Provider abstraction shared across Browserbase, Anchor Browser, Cloudflare Browser Run, and local Playwright

  • MCP session tools:

    • start_session

    • close_session

    • close_all_sessions

    • get_sessions

  • Browser tools:

    • browser_navigate

    • browser_go_back

    • browser_click

    • browser_fill

    • browser_fill_form

    • browser_screenshot

    • browser_snapshot

    • browser_hover

    • browser_drag

    • browser_select_option

    • browser_generate_locator

    • browser_get_page_structure

    • browser_evaluate

    • browser_keyboard_press

    • browser_keyboard_type

    • browser_mouse_move

    • browser_mouse_click_xy

    • browser_mouse_drag

    • browser_upload_file

    • browser_wait_for_selector

    • browser_wait_for_timeout

Related MCP server: open_browser_use

Quick Start

corepack pnpm install
corepack pnpm build

Run locally over stdio:

node dist/index.js

Run it as an npm package CLI:

npx parallel-browser-mcp@latest

Configuration

Provider-specific settings are configured at the MCP server configuration level, not per tool call.

The server reads config in this order:

  1. BROWSER_MCP_CONFIG

  2. BROWSER_MCP_CONFIG_PATH

  3. direct env defaults

  4. built-in defaults

Recommended config shape:

{
  "defaultProvider": "playwright",
  "providers": {
    "browserbase": {
      "projectId": "proj_123",
      "keepAlive": true
    },
    "anchor": {
      "recording": false
    },
    "playwright": {
      "launchOptions": {
        "headless": true
      },
      "useCloakBrowser": false
    }
  }
}

Stealth Chromium via CloakBrowser

The playwright provider can optionally launch CloakBrowser instead of vanilla Chromium for sessions that need to bypass bot detection. Enable it per-config or via env:

{
  "providers": {
    "playwright": { "useCloakBrowser": true }
  }
}
PLAYWRIGHT_USE_CLOAKBROWSER=true

cloakbrowser is an optional peer — install it only when you need stealth:

npm install cloakbrowser

The CloakBrowser binary (~200MB stealth Chromium) is downloaded automatically on the first session launch. Existing launchOptions / contextOptions continue to apply, and the rest of the provider behaves identically to standard Playwright.

Required credentials by provider:

  • playwright: none

  • browserbase: BROWSERBASE_API_KEY, plus a projectId in config or BROWSERBASE_PROJECT_ID

  • anchor: ANCHOR_API_KEY

  • cloudflare: CLOUDFLARE_API_TOKEN, CLOUDFLARE_ACCOUNT_ID

Optional env defaults:

  • BROWSERBASE_PROJECT_ID

  • BROWSERBASE_KEEP_ALIVE

  • BROWSERBASE_CONTEXT_ID

  • BROWSERBASE_PERSIST

  • PLAYWRIGHT_STORAGE_STATE_PATH

  • PLAYWRIGHT_EXECUTABLE_PATH

  • PLAYWRIGHT_CHANNEL

  • PLAYWRIGHT_USE_CLOAKBROWSER (true to launch stealth Chromium via CloakBrowser; requires npm install cloakbrowser)

Installation

Use the standard config below in any MCP client that supports stdio:

{
  "mcpServers": {
    "parallel-browser-mcp": {
      "command": "npx",
      "args": ["parallel-browser-mcp@latest"],
      "env": {
        "BROWSER_MCP_CONFIG": "{\"defaultProvider\":\"playwright\",\"providers\":{\"playwright\":{\"launchOptions\":{\"headless\":true}}}}",
        "BROWSERBASE_API_KEY": "your_browserbase_key",
        "ANCHOR_API_KEY": "your_anchor_key"
      }
    }
  }
}

Use the Claude Code CLI to add the server:

claude mcp add parallel-browser-mcp npx parallel-browser-mcp@latest

If you need provider configuration, add the environment variables in your Claude MCP config using the standard config above.

Follow the Claude Desktop MCP install flow and use the standard config above in the local MCP configuration file.

Use the Codex CLI:

codex mcp add parallel-browser-mcp npx "parallel-browser-mcp@latest"

Or add this to ~/.codex/config.toml:

[mcp_servers.parallel-browser-mcp]
command = "npx"
args = ["parallel-browser-mcp@latest"]

Use the Copilot CLI interactive flow:

/mcp add

Or add this to ~/.copilot/mcp-config.json:

{
  "mcpServers": {
    "parallel-browser-mcp": {
      "type": "local",
      "command": "npx",
      "tools": ["*"],
      "args": ["parallel-browser-mcp@latest"],
      "env": {
        "BROWSER_MCP_CONFIG": "{\"defaultProvider\":\"playwright\",\"providers\":{\"playwright\":{\"launchOptions\":{\"headless\":true}}}}",
        "BROWSERBASE_API_KEY": "your_browserbase_key",
        "ANCHOR_API_KEY": "your_anchor_key"
      }
    }
  }
}

Go to Cursor Settings -> MCP -> Add new MCP Server, then use:

  • command: npx

  • args: parallel-browser-mcp@latest

Or paste the standard config above into the MCP config editor.

Add the server to .gemini/settings.json:

{
  "mcpServers": {
    "parallel-browser-mcp": {
      "command": "npx",
      "args": ["parallel-browser-mcp@latest"],
      "env": {
        "BROWSER_MCP_CONFIG": "{\"defaultProvider\":\"playwright\",\"providers\":{\"playwright\":{\"launchOptions\":{\"headless\":true}}}}",
        "BROWSERBASE_API_KEY": "your_browserbase_key",
        "ANCHOR_API_KEY": "your_anchor_key"
      }
    }
  }
}

Use the MCP install flow in VS Code with the standard config above, or install with the VS Code CLI:

code --add-mcp '{"name":"parallel-browser-mcp","command":"npx","args":["parallel-browser-mcp@latest"]}'

Example Flow

  1. Call start_session with { "provider": "playwright" }

  2. Read the returned session id

  3. Call browser_navigate with { "sessionId": 1, "url": "https://example.com" }

  4. Call any additional browser_* tool with the same sessionId

  5. Call close_session when done

Development

corepack pnpm install
corepack pnpm typecheck
corepack pnpm test
corepack pnpm test:coverage
corepack pnpm build
corepack pnpm smoke:local

Publishing

This repo is set up to publish as an npm package:

  • the CLI entrypoint is parallel-browser-mcp

  • production builds exclude tests and smoke scripts

  • the published package only includes dist, README.md, and .env.example

Before publishing:

corepack pnpm typecheck
corepack pnpm test
corepack pnpm build
npm pack --dry-run

GitHub Actions publishing:

  • .github/workflows/publish.yml publishes to npm on GitHub release publication or manual dispatch

  • set the NPM_TOKEN repository secret before using the publish workflow

Examples

  • examples/local contains a standalone npm package that connects to parallel-browser-mcp with @langchain/mcp-adapters and runs a LangChain agent against the local Playwright provider.

  • examples/browserbase contains a standalone npm package that connects LangChain to the published MCP server with Browserbase config and prompts the agent to use browser_screenshot.

  • examples/anchor contains a standalone npm package that connects LangChain to the published MCP server with Anchor config and prompts the agent to use browser_snapshot.

  • examples/cloudflare contains a standalone npm package that connects LangChain to the published MCP server with Cloudflare Browser Run config and prompts the agent to use browser_snapshot.

  • The root .npmignore excludes the full examples directory from npm publishing.

Testing

The repo includes:

  • unit coverage for config loading, providers, registry behavior, session tools, and representative browser tools

  • a local Playwright smoke script in src/smoke/localSmoke.ts

Notes

  • start_session is intentionally small. Provider-specific behavior belongs in MCP configuration, not tool inputs.

  • The server logs to stderr so stdout stays clean for MCP JSON-RPC traffic.

  • Browserbase and Anchor Browser are normalized to Playwright page operations after connection, so the browser tools stay provider-agnostic.

Available Tools

26 tools
browser_clickBrowser ClickC

Click an element by selector.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNo
selectorYes
sessionIdYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It discloses only the basic action, not whether the click waits for visibility, scrolls into view, targets the first match, triggers navigation, or fails on missing elements.

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, front-loaded sentence with no filler. However, it is so terse that it sacrifices informative structure, leaving important behavioral and parameter context absent.

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?

With no annotations, no output schema, and 0% parameter coverage, the description is not complete for a browser interaction tool. An agent cannot reliably infer session requirements, timeout behavior, or click-resolution semantics from this text alone.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for all three parameters. It only clarifies the 'selector' parameter; the required 'sessionId' and optional 'timeout' semantics are entirely unaddressed.

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

Purpose5/5

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

The description states a specific verb ('Click'), a specific resource ('an element'), and the selection mechanism ('by selector'). This clearly distinguishes it from coordinate-based sibling tools like browser_mouse_click_xy.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as browser_mouse_click_xy or browser_hover. The description implies a selector-based click, but gives no exclusions, prerequisites, or selection criteria.

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

browser_dom_queryBrowser DOM QueryC

Query element presence, count, and state without waiting.

ParametersJSON Schema
NameRequiredDescriptionDefault
selectorYes
sessionIdYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavior. It only states 'without waiting,' which is a useful trait, but it does not mention what happens on element absence, error handling, or return format. This is minimal coverage for a tool with no annotation support.

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

Conciseness4/5

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

The description is a single, concise sentence with no filler. It is appropriately brief for a simple query tool, though it could include a bit more detail without losing efficiency.

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

Completeness2/5

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

For a tool with two parameters and no output schema, the description should clarify what 'state' means and what the return values look like. It is too sparse to fully guide an agent, especially since 'count' and 'state' are ambiguous. The description leaves important details unspecified.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not mention either parameter (selector or sessionId). It adds no meaning beyond what the schema names provide, failing to compensate for the lack of schema descriptions.

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

Purpose4/5

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

The description clearly states the tool queries DOM elements for presence, count, and state, which distinguishes it from related tools like browser_snapshot or browser_wait_for_selector. The verb 'Query' and resource 'element' are explicit, and the scope is clear.

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 phrase 'without waiting' implicitly contrasts with browser_wait_for_selector, suggesting it is for immediate checks. However, it does not explicitly state when to use it vs. alternatives or when not to use it, leaving some ambiguity.

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

browser_dragBrowser DragC

Drag from one element to another.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNo
sessionIdYes
sourceSelectorYes
targetSelectorYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'Drag from one element to another' and does not mention whether this triggers native HTML5 drag events, what side effects occur, how selectors are resolved, or what happens on failure.

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, front-loaded sentence with no filler words. It is concise, though arguably too terse given the tool's complexity and sibling ambiguity.

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?

The tool has four parameters, no annotations, no output schema, and several closely related sibling tools. The one-line description omits selector semantics, timeout behavior, session requirements, and return values, leaving the agent without enough context to invoke it correctly.

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?

With 0% schema description coverage and no parameter documentation in the description, the agent gets no explanation of sessionId, timeout, or how sourceSelector and targetSelector should be formatted. The phrase 'from one element to another' loosely maps to the two selector parameters, but the description does not compensate for the undocumented parameters.

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

Purpose4/5

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

The description states a specific verb and resource ('Drag from one element to another'), which clearly conveys an element-to-element drag action. It does not explicitly differentiate from the sibling browser_mouse_drag, but the element-to-element framing is distinct enough to establish the basic purpose.

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool versus browser_mouse_drag, browser_click, or other interaction tools. The description gives no context about selector-based dragging or when an agent should prefer this over coordinate-based alternatives.

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

browser_evaluateBrowser EvaluateC

Run JavaScript in the page context.

ParametersJSON Schema
NameRequiredDescriptionDefault
scriptYes
selectorNoMatched element passed as first arg to script.
sessionIdYes

TDQS

C2.8/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 mentions execution in the page context but does not warn that arbitrary JavaScript can mutate the page, trigger network requests, navigate away, or have other side effects, nor does it describe return-value behavior or error conditions.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. It communicates the core action immediately, which is strong conciseness even though other dimensions need more content.

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

Completeness2/5

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

For a JavaScript evaluation tool with no annotations, no output schema, and multiple related browser tools, this description is too sparse. It omits side-effect risks, return serialization, selector behavior, and the meaning of sessionId, leaving agents to infer critical invocation details.

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

Parameters2/5

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

Schema description coverage is only 33%, and the description adds no parameter-level meaning beyond the script context. The selector parameter has a schema description, but script and sessionId remain undocumented, and the description does not explain how script and selector interact.

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

Purpose4/5

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

The description states a clear action and target: run JavaScript in the page context. It distinguishes the tool from navigation, clicking, and snapshot tools, though it does not explicitly contrast it with browser_dom_query or other sibling tools.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives like browser_dom_query or browser_generate_locator. The description implies use when arbitrary JavaScript execution is needed, but it does not provide exclusions, prerequisites, or comparison with related browser tools.

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

browser_fillBrowser FillC

Fill a field with text.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYes
timeoutNo
selectorYes
sessionIdYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Fill a field with text' only implies a mutation of browser state; it doesn't state whether existing text is replaced or appended, what happens on selector failure, how timeout behaves, or whether a session must be active. For a mutation tool with zero annotation coverage, 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.

Conciseness3/5

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

A single short sentence with no redundancy, so nothing is wasted. However, this is under-specification rather than efficient conciseness – the brevity reflects missing critical information, not disciplined selection of the most relevant details.

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

Completeness2/5

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

For a 4-parameter browser automation tool with 25 siblings, no annotations, no output schema, and 0% schema coverage, this description is completely inadequate. An agent cannot determine selector syntax, timeout semantics, session requirements, or the return value. The tool needs materially more context to be called correctly.

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

Parameters2/5

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

Schema description coverage is 0% – the schema property definitions carry no descriptions, so the description must compensate. It adds nothing about the parameters: no clarification of the selector format (CSS? XPath?), no timeout units or defaults, no note about how the value parameter behaves. Parameter names are inferable but not documented; the description provides no added meaning.

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

Purpose3/5

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

States a specific verb and resource ('Fill a field with text'), which is clear about the action. However, in context of 25 sibling browser tools, it doesn't distinguish itself from browser_fill_form, browser_keyboard_type, or browser_click, all of which could plausibly enter text. The purpose is intelligible but undifferentiated.

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 on when to use this tool vs alternatives like browser_fill_form (for multiple fields) or browser_keyboard_type (for typing). No exclusions, no context, no prerequisites like an active session. The agent must infer appropriate usage entirely from the name and siblings.

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

browser_fill_formBrowser Fill FormC

Fill multiple form fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsYes
sessionIdYes

TDQS

C2.9/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 'Fill multiple form fields' adds no traits beyond the action itself. It does not say whether fields are cleared first, whether it waits for the page, what happens if a selector is missing, or whether changes are committed immediately. For a mutation tool this is a significant transparency gap.

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

Conciseness4/5

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

The description is a single front-loaded sentence with no filler or redundancy. It is appropriately concise, though it sacrifices substance; it could still earn more value with brief parameter or usage context.

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

Completeness2/5

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

Given no annotations, no output schema, and two required parameters, this one-sentence description is not enough for an agent to confidently invoke the tool. It omits session context, selector/value semantics, and any behavior around failures or 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?

Schema description coverage is 0%, so the description must compensate, but it only maps loosely to the 'fields' parameter and says nothing about 'sessionId' or the selector/value structure. An agent must rely entirely on the schema to understand required parameters.

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

Purpose4/5

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

The description names a specific action ('fill') and resource ('multiple form fields'), so an agent can tell this is a batch form-filling operation. It does not explicitly contrast with sibling browser_fill or mention the page/session context, but the word 'multiple' signals the primary 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?

Usage is implied by 'multiple': an agent can infer this tool is for filling several fields at once, while browser_fill likely handles a single field. However, there is no explicit statement of when to choose this over alternatives or any exclusions, so the guidance is implicit 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_generate_locatorBrowser Generate LocatorC

Generate locator suggestions for an element.

ParametersJSON Schema
NameRequiredDescriptionDefault
selectorYes
sessionIdYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state whether the tool reads the page, whether it requires a live session, what kind of locators it returns (CSS, XPath, etc.), or whether it modifies state. The description is too terse to disclose any behavioral traits beyond the basic action.

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

Conciseness3/5

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

The description is a single short sentence, which is concise and front-loaded. However, it is under-specified: it earns its place but does not provide enough information to be genuinely useful. It is not verbose, but it sacrifices substance 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 tool has no output schema, no annotations, and 0% schema description coverage, the description is incomplete. An agent cannot tell what the locator suggestions look like, how they are returned, or what inputs are expected beyond the bare parameter names. For a tool with two required parameters and no structured output, more context is needed.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, but it does not explain what 'selector' means in this context (e.g., an existing selector to improve, or a target element description) or what sessionId refers to. The parameter names are self-explanatory to a degree, but the description adds no semantic value beyond the schema's field names.

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

Purpose3/5

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

The description states a specific verb and resource ('Generate locator suggestions for an element'), which is clear enough to convey the basic purpose. However, it does not distinguish this tool from siblings like browser_dom_query or browser_get_page_structure, which also deal with element identification and page structure. The title adds little beyond the name.

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. The description does not mention that it is for generating locator suggestions (e.g., for debugging or authoring selectors) or when a user might prefer browser_dom_query or browser_evaluate. The context is entirely implied by the tool name and description.

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

browser_get_page_structureBrowser Get Page StructureC

Return a readable page structure summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxDepthNoMax tree depth (default 4).
selectorNoScope to an element; omit for document body.
sessionIdYes
maxChildrenNoMax children per node (default 20).

TDQS

C2.9/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, but it only says 'readable page structure summary' without explaining side effects, read-only nature, or interaction with the browser session. It does not contradict annotations (none exist), but it is severely lacking in behavioral context.

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, punchy sentence with no filler or redundant phrasing. It is appropriately concise for its simplicity, though it lacks any structured elaboration that could make it more useful (e.g., examples or clarifications).

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 tool has 4 parameters, no output schema, and no annotations, the description is far from complete. It omits crucial context like the requirement of an active session (implied by sessionId), what the output format looks like, and how the structure is generated. An agent would have to infer too much to use this tool 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 description coverage is 75%, so most parameters (maxDepth, selector, maxChildren) are already documented in the schema. The description does not add any parameter meaning beyond what the schema provides. Baseline of 3 is appropriate given high coverage, and the description adds no extra value.

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

Purpose4/5

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

The description states a specific verb ('Return') and resource ('page structure summary'), making the tool's core function clear. It is not a tautology and distinguishes from generic actions, though it does not explicitly differentiate from similar tools like browser_snapshot or browser_dom_query.

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 such as browser_snapshot or browser_dom_query. The description gives no context about prerequisites (e.g., active session or loaded page) or scenarios where this tool is preferred.

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

browser_go_backBrowser Go BackC

Go back in browser history.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdYes

TDQS

C2.7/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 states the action; it does not warn about behavior when history is empty, whether page state changes, or whether a valid session is required.

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, front-loaded sentence with no wasted words. It is concise, though it omits useful behavioral and parameter context, so it is efficient but not complete.

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

Completeness2/5

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

For a tool with no annotations, no output schema, and an undocumented required parameter, a one-sentence description is insufficient. It leaves the agent to guess about session expectations and edge-case behavior, even though the operation itself is simple.

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 sessionId (coverage 0%), and the description never mentions the parameter. The agent must infer that sessionId identifies the browser session from the name alone, which does not fully compensate for the missing schema documentation.

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

Purpose4/5

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

The description states a specific action—'Go back in browser history'—with a clear verb and resource. It is distinct from browser_navigate by implying backward traversal rather than arbitrary URL entry, though it doesn't explicitly name sibling differentiation.

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 browser_navigate or other browser actions. There are no conditions, exclusions, or alternative tool references, so an agent must infer usage from the name alone.

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

browser_hoverBrowser HoverC

Hover over an element by selector.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNo
selectorYes
sessionIdYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description must disclose behavior on its own. It only says 'Hover over an element' and omits what happens on missing selectors, timeout handling, or any preconditions like an active session. This is minimal and insufficient for a browser automation tool.

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

Conciseness5/5

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

The description is a single, tightly worded sentence that delivers the core purpose without redundancy. It is front-loaded and easy to scan, earning full marks for conciseness.

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 absence of annotations, output schema, and parameter documentation, the description is under-specified for an agent to invoke correctly with confidence. It lacks information on error behavior, prerequisites, and parameter semantics, making it incomplete for a functional tool.

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

Parameters2/5

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

Schema description coverage is 0% and the tool description does not explain any parameters. While parameter names (sessionId, selector, timeout) are somewhat self-explanatory, units, defaults, and the effect of timeout are not clarified, leaving ambiguity.

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

Purpose4/5

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

The description states a specific verb ('Hover') and resource ('an element') with a method ('by selector'). It is clear and distinguishes from coordinate-based mouse actions like browser_mouse_move, though it doesn't explicitly name alternatives.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus siblings such as browser_mouse_move or browser_click. The description only states what it does, leaving the agent to infer appropriate usage from the tool name and sibling context.

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

browser_keyboard_pressBrowser Keyboard PressC

Press a keyboard key or key chord.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesPlaywright key name, e.g. "Enter", "ArrowDown", "Control+A".
sessionIdYes

TDQS

C2.2/5.0
Behavior1/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 states the action without disclosing any behavioral traits such as whether it waits for page load, requires focus, triggers events, or affects page state. For a mutation-like action, 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.

Conciseness4/5

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

The description is a single sentence with no waste, efficiently stating the core purpose. It is well-structured in terms of length, though it could be expanded without losing conciseness.

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

Completeness1/5

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

Given the tool's simplicity, one might argue a short description suffices, but it lacks essential context: no mention of when to use it vs. typing, no behavioral expectations, and no indication of return values or side effects. For an agent to correctly select and invoke this tool, more detail is needed.

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

Parameters2/5

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

Schema coverage is only 50%, with the 'key' parameter described in the schema but 'sessionId' undocumented. The description adds no parameter detail beyond the schema, failing to compensate for the missing sessionId semantics. The example in the schema is helpful, but the description does not reinforce it.

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 a specific verb ('Press') and resource ('keyboard key or key chord'), which is unambiguous and distinguishes it from typing tools. However, it does not explicitly name a sibling like browser_keyboard_type, so differentiation relies on the reader inferring that 'press' is for single keys/shortcuts.

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

Usage Guidelines1/5

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

There is no guidance on when to use this tool versus alternatives such as browser_keyboard_type (for typing strings) or mouse-based tools. The description does not mention any exclusions or context, leaving the agent to guess the appropriate use case.

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

browser_keyboard_typeBrowser Keyboard TypeC

Type text into the active page.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
delayNoMs between keystrokes. Omit for instant.
sessionIdYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state whether text is typed into the currently focused element, whether it simulates keystrokes that trigger page events, or whether it requires prior navigation/focusing. Key behavioral traits that an agent needs to predict side effects are absent.

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, front-loaded sentence with no filler or redundant wording. It is efficient, although arguably too terse to carry the behavioral and usage context that the tool needs.

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

Completeness2/5

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

For a tool with three parameters, no annotations, no output schema, and many closely related siblings, the description is insufficiently complete. It lacks information about session requirements, focus/active-element behavior, and how it differs from form filling or key-press tools. An agent cannot confidently select and invoke it correctly based solely on this definition.

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

Parameters2/5

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

Schema description coverage is only 33%, and the description adds no meaning beyond the schema. The 'text' parameter is only implied by the verb 'type', 'sessionId' is not explained as identifying the active browser session, and 'delay' is already documented in the schema. The description does not compensate for the under-documented parameters.

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

Purpose4/5

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

The description uses a specific verb and resource: 'Type text into the active page.' It clearly identifies the tool as a text-typing operation, though it does not explicitly differentiate itself from sibling tools like browser_keyboard_press or browser_fill. The core purpose is still understandable at a glance.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as browser_keyboard_press, browser_fill, or browser_fill_form. The description does not mention prerequisites like having an active session or focusing an element before typing. Usage context must be entirely inferred by the agent.

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

browser_mouse_click_xyBrowser Mouse Click XYC

Click at viewport coordinates.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYes
yYes
sessionIdYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses the coordinate space ('viewport'), but it does not specify mouse button, click behavior, side effects, or whether this is a direct event injection or a synthetic browser action.

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 extremely concise and front-loaded with the key action. It wastes no words, though the brevity leaves out useful behavioral and parameter detail.

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 three-required-parameter tool with no annotations and no output schema, the description is minimal but not wholly insufficient. It conveys the core action and coordinate space, but an agent still has to infer details about sessionId and mouse-button semantics.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for bare properties. It gives x and y some meaning via 'viewport coordinates', but it offers no elaboration on coordinate units or origin, and sessionId is entirely unexplained.

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 ('Click') and target ('viewport coordinates'). It is distinct from selector-based clicking via browser_click, but it does not explicitly differentiate itself from sibling tools.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives like browser_click, browser_mouse_move, or browser_mouse_drag. There are no conditions, exclusions, or prerequisites mentioned.

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

browser_mouse_dragBrowser Mouse DragD

Drag the mouse from one point to another.

ParametersJSON Schema
NameRequiredDescriptionDefault
endXYes
endYYes
startXYes
startYYes
sessionIdYes

TDQS

D1.9/5.0
Behavior1/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 'drag the mouse' without indicating that a button is held, that it requires an active session, or what side effects occur. This is a significant transparency gap for a tool that manipulates the browser.

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

Conciseness2/5

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

The description is extremely concise, but it is under-specified rather than efficiently structured. It provides no organizing principle or key information upfront, and the single sentence fails to earn its place by adding actionable detail.

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

Completeness1/5

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

For a tool with five required parameters and no output schema, this description is far from complete. It omits critical details like coordinate system, button press behavior, session requirements, and any return values, leaving the agent without enough information to call the tool correctly.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not explain any of the five required parameters (sessionId, startX, startY, endX, endY). The agent must infer meaning from names alone, which is insufficient for correct invocation.

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

Purpose4/5

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

The description states a specific verb (drag) and resource (mouse), and the action is distinct from siblings like browser_mouse_move or browser_click. It is not a tautology and gives a basic sense of what the tool does, though it lacks nuance about what dragging accomplishes (e.g., element movement, selection).

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

Usage Guidelines1/5

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

There is no guidance on when to use this tool versus alternatives such as browser_drag or browser_mouse_move. No prerequisites, context, or exclusions are provided, leaving the agent to guess when this tool is appropriate.

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

browser_mouse_moveBrowser Mouse MoveC

Move the mouse to viewport coordinates.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYes
yYes
sessionIdYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations at all, the description carries the full burden of behavioral disclosure. It does not state whether the movement triggers hover events, what happens for out-of-viewport coordinates, whether movement is instant or animated, or whether a valid session is required. This is a significant gap for a tool that manipulates the browser UI.

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 short sentence with no filler, and the key concept 'viewport coordinates' is front-loaded. It is efficient, though slightly too terse to carry the behavioral weight needed given the lack of annotations and parameter documentation.

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

Completeness2/5

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

For a tool with three required parameters, no annotations, and no output schema, the description omits too much: sessionId is unexplained, coordinate bounds are unknown, and side effects like hover-event firing are not disclosed. An agent can guess the basic action but lacks enough context to invoke it reliably in all cases.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. 'Viewport coordinates' gives minimal meaning to x and y, but the description never explains their units or origin, and sessionId is entirely unaddressed. The hint is better than nothing but leaves two of the three required parameters semantically empty.

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 uses a specific verb and resource: 'Move the mouse to viewport coordinates.' This clearly distinguishes it from click-style siblings like browser_mouse_click_xy, since it only moves without clicking, and from element-based actions like browser_hover because it targets raw coordinates. It does not explicitly name a sibling, but the intent 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?

No guidance is given about when to choose this tool over browser_mouse_click_xy, browser_hover, or browser_drag. The description implies it is for moving the cursor without clicking, but it never states this or mentions any exclusions or prerequisites such as an active session.

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

browser_navigateBrowser NavigateD

Navigate the session page to a URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
sessionIdYes

TDQS

D1.7/5.0
Behavior1/5

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

With no annotations, the description carries full responsibility for behavioral disclosure. It only states the action without revealing side effects, such as whether the page is loaded asynchronously, whether navigation is awaited, or what happens to the session state. This is inadequate for a tool that changes the 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.

Conciseness2/5

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

The description is extremely short, but this is under-specification rather than conciseness. It front-loads the action but omits critical guidance, making the brevity detrimental to usability.

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

Completeness2/5

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

For a simple navigation tool with two parameters and no output schema, a minimal description could suffice if it mentioned expected behavior or constraints. However, the bare sentence leaves the agent uncertain about what constitutes a successful navigation or any failure modes, so it is incomplete.

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

Parameters1/5

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

Schema description coverage is 0%, meaning the schema does not describe the parameters. The description also fails to clarify what 'session page' means or what format the URL should take, leaving both parameters under-specified and forcing the agent to guess.

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

Purpose3/5

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

The description clearly states the action (navigate) and the resource (session page) with a target URL. However, it does not differentiate from sibling navigation tools like browser_go_back, which also involves navigation, so the purpose is clear but not distinguished.

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

Usage Guidelines1/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. The agent is given no context about prerequisites, restrictions, or cases where another navigation tool would be more appropriate.

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

browser_screenshotBrowser ScreenshotC

Capture a screenshot of the current page.

ParametersJSON Schema
NameRequiredDescriptionDefault
fullPageNoCapture full scrollable page, not just the viewport.
sessionIdYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the action and does not explain what the screenshot output looks like, whether a session must be active, or whether full-page capture affects behavior. There is no mention of return type, side effects, or error conditions.

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 front-loaded sentence with no redundant wording. It is appropriately terse, though it lacks useful context that could be added without harming conciseness.

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

Completeness2/5

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

Given no annotations, no output schema, and an undocumented required sessionId parameter, the description is incomplete for an agent to call the tool confidently. It does not explain what the returned screenshot data is, whether the page must be fully loaded, or how the required session is validated.

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

Parameters2/5

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

Schema description coverage is only 50%, with sessionId completely undocumented. The description adds no meaning for either parameter, and the fullPage parameter is only explained by the schema itself, not by the tool description.

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

Purpose4/5

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

The description states a specific action and resource: capturing a screenshot of the current page. It is clear about the tool's core function, though it does not explicitly distinguish itself from siblings like browser_snapshot or browser_get_page_structure.

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 does it mention any exclusions or prerequisites. The only implied usage is that it captures a screenshot, but no comparison with sibling tools is given.

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

browser_select_optionBrowser Select OptionC

Select options in a select element.

ParametersJSON Schema
NameRequiredDescriptionDefault
valuesYesOption values to select; pass multiple for multi-select.
timeoutNo
selectorYes
sessionIdYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the behavioral burden. It only says 'Select options in a select element' and does not explain side effects, whether selection triggers change events, whether the element must be visible or interactive, or what happens if a value is not available. This leaves the agent without crucial behavioral information for a browser 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.

Conciseness4/5

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

The description is short and front-loaded with the core action; every word earns its place. However, it is arguably under-specified for the tool's complexity, so it earns a high conciseness score but not the top score, which expected richer useful content without redundancy.

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

Completeness1/5

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

For a browser automation tool with four parameters, no annotations, low schema coverage, and no output schema, the description is far too thin. It leaves important gaps around usage, parameter meaning, side effects, and success/failure behavior. An agent would need guesswork or external domain knowledge to invoke the tool correctly.

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

Parameters1/5

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

Schema description coverage is only 25%, and the description adds essentially no parameter semantics. It does not mention sessionId, selector, values, or timeout, nor how selector is interpreted (CSS/XPath/text), what timeout unit is used, or how multiple values map to multi-select. The schema itself provides a description only for values, and the description does not compensate for the remaining undefined parameters.

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

Purpose4/5

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

The description states a clear verb ('Select'), a specific resource ('options in a select element'), and is immediately distinguishable from siblings like browser_click and browser_fill. It is plain and correct, though it does not explicitly contrast itself with those sibling tools.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives such as browser_fill, browser_fill_form, or browser_click. There is no mention of prerequisites, the need to wait for the select element, or a note that browser_fill_form might be more appropriate for filling whole forms. This is a general statement of purpose rather than usable selection guidance.

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

browser_snapshotBrowser SnapshotC

Return a structured page snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxDepthNoMax tree depth (default 4).
selectorNoScope to an element; omit for document body.
sessionIdYes
maxChildrenNoMax children per node (default 20).

TDQS

C2.8/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 states only that a snapshot is returned, but gives no details about side effects (likely read-only), scope of the snapshot (e.g., entire page vs. subtree), or output format. The phrase 'structured' is vague and does not clarify what the agent can expect.

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

Conciseness5/5

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

The description is a single sentence with no excess words. It is efficiently structured and front-loaded with the core purpose. No word is wasted, though the brevity itself contributes to the under-specification captured in other dimensions.

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

Completeness2/5

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

For a tool with four parameters, no output schema, and no annotations, the description is insufficiently informative. It does not state the return type, pagination or depth behavior, or how it relates to the many sibling browser_* tools. An agent would have to rely on the schema and tool name to understand the full behavior, which is incomplete.

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 description adds no parameter-level information; it only describes the overall action. The schema already documents maxDepth, selector, and maxChildren but leaves sessionId unexplained. With 75% schema coverage, the description could compensate for unspecified parameters but does not, leaving sessionId and the relationship between parameters to the schema alone.

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 a specific action ('Return') and a resource ('structured page snapshot'). It is not a tautology and conveys the tool's core function. However, it lacks differentiation from siblings like browser_get_page_structure, which might also return a page snapshot, so it doesn't fully disambiguate.

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. There is no mention of use cases, conditions, or exclusions, and no references to sibling tools like browser_get_page_structure. An agent must infer its niche from the name alone.

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

browser_upload_fileBrowser Upload FileC

Upload files to a file input.

ParametersJSON Schema
NameRequiredDescriptionDefault
selectorYes
filePathsYes
sessionIdYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It reveals the tool performs an upload, but does not mention side effects, whether it opens a native file dialog, if it supports simple vs. multiple selection, or what happens on invalid paths/timeouts. Important behavior is missing.

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

Conciseness4/5

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

The description is a single concise sentence with no filler words, which is efficient. However, it is so sparse that it fails to convey necessary operational context, making the conciseness a double-edged sword. It earns its place but does not go beyond the minimum.

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

Completeness1/5

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

Given the tool's complexity (3 required params, no output schema, no annotations), the description is grossly incomplete. An agent has no info on how to combine the parameters, what a valid filePath looks like, whether the session must be active, or what to expect on success/failure. This description is inadequate for correct invocation.

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

Parameters1/5

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

Schema coverage is 0% and the description mentions no parameter details. The three parameters (sessionId, selector, filePaths) are undocumented in both the schema and description. The description does not add any meaning beyond the name itself; an agent must guess what selector means or what filePaths should contain.

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 says 'Upload files to a file input,' which clearly identifies the action (upload) and the target resource (file input). It is distinct from sibling tools like browser_fill (text entry) and browser_select_option (option selection), so an agent can tell what it does without opening schema.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool vs alternatives. For instance, an agent isn't told to use this only for <input type='file'> elements or how it differs from browser_fill or browser_keyboard_type. The context of a required active session and file paths is implied but never stated.

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

browser_wait_for_selectorBrowser Wait For SelectorC

Wait for a selector to reach a state.

ParametersJSON Schema
NameRequiredDescriptionDefault
stateNo
timeoutNo
selectorYes
sessionIdYes

TDQS

C2/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 behavioral burden, but it only restates the wait behavior. It does not disclose default state, polling behavior, timeout failure behavior, or whether errors are thrown when the condition is not met.

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

Conciseness2/5

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

The text is short, but this is under-specification rather than concise completeness. It is a single vague sentence that provides no structured defaults, examples, or conditions.

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

Completeness1/5

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

For a tool with 4 parameters, no annotations, and no output schema, this description is far from complete. An agent could not tell what happens on failure, what the default wait condition is, or how the result is returned.

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

Parameters1/5

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

Schema description coverage is 0%, so the description must compensate for all four parameters. It adds no meaning beyond the parameter names: it does not explain what 'state' values mean, what timeout defaults to, or what sessionId represents.

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

Purpose3/5

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

The description identifies an operation ('wait') and a resource ('selector'), and hints at a condition ('state'), so it is not a pure tautology. However, 'reach a state' is vague and does not specify possible states or what success looks like, and it doesn't clearly distinguish this from the sibling browser_wait_for_timeout.

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

Usage Guidelines2/5

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

No guidance is given for when to use this tool versus alternatives such as browser_wait_for_timeout or browser_snapshot. The agent must infer usage from the name and schema rather than from the description.

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

browser_wait_for_timeoutBrowser Wait For TimeoutC

Wait a fixed number of milliseconds.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdYes
millisecondsYes

TDQS

C2.7/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 that the tool waits for a fixed duration, but does not mention whether the wait blocks further actions, how timing errors are handled, or whether the session must be active. This is a significant gap for a tool that pauses execution.

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

Conciseness5/5

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

The description is a single concise sentence that is perfectly front-loaded. Every word earns its place, with zero redundancy or filler.

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?

The description is minimal and fails to provide essential operational context for a tool that manipulates timing. It does not mention how it interacts with the browser session, potential side effects (e.g., blocking), or when this tool should be preferred over waiting for elements. With no annotations or output schema, this is inadequate for safe use.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. While it mentions 'fixed number of milliseconds' which ties to the 'milliseconds' parameter, it provides no extra meaning for 'sessionId' or format constraints beyond the schema. The usage of the parameters is inferable but not explicitly clarified.

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

Purpose3/5

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

The description states the core action ('wait a fixed number of milliseconds') with a specific verb and resource. However, it does not elaborate on what constitutes a valid session or any nuance about timing, so it is clear but minimal.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus waiting for a selector (browser_wait_for_selector) or other alternatives. It only implies a fixed delay, leaving the agent to infer appropriate use cases.

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

close_all_sessionsClose All SessionsA

Close all active browser sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It states the action (closing sessions) but does not disclose whether this is destructive, irreversible, or if it prompts for confirmation. It also doesn't mention behavior when no sessions are active. This is a minimal disclosure that adds little beyond the tool name.

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, crisp sentence that states the action and scope without any fluff. It is appropriately sized for a simple tool and front-loads the key behavior.

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 tool with no parameters, no output schema, and simple semantics, the description is almost complete. It does not mention return values or error handling, but these are not critical for a straightforward 'close all' action. The description gives the agent enough 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 and schema coverage is 100% (trivially), so the baseline for parameter semantics is 4. The description adds nothing about parameters because none exist, which is appropriate.

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

Purpose5/5

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

The description 'Close all active browser sessions' uses a specific verb (close), names the resource (browser sessions), and specifies scope with 'all', clearly distinguishing it from close_session (singular) and get_sessions (list). It is unambiguous and immediately tells the agent what the tool accomplishes.

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: close all sessions at once, but it does not explicitly state when to prefer this over close_session or when not to use it (e.g., when only a specific session should be closed). No alternative tools are mentioned, leaving the usage decision to inference.

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

close_sessionClose SessionB

Close a browser session by numeric session ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdYes

TDQS

B3.4/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 of behavioral disclosure. It only restates the close operation and adds no context about idempotence, effects on associated browser resources, behavior for invalid or already-closed session IDs, or reversibility. This is a meaningful gap for a destructive action.

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

Conciseness5/5

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

The description is a single clear sentence with no filler. It front-loads the action and immediately specifies the parameter concept, making it easy to scan and parse.

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

Completeness3/5

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

For a one-parameter tool, the description provides the minimum needed to attempt a correct call: the action and the parameter's role. However, with no annotations, no output schema, and no error-handling information, an agent is left guessing about edge-case behavior, so it is not fully complete.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for the undocumented parameter. It adds 'numeric' and links the ID to a browser session, but the schema already provides integer type and minimum value. No additional meaning is provided about where the ID comes from, whether it must reference an active session, or what happens if it is invalid.

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

Purpose5/5

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

The description states a specific verb and resource: 'Close a browser session by numeric session ID.' It clearly identifies the action and scope, and the singular 'a browser session' distinguishes it from close_all_sessions and start_session without needing to open anything else.

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 when a single, specific browser session should be closed by its numeric ID, and close_all_sessions is an obvious alternative. However, it does not explicitly state when to prefer this over alternatives or mention prerequisites such as the session needing to be active.

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

get_sessionsGet SessionsA

List all active browser sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It only says 'List all active browser sessions,' which implies a read-only operation but does not explicitly state that it is non-destructive, nor does it mention any side effects or return format. The description is minimal and lacks disclosure beyond the verb 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, clear sentence with no redundant words. It is appropriately concise and front-loaded, stating the action and scope immediately.

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 tool with no parameters and no output schema, the description covers the core purpose. It could optionally mention that it returns a list of session identifiers or clarify what qualifies as 'active,' but these are not critical for a simple listing tool. The description is sufficiently complete for an agent to use 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 input schema has zero parameters, so the description adds no parameter-specific semantics, but none are needed. The baseline for 0 params is 4, and the description does not conflict or confuse.

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 ('List') and a specific resource ('all active browser sessions'), which unambiguously identifies the tool's function. It distinguishes from sibling tools like start_session and close_session by focusing on the listing action.

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 – an agent would use this to see which sessions are active – but it does not explicitly state when to use it over alternatives or any exclusions. Since the action is distinct from start/close, the usage is inferred rather than spelled out.

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

start_sessionStart SessionC

Start a browser session using the configured provider.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerNo
sessionNameNo

TDQS

C2.1/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not mention side effects (e.g., creating a resource), whether starting a session might fail if one already exists, authentication requirements, or any destructive potential. The description is essentially a tautology of the tool name with no added behavioral context.

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

Conciseness2/5

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

The description is a single sentence and is concise, but it is under-specified rather than appropriately concise. It lacks critical information and does not front-load usage constraints or prerequisites. Every word earns its place, but there are too few words to be useful.

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

Completeness1/5

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

Given the tool has two parameters, no output schema, and no annotations, the description is grossly incomplete. It does not explain what happens after starting a session, how to identify the session for subsequent browser_* calls, or how the provider selection affects behavior. An agent would be unable to correctly invoke this tool with confidence.

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

Parameters1/5

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

Schema description coverage is 0%, so the description must explain the parameters. It does not mention 'provider' or 'sessionName' at all. The provider enum values (browserbase, anchor, playwright, cloudflare) are left for the schema to define, but the description should clarify their meaning or expectations, which it fails to do.

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

Purpose4/5

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

The description clearly states the tool starts a browser session, with a specific verb and resource. It is distinct from sibling tools that operate within a session, but it does not explicitly differentiate itself from potential alternatives like 'get_sessions' or 'close_session' by noting that it is the entry point. The phrase 'using the configured provider' adds some context but is vague.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives. It does not mention that a session must be started before using browser_* tools, nor does it mention any prerequisites such as configuration being set. The description simply states what it does without any conditional or comparative context.

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

Tool Schema Changelog

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

  1. 26 tool updatesv0.1.14
    • First observedbrowser_click
    • First observedbrowser_dom_query
    • First observedbrowser_drag
    • First observedbrowser_evaluate
    • First observedbrowser_fill
    • First observedbrowser_fill_form
    • First observedbrowser_generate_locator
    • First observedbrowser_get_page_structure
    • First observedbrowser_go_back
    • First observedbrowser_hover
    • First observedbrowser_keyboard_press
    • First observedbrowser_keyboard_type
    • First observedbrowser_mouse_click_xy
    • First observedbrowser_mouse_drag
    • First observedbrowser_mouse_move
    • First observedbrowser_navigate
    • First observedbrowser_screenshot
    • First observedbrowser_select_option
    • First observedbrowser_snapshot
    • First observedbrowser_upload_file
    • First observedbrowser_wait_for_selector
    • First observedbrowser_wait_for_timeout
    • First observedclose_all_sessions
    • First observedclose_session
    • First observedget_sessions
    • First observedstart_session

TDQS

C2.6/5.0

Scored across 26 tools

Disambiguation3/5

Most browser actions are individually clear, but several near-overlapping pairs exist: browser_snapshot, browser_get_page_structure, and browser_dom_query all describe page/DOM inspection, while browser_fill, browser_keyboard_type, browser_click, and browser_mouse_click_xy cover similar input territory. Descriptions reduce some ambiguity, but an agent could still easily select the wrong tool.

Naming Consistency4/5

Session tools follow a clean verb_noun pattern like start_session and close_session, while browser actions consistently use a browser_ prefix followed by descriptive verbs. The mixed prefixes are minor and the naming remains predictable and readable.

Tool Count2/5

With 26 tools, this server sits above the 25+ threshold and feels too heavy for a single MCP surface. Several mouse, keyboard, and DOM primitives could be consolidated or split into a separate server without losing functionality.

Completeness4/5

The toolset covers the core browser automation lifecycle well: navigation, DOM interaction, form filling, mouse/keyboard input, screenshots, uploads, waits, and session management. Notable gaps like tab/window management, cookies, and frame handling are missing, but agents can often work around them via browser_evaluate or separate sessions.

Maintenance

ActivityMaintained
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers