Skip to main content
Glama
crmmc

DrissionPage BetterMCP

by crmmc

DrissionPage BetterMCP

A better DrissionPage MCP server — covers most capabilities of the original library, 255 unit tests, 100% service coverage, AI-optimized tool calls and descriptions.

English | 中文


Why BetterMCP

BetterMCP

Note

55 Tools

Covers browser, tabs, navigation, elements, forms, screenshots, network, cookies, storage, iframes, files, and more

Most capabilities of the original library, ready out of the box

255 Unit Tests

17 test modules + 6 integration test suites

100% service coverage, verifiable on every commit

AI-Friendly

Clear tool descriptions, explicit parameter semantics, unified response structure

LLMs understand on first call — fewer retries, less token waste

Element Cache

element_find returns an element_id for direct reuse in subsequent calls

No repeated lookups, more efficient interactions

Native Locator Syntax

#id .class @attr text: css: xpath: @@AND @|OR

Full DrissionPage syntax support

Dual Transport

stdio + streamable-http

Works with all major AI coding tools

Related MCP server: DrissionPage MCP Server

Quick Start

Prerequisites

  • Python >= 3.10

  • uv

  • Chrome / Chromium browser

Install

git clone https://github.com/pureTrue/DrissionPage-BetterMCP.git
cd DrissionPage-BetterMCP
uv sync

Configure Your AI Tool

Claude Code

Project root .mcp.json:

{
  "mcpServers": {
    "drissionpage": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/DrissionPage-BetterMCP", "dp-mcp"]
    }
  }
}

Or via CLI:

claude mcp add drissionpage -- uv run --directory /path/to/DrissionPage-BetterMCP dp-mcp

Cursor

.cursor/mcp.json (project-level) or ~/.cursor/mcp.json (global):

{
  "mcpServers": {
    "drissionpage": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/DrissionPage-BetterMCP", "dp-mcp"]
    }
  }
}

VS Code (Copilot)

.vscode/mcp.json:

{
  "servers": {
    "drissionpage": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/DrissionPage-BetterMCP", "dp-mcp"]
    }
  }
}

Note: VS Code uses servers as the top-level key, not mcpServers.

Codex

.codex/config.toml (project-level) or ~/.codex/config.toml (global):

[mcp_servers.drissionpage]
command = "uv"
args = ["run", "--directory", "/path/to/DrissionPage-BetterMCP", "dp-mcp"]

Or via CLI:

codex mcp add drissionpage -- uv run --directory /path/to/DrissionPage-BetterMCP dp-mcp

Replace /path/to/DrissionPage-BetterMCP with the actual project path.

Environment Variables

Optional, prefixed with DP_MCP_:

Variable

Default

Description

DP_MCP_DEFAULT_TIMEOUT

15.0

Default tool timeout (seconds)

DP_MCP_LOG_LEVEL

INFO

Logging level

DP_MCP_NETWORK_CAPTURE_SIZE

200

Max network packets to capture

Copy .env.example to .env and customize as needed.

Tool List

Browser Management

Tool

Description

browser_connect

Connect to an existing Chrome or launch a new instance; supports headless, proxy, user_agent

browser_info

Get browser status: address, tab count, process ID

browser_quit

Close the browser and release all resources

Tab Management

Tool

Description

tab_new

Open a new tab, optionally navigate to a URL

tab_close

Close a tab; defaults to the current tab

tab_switch

Switch to a specific tab

tab_list

List all open tabs

tab_find

Search tabs by title and/or URL

tab_info

Get tab details

Page Navigation

Tool

Description

page_navigate

Navigate to a URL; returns final URL and page title

page_back / page_forward

Go back or forward in history

page_refresh

Refresh the page; optionally ignore cache

page_stop

Stop page loading

Element Interaction

Tool

Description

element_find

Find an element; returns a cached element_id

element_find_all

Find all matching elements

element_wait

Wait for an element state (present / visible / hidden / deleted)

element_click

Click an element; supports left / right / middle / double click

element_input

Type text into an input; optionally clear first

element_clear

Clear an input field

element_hover

Hover over an element

element_drag

Drag to a target element or pixel offset

element_get_text

Get visible text content

element_get_attr

Get an HTML attribute value

element_get_info

Get full details: tag, text, rect, attrs, HTML, states

element_select

Select an option in a <select> element

element_get_options

Get all options of a <select> element

element_scroll_into_view

Scroll until the element is visible

Screenshots

Tool

Description

page_screenshot

Screenshot the page; supports full-page capture

element_screenshot

Screenshot a specific element

Page Content

Tool

Description

page_get_text

Get the page's plain text

page_get_html

Get the HTML source

page_wait_load

Wait for page load / URL change / title change

page_scroll

Scroll the page in a direction

Iframes

Tool

Description

frame_list

List all iframes

frame_switch

Switch into an iframe

frame_parent

Return to the parent frame

frame_main

Return to the top-level page

Network Capture

Tool

Description

network_listen_start

Start listening for requests matching a URL pattern

network_listen_wait

Wait for and retrieve captured network packets

Cookies & Storage

Tool

Description

cookie_get_all

Get all cookies; optionally filter by domain

cookie_set

Set a cookie

cookie_remove

Remove a cookie or clear all

storage_get

Read from localStorage / sessionStorage

storage_set

Write to localStorage / sessionStorage

Keyboard & Dialogs

Tool

Description

keyboard_press

Press a key or combination (Enter, Ctrl+A, etc.)

keyboard_type

Type text continuously

dialog_handle

Handle an alert / confirm / prompt dialog

dialog_auto

Enable or disable automatic dialog handling

Advanced

Tool

Description

action_chain

Execute an action sequence: move, click, drag, type, wait

js_execute

Execute JavaScript on the page

cdp_execute

Execute a raw Chrome DevTools Protocol command

File Operations

Tool

Description

file_upload

Upload a file; supports hidden inputs

file_download

Download a file via URL or click trigger

page_save

Save the page as PDF or MHTML

Developer Guide

Project Structure

src/dp_mcp/
├── server.py              # MCP server — 55 tool definitions
├── config.py              # Settings (pydantic-settings)
├── models.py              # ToolResult, BrowserInfo, TabInfo, etc.
├── core/                  # Core services
│   ├── browser.py         # Browser lifecycle
│   ├── tab.py             # Multi-tab management
│   ├── navigation.py      # Page navigation
│   └── element.py         # Element finding & interaction
├── services/              # Domain services
│   ├── screenshot.py      # Screenshots
│   ├── frame.py           # Iframes
│   ├── scroll.py          # Scrolling
│   ├── network.py         # Network capture
│   ├── cookie.py          # Cookies
│   ├── action.py          # Action chains
│   ├── dialog.py          # Dialogs
│   ├── cdp.py             # CDP
│   └── file.py            # File operations
└── utils/
    └── locator.py         # Locator parser + element cache

Running Tests

# Unit tests (no browser needed)
uv run pytest tests/unit -v

# Integration tests (requires Chrome)
uv run pytest tests/integration -v -m integration

# All tests
uv run pytest -v

Locator Syntax

Full DrissionPage locator syntax is supported:

Syntax

Example

Description

#id

#login-btn

By ID

.class

.submit

By class name

@attr=val

@name=email

By attribute

text:str

text:Login

By visible text

tag:name

tag:input

By tag name

css:selector

css:div.card>h2

CSS selector

xpath:expr

xpath://div[@id='app']

XPath

@@a@@b

@@class=btn@@text()=OK

AND condition

@|a@|b

@|class=btn@|class=link

OR condition

Use the optional by parameter to disambiguate: css, xpath, text, id, class, attr.

Contributing

Pull requests and issues are welcome.

  1. Fork this repository

  2. Create a feature branch: git checkout -b feature/my-feature

  3. Commit your changes: git commit -m "feat: add my feature"

  4. Push the branch: git push origin feature/my-feature

  5. Open a Pull Request

Please make sure all tests pass before submitting:

uv run pytest tests/unit -v

License

This project's code is licensed under BSD 3-Clause.

Note: This project depends on DrissionPage, which uses a custom non-commercial license that prohibits unauthorized commercial use. Users must independently comply with DrissionPage's license terms.

Available Tools

31 tools
browser_quitA

Close the browser and release all resources.

Call browser_connect to start a new session.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

No annotations exist, but the description fully discloses the tool's effect: closing the browser and releasing resources. No hidden side effects or contradictions.

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

Conciseness5/5

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

Two sentences, no fluff, with the action stated first and a follow-up tip. Excellent conciseness.

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

Completeness5/5

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

For a parameterless tool with no annotations and an output schema, the description is complete: it tells what the tool does and what to do next.

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

Parameters4/5

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

The tool has zero parameters, and the schema coverage is 100%. The description does not need to elaborate on parameters.

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

Purpose5/5

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

The description clearly states 'Close the browser and release all resources,' using a specific verb-noun pair. No sibling tool performs this action, so it is distinct.

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

Usage Guidelines4/5

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

The description mentions 'Call browser_connect to start a new session,' indicating the tool ends a session. It does not explicitly state when not to use, but the simplicity of the tool makes this sufficient.

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

dialog_autoA

Enable or disable automatic handling of alert/confirm/prompt dialogs.

When enabled, all future dialogs are automatically accepted (accept=true)
or dismissed (accept=false) without manual intervention. Disable with
enabled=false when you need to inspect dialog content with dialog_handle.
Auto mode is automatically disabled on browser disconnect.
ParametersJSON Schema
NameRequiredDescriptionDefault
acceptNo
tab_idNo
enabledYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It explains what happens when enabled (auto-accept/dismiss), the meaning of the 'accept' parameter, and auto-disable behavior. It could mention potential side effects or state persistence, but it is adequate for a toggle 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 concise (three sentences), front-loaded with the core purpose, and every sentence adds value. No redundant or vague language.

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

Completeness5/5

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

Given the tool's simplicity, the description is complete. It covers behavior, parameter roles, usage context, and sibling differentiation. The presence of an output schema reduces the need to describe return values.

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 elaborate on parameters. It explains 'enabled' and 'accept' clearly, but misses 'tab_id'. While optional and default null, the lack of explanation for 'tab_id' leaves a gap, especially for agents unaware of tab-scoping.

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 explicitly states the tool's purpose: 'Enable or disable automatic handling of alert/confirm/prompt dialogs.' It uses a specific verb-resource combination and distinguishes itself from the sibling 'dialog_handle' by mentioning that disabling auto mode allows manual inspection.

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

Usage Guidelines5/5

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

The description provides clear when-to-use guidance: 'When enabled, all future dialogs are automatically accepted or dismissed... Disable with enabled=false when you need to inspect dialog content with dialog_handle.' It also notes auto-disable on browser disconnect.

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

dialog_handleA

Handle the currently open alert/confirm/prompt dialog.

Returns dialog type, message, and whether it was accepted. Fails immediately
if no dialog is present — use dialog_auto for pre-emptive handling.
For prompt dialogs, pass text to fill the input field before accepting.
ParametersJSON Schema
NameRequiredDescriptionDefault
textNo
acceptNo
tab_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

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

No annotations provided, so description carries full burden. Discloses return info (dialog type, message, accepted status), failure condition (no dialog), and handling of prompt dialogs with text input. Comprehensive for a dialog handler.

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?

Three sentences, front-loaded with main purpose, no unnecessary words. Efficient and clear.

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?

Main behavior well-described, but lacks explanation for tab_id parameter and accept parameter behavior (e.g., what happens if false). Output schema exists but param documentation is weak. Some gaps for a complete understanding.

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 0%, but description only explains text parameter partially (for prompt dialogs). Does not explain accept or tab_id parameters or their behavior. Considerable gap in parameter documentation.

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?

Clearly states it handles open dialogs (alert/confirm/prompt), specifies verb 'handle' and resource 'dialog'. Distinguishes from sibling dialog_auto by mentioning pre-emptive handling.

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

Usage Guidelines5/5

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

Explicitly says to use when dialog is present, fails immediately otherwise, and suggests dialog_auto for pre-emptive handling. Provides clear when-to-use and when-not.

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

element_clearC

Clear the value of an input element. Provide locator or element_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
byNo
by_jsNo
tab_idNo
locatorNo
element_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries full burden for behavioral disclosure. It only says 'Clear the value' without mentioning whether this triggers DOM events, works on all input types, or what the state after clearing looks like. This is insufficient for a mutation tool.

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?

Extremely concise (single sentence). However, it sacrifices too much information for brevity. Structure is clean but content is too sparse.

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 5 parameters and no schema descriptions, the description is incomplete. It does not explain the purpose of optional parameters like by_js or tab_id, nor does it mention output schema (which exists but is unaddressed).

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 0%, so description must compensate. It mentions 'locator or element_id' but ignores three other parameters (by, by_js, tab_id). The schema shows these exist but description adds no meaning for them.

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 (clear value of input element) and the resource (input element). However, it does not differentiate from sibling tools like element_find or element_get_text, which could confuse an agent about when to use this specific tool.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., element_get_text to read, element_find to locate). The instruction 'Provide locator or element_id' is minimal and doesn't explain prerequisites or appropriate contexts.

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

element_dragA

Drag an element to a target element or by pixel offset.

Provide either target_locator/target_element_id (drag to target) or
offset_x/offset_y (drag by pixels). Duration controls drag speed in seconds.
ParametersJSON Schema
NameRequiredDescriptionDefault
byNo
tab_idNo
locatorNo
durationNo
offset_xNo
offset_yNo
element_idNo
target_locatorNo
target_element_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It discloses the drag action and parameter modes but does not mention potential side effects, prerequisites (e.g., element must be draggable), or return value. This is adequate for a simple action tool.

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

Conciseness5/5

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

The description is two short, front-loaded sentences with clear structure. Every sentence adds value without redundancy, making it concise and easy to parse.

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

Completeness3/5

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

Given 9 parameters and no required ones, the description explains the core use case but omits several parameters and does not clarify what the output schema contains. It is minimally complete for an agent to use correctly, but leaves gaps.

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

Parameters3/5

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

Schema coverage is 0%, so description must compensate. It explains the two parameter groups (target vs offset) and duration, but does not cover other parameters like by, tab_id, locator, or element_id. Some of these may be self-explanatory, but the description could be more thorough.

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

Purpose5/5

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

The description clearly states the tool drags an element to a target or by pixel offset, specifying the verb 'drag' and the resource 'element', distinguishing it from sibling tools like element_clear or element_find.

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

Usage Guidelines4/5

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

The description explicitly provides usage guidance: use target_locator/target_element_id for drag-to-target or offset_x/offset_y for pixel drag, and mentions duration for speed control. However, it does not explicitly state when not to use this tool versus alternatives.

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

element_findA

Find a single element and return its info including element_id for future reference.

Locator syntax: #id | .class | @attr=val | text:str | tag:name |
css:selector | xpath:expr | @@a@@b (AND) | @|a@|b (OR)

Use element_id from result to interact with the element without re-finding it.
If parent is provided, finds the locator within the parent element (two-step find).
ParametersJSON Schema
NameRequiredDescriptionDefault
byNo
parentNo
tab_idNo
locatorYes
timeoutNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It discloses that it returns element_id for future reference, explains locator syntax, and describes the two-step find behavior for parent. However, it does not explicitly state that it is a read-only operation, nor does it describe timeout behavior, failure handling, or side effects. The provided context is useful but incomplete.

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 four sentences plus a concise list of locator syntax options. It is front-loaded with the core purpose. The syntax list could be more structured, but overall it is efficient and clear.

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 complexity (5 parameters, 1 required, no schema descriptions, no annotations, output schema exists but not described), the description is incomplete. It does not explain all parameters, does not describe the return info beyond element_id, and does not address error handling or waiting behavior. The gaps limit usability for an agent.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It explains the locator parameter in detail with syntax examples and explains the parent parameter as scoping. However, it does not explain the 'by', 'tab_id', or 'timeout' parameters. Only 2 of 5 parameters get meaningful description, leaving significant gaps.

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

Purpose5/5

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

The description clearly states it finds a single element and returns its info including element_id. It distinguishes from sibling tool element_find_all by explicitly saying 'single element', and explains the two-step find with parent. The verb 'Find' and resource 'single element' make the purpose specific and unambiguous.

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

Usage Guidelines4/5

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

The description implies usage context: use this to find an element for later interaction (by element_id). It explains locator syntax and the parent parameter for scoped finding. However, it lacks explicit when-not-to-use guidance versus alternatives like element_find_all, though the distinction is natural.

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

element_find_allC

Find all matching elements. Returns list with element_id for each.

Locator syntax: #id | .class | @attr=val | text:str | tag:name |
css:selector | xpath:expr | @@a@@b (AND) | @|a@|b (OR)

Returns empty list (not error) when no elements match.
ParametersJSON Schema
NameRequiredDescriptionDefault
byNo
limitNo
parentNo
tab_idNo
locatorYes
timeoutNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the locator syntax and that empty results return an empty list, but fails to mention side effects such as scrolling, waiting, or state changes. The description is adequate but not comprehensive.

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 relatively short and front-loaded with the main purpose. However, it includes a lengthy locator syntax list that would be better placed in parameter docs. It could be more efficient by linking to a syntax reference.

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 6 parameters and an output schema, the description is incomplete. It omits parameter explanations and behavioral details. The note about empty results is helpful, but overall it lacks sufficient information for correct usage.

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?

With 0% schema description coverage, the description must explain the 6 parameters. It only describes the 'locator' syntax implicitly but does not explain 'by', 'limit', 'parent', 'tab_id', or 'timeout'. This is a critical gap.

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

Purpose5/5

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

The description clearly states 'Find all matching elements. Returns list with element_id for each.' which specifies the verb (Find all), resource (matching elements), and distinguishes from the sibling 'element_find' (singular) by returning all matches.

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 does not provide any guidance on when to use this tool vs alternatives like 'element_find' or other search tools. It only mentions behavior on empty results but lacks explicit usage contexts or exclusions.

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

element_get_infoA

Get full element details: tag, text, rect, attrs, html, states.

Provide locator or element_id. Returns richer info than element_find.
ParametersJSON Schema
NameRequiredDescriptionDefault
byNo
tab_idNo
locatorNo
element_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It discloses output fields but does not explicitly state read-only nature, error behavior, or that it does not modify the page. Adequate for a simple get but could be more transparent.

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

Conciseness5/5

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

Two sentences with no extra words. Front-loaded with the main action and returned fields. Efficient and to the point.

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?

Has output schema so return values are covered. However, given 4 parameters and many siblings, missing details on when to use tab_id or how to combine parameters. Feels somewhat incomplete for a tool with multiple input options.

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

Parameters3/5

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

Schema coverage is 0%, so description must compensate. It advises 'Provide locator or element_id', but does not explain the 'by' or 'tab_id' parameters, leaving ambiguity. Partially helpful but incomplete.

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?

Description clearly states 'Get full element details' and lists specific fields (tag, text, rect, attrs, html, states). It differentiates from sibling element_find by noting it returns 'richer info', making the tool's purpose distinct.

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

Usage Guidelines4/5

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

Explicitly says 'Provide locator or element_id', guiding input choice. Implicitly suggests usage when full details are needed vs. element_find, but lacks explicit 'when not to use' or prerequisites like required permissions.

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

element_get_optionsA

Get all options of a element with text, value, index, and selected status.

Use before element_select to see available choices.
Provide locator or element_id.
ParametersJSON Schema
NameRequiredDescriptionDefault
byNo
tab_idNo
locatorNo
element_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description adds value by disclosing the return data structure (text, value, index, selected status). It implies a read-only operation without side effects, though it doesn't explicitly state safety or potential errors.

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 three short sentences, each serving a clear purpose: function definition, usage context, and required inputs. No redundant information.

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

Completeness3/5

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

Given no annotations and low schema coverage, the description provides essential context but omits explanation of two parameters ('by', 'tab_id') and potential error cases. The existence of an output schema reduces the need to describe return format, but parameter gaps remain.

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 0%, so the description must compensate. It only mentions 'locator' and 'element_id' as identifiers, failing to explain 'by' and 'tab_id'. This leaves ambiguity about when to use these other parameters.

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

Purpose5/5

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

The description clearly states the tool retrieves options of a <select> element, specifying the data returned (text, value, index, selected status). It distinguishes from the sibling 'element_select' by indicating this tool is used before selection.

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

Usage Guidelines4/5

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

The description explicitly states when to use the tool ('before element_select') and hints at required inputs ('Provide locator or element_id'). It lacks explicit when-not-to-use or alternative tools beyond element_select.

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

element_get_textB

Get the visible text content of an element. Provide locator or element_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
byNo
tab_idNo
locatorNo
element_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It discloses that only 'visible' text is returned, which is a behavioral trait, but it does not state whether the tool waits for the element, what happens if the element is not found, or any side effects. The output schema exists but is not described.

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 extremely concise with two sentences, no fluff, and front-loads the purpose. Every sentence adds value without redundancy.

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

Completeness2/5

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

Given the tool has 4 parameters, many sibling tools, and no annotations, the description is too brief. It lacks details on parameter relationships, usage context, and behavioral guarantees. The presence of an output schema does not excuse the missing behavioral and guidance information.

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 description only adds meaning for 'locator' and 'element_id' by stating they can be provided. It does not explain the 'by' or 'tab_id' parameters, leaving their semantics unclear. This is insufficient compensation for the lack of schema descriptions.

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

Purpose5/5

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

The description clearly states the verb 'Get' and the resource 'visible text content of an element', which is specific and distinguishes it from siblings like element_get_info (which gets attributes) and page_get_text (which gets page-level text).

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 mentions 'Provide locator or element_id' but gives no guidance on when to use this tool over alternatives like element_get_info or when not to use it. No explicit context or exclusions are provided.

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

element_waitA

Wait for an element to reach the given state.

state: present (default) | visible | hidden | deleted
Default timeout is 15s, max is 60s.
ParametersJSON Schema
NameRequiredDescriptionDefault
byNo
stateNopresent
tab_idNo
locatorYes
timeoutNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses default and maximum timeout (15s/60s) and the states waited for, but omits details on failure behavior (e.g., timeout error), polling mechanism, or whether the tool is exhaustive.

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

Conciseness5/5

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

Two concise sentences front-load the purpose and key parameters (state and timeout). No wasted words.

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 5 parameters, 0% schema coverage, and no annotations, the description is incomplete. It explains only state and timeout, leaving locator, by, and tab_id unexplained. An output schema exists but does not compensate for the missing parameter documentation.

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 0%, so description must clarify parameters. It explains 'state' (enum values) and 'timeout' (default/max), but does not explain the critical 'locator' parameter, nor 'by' (locator strategy) or 'tab_id'. Two of five parameters remain undocumented.

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?

Description clearly specifies the verb 'Wait' and the resource 'element', lists the four possible states (present, visible, hidden, deleted), and distinguishes this tool from sibling element tools like element_find or element_get_text which do not wait.

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 should be used when needing to wait for an element to reach a specific state, but it does not explicitly compare with alternatives such as element_find (which might immediately check presence) or provide when-not-to-use guidance.

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

frame_mainB

Return to the top-level page from any nested iframe. Clears frame context entirely.

ParametersJSON Schema
NameRequiredDescriptionDefault
tab_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations provided, the description discloses the key behavioral trait 'Clears frame context entirely,' but does not detail side effects, permissions, or the output format, leaving some aspects unclear.

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 concise with two sentences, no redundant information, and efficiently communicates the core action and a critical behavioral note.

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?

Despite the simple nature of the tool, the description omits explanation of the 'tab_id' parameter and the return value (output schema exists), leaving gaps for an agent to understand how to use 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?

The only parameter 'tab_id' has 0% schema description coverage and the tool description provides no explanation of its purpose or usage, failing to compensate for the lack of schema documentation.

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

Purpose5/5

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

The description clearly states the tool's purpose: returning to the top-level page from any nested iframe. It uses a specific verb 'Return' and resource 'top-level page', distinguishing it from sibling tools focused on tabs or page navigation.

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

Usage Guidelines3/5

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

The description implies usage when in a nested iframe but does not explicitly state when to use this tool versus alternatives. No exclusions or alternative tool names are mentioned.

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

js_executeA

Execute JavaScript code on the current page and return the result.

Code runs as a function body — access injected args via arguments[0], arguments[1], etc.
Returns serialized result: primitives directly, DOM elements as summary strings,
non-serializable values as "[object Object]". Fails if an alert dialog is open.
Use specific tools (element_click, page_navigate, etc.) when available;
this is an escape hatch for unsupported operations.
ParametersJSON Schema
NameRequiredDescriptionDefault
argsNo
codeYes
tab_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Describes execution context (function body, args via arguments object), serialization behavior (primitives, DOM elements, non-serializable values), and failure condition (alert dialog open). Lacks mention of side effects on page state, but overall transparent.

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

Conciseness5/5

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

Concise, front-loaded, and no extraneous information. Each sentence adds value in a compact format.

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?

Covers main aspects: action, execution model, return value, and when to use alternatives. Output schema exists, so return details are covered. Could be more explicit about tab_id parameter, but overall complete for the complexity.

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, the description should compensate but only mentions how to access args (arguments[0], etc.) without explaining the 'code' parameter format or the purpose of 'tab_id'. Leaves significant gaps for agent understanding.

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?

Clearly states 'Execute JavaScript code on the current page and return the result.' Differentiates from siblings by positioning as an escape hatch for unsupported operations, referencing specific alternatives like element_click and page_navigate.

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

Usage Guidelines5/5

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

Explicitly advises to use specific tools when available and to use this only as an escape hatch for unsupported operations, providing clear when-to-use and when-not-to-use guidance.

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

keyboard_pressA

Press a key or key combination on the current page.

Single keys: "enter", "tab", "escape", "backspace", "delete", "f1".."f12".
Combinations: "ctrl+a", "ctrl+c", "ctrl+shift+t", "alt+f4".
Operates on the currently focused element. For typing text, use keyboard_type instead.
ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
tab_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations provided, so description carries burden. States it operates on focused element and provides examples of keys. Does not disclose behavior for invalid keys or unfocused scenarios, but overall adequate for a simple key press.

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?

Three sentences, front-loaded with purpose, followed by examples and usage notes. No wasted words.

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?

Simple tool with output schema present, but description omits parameter 'tab_id'. With low parameter coverage, completeness is moderate.

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 has 2 parameters with 0% coverage in schema. Description only explains 'key' parameter with examples, but does not explain 'tab_id' parameter at all. Semantics are incomplete.

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?

Description clearly states verb and resource ('Press a key or key combination on the current page'), provides examples, and explicitly distinguishes from sibling 'keyboard_type' by directing typing tasks elsewhere.

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

Usage Guidelines4/5

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

Explicitly says when to use this tool vs 'keyboard_type', and states it operates on focused element. Lacks explicit prerequisites like focusing an element first, but context is clear.

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

keyboard_typeA

Type text continuously on the current page as keyboard input.

Types each character sequentially. For filling form fields, prefer element_input
which targets a specific element. Use this for page-level typing when no specific
element reference is needed.
ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
tab_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Discloses sequential character typing behavior. No annotations to contradict; description adds value beyond schema.

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?

Three well-structured sentences, front-loaded with purpose, no fluff.

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

Completeness4/5

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

Adequate for a simple tool with output schema. Could clarify 'tab_id' but otherwise 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 coverage is 0%. Description only mentions 'text' implicitly; does not explain 'tab_id' parameter, leaving semantics unclear.

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?

Clearly states verb 'type' and resource 'text continuously on current page'. Distinguishes from sibling 'element_input' by indicating page-level usage vs form fields.

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

Usage Guidelines5/5

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

Explicitly advises to prefer 'element_input' for form fields and specifies when to use this tool (page-level typing without element reference).

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

network_listen_startA

Start listening for network requests matching a URL pattern on the current tab.

Only one listener per tab — starting a new one stops the previous. The listener
auto-expires after `expire` seconds if network_listen_wait is not called. After
starting, perform the action that triggers the request (e.g., click a button),
then call network_listen_wait to capture packets.
ParametersJSON Schema
NameRequiredDescriptionDefault
expireNo
methodNo
tab_idNo
is_regexNo
res_typeNo
url_patternYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals key behaviors: listener is per-tab, auto-expires, and requires a subsequent wait call. However, it does not detail what happens to ongoing listeners when stopped, error conditions, or authorization needs.

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 extremely concise, using only three sentences to convey purpose, workflow, and key constraints. The most critical information (purpose and usage flow) is front-loaded, with no wasted words.

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

Completeness3/5

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

Given 6 parameters (some with defaults), an output schema (exists but not shown), and no annotations, the description covers the workflow and two key parameters but omits explanations for `method`, `is_regex`, `res_type`, and `tab_id`. This leaves gaps for correct parameter usage, though the output schema assumption reduces the need to describe return values.

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 input schema has 0% description coverage, so the description must add meaning. It clarifies the `url_pattern` (matches a URL pattern) and `expire` (auto-expire timeout), but fails to explain `method`, `is_regex`, `res_type`, and `tab_id` beyond the default 'current tab' implication. This leaves users guessing for these parameters.

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

Purpose5/5

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

The description clearly states the tool's action ('Start listening for network requests matching a URL pattern on the current tab') with a specific verb and resource. It also distinguishes itself from the sibling tool 'network_listen_wait' by explaining the workflow of starting then waiting.

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

Usage Guidelines5/5

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

The description provides explicit when-to-use guidance: start listening, perform the action triggering the request, then call network_listen_wait. It also notes important constraints: only one listener per tab (starting a new one stops the previous) and auto-expiry after `expire` seconds if not called.

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

network_listen_waitA

Wait for network packets captured by a previously started listener.

Returns captured packets written to a JSONL file. Automatically stops the listener after waiting. If timeout occurs with partial captures, returns what was captured (not an error). Use count=1 for a single expected request, higher for multiple.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNo
tab_idNo
timeoutNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Discloses that the tool automatically stops the listener after waiting and returns partial captures on timeout instead of error. Without annotations, this is valuable 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.

Conciseness5/5

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

Three sentences, each adding value: purpose, output behavior, and parameter guidance. No wasted words.

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?

Covers core behavior and main parameter (count) adequately. Tab_id is omitted, but output schema exists to fill return value gap. Acceptable for a simple tool.

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

Parameters3/5

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

With 0% schema description coverage, the description adds meaning for the count parameter but does not explain tab_id or timeout parameter semantics beyond implication.

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

Purpose5/5

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

The description clearly states the verb ('wait') and resource ('network packets captured by a previously started listener'), and distinguishes it from siblings like network_listen_start which starts the listener.

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

Usage Guidelines4/5

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

Provides guidance on when to use (after starting a listener) and how to set the count parameter for different scenarios, but does not explicitly state when not to use or mention alternatives.

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

page_forwardA

Go forward in browser history. Optionally specify number of steps.

ParametersJSON Schema
NameRequiredDescriptionDefault
stepsNo
tab_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description must expose behavior. It describes the action but omits details like error handling when history is exceeded or per-tab behavior.

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

Conciseness5/5

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

The description is extremely concise with a single clear sentence, no redundant words.

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

Completeness4/5

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

For a simple navigation tool with optional parameters and an output schema, the description is nearly complete. The only gap is not mentioning the 'tab_id' parameter.

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

Parameters3/5

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

Schema coverage is 0%, but the description partially explains the 'steps' parameter ('number of steps') while ignoring 'tab_id'. This adds some but not complete parameter context.

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

Purpose5/5

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

The description clearly states the action ('Go forward in browser history') and distinguishes it from sibling tools like 'page_navigate' or 'page_scroll' by specifying the browser history context.

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

Usage Guidelines4/5

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

The description implies usage for moving forward in browser history, optionally specifying steps, but does not explicitly state when not to use or provide alternatives.

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

page_get_textB

Get the plain text content of the current page (no HTML tags).

Useful for reading page content without markup.

ParametersJSON Schema
NameRequiredDescriptionDefault
tab_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/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 cover behavioral aspects. It only states the output type but omits details like dependencies (page must be loaded), potential limitations (hidden text, rendering), or behavior of the tab_id parameter.

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 extremely concise with two short sentences. The first sentence front-loads the core purpose, and the second adds a relevant usage note. No unnecessary words.

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

Completeness3/5

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

The tool is simple (get page text), and with an output schema present, the description does not need to detail return values. However, the lack of parameter documentation and behavior details reduces completeness for a tool with one optional parameter and no annotations.

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?

The input schema has one parameter (tab_id) with 0% description coverage. The description does not mention or explain this parameter, leaving its meaning and usage unclear to the agent.

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 verb (Get) and resource (plain text content of the current page) and specifies that it returns text without HTML tags. However, it does not explicitly differentiate from sibling tools like element_get_text, which could cause confusion about scope.

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 second sentence provides a usage hint ('useful for reading page content without markup'), implying when to use it. But it lacks explicit guidance on when not to use it (e.g., if HTML structure is needed) or alternatives among sibling tools.

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

page_refreshA

Refresh the current page. Set ignore_cache=true to bypass browser cache.

ParametersJSON Schema
NameRequiredDescriptionDefault
tab_idNo
ignore_cacheNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Basic behavior is described: refresh with optional cache bypass. No annotations are provided, so the description must carry the burden, but it does not disclose any additional behavioral traits such as impact on scripts or data.

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

Conciseness5/5

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

Two concise sentences with front-loaded purpose and clear parameter detail. No fluff.

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

Completeness4/5

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

For a simple refresh tool, the description is adequate. It covers the main action and the key parameter. An output schema exists but is not needed for understanding.

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

Parameters3/5

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

The description explains ignore_cache, but tab_id is not explained beyond being optional. Since schema description coverage is 0%, the description adds only partial value.

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?

Description clearly states the action: 'Refresh the current page.' It also specifies an optional parameter to bypass cache, distinguishing it from navigation tools like page_navigate.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this vs. sibling tools. The description implies it refreshes the current page, but does not contrast with page_forward or page_navigate.

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

page_scrollA

Scroll the page in a direction.

direction: up | down | left | right | top | bottom.
pixels is ignored for top/bottom (they scroll to absolute position).
ParametersJSON Schema
NameRequiredDescriptionDefault
pixelsNo
tab_idNo
directionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that 'pixels is ignored for top/bottom' which is helpful, but does not mention other behavioral aspects such as whether the scroll is smooth, if it can fail on certain pages, or if it's a non-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.

Conciseness4/5

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

The description is concise with two sentences plus a list. It is front-loaded with the core action. Minor improvement could be integrating the list more naturally, but overall it's efficient.

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

Completeness3/5

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

The tool has low complexity and an output schema (not shown). The description covers the core scrolling semantics but omits explanation of the tab_id parameter and potential return values, leaving it somewhat incomplete for a fully autonomous agent.

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

Parameters3/5

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

With 0% schema coverage, the description adds meaning to the direction parameter by listing valid values, and explains pixel behavior for top/bottom. However, it does not explain the tab_id parameter or provide enum constraints, leaving a partial gap.

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

Purpose5/5

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

The description clearly states 'Scroll the page in a direction.' and lists specific direction values, making the purpose unambiguous. It distinguishes from sibling tools like page_navigate and page_refresh by focusing on scrolling within the current page.

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

Usage Guidelines3/5

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

The description implies usage for scrolling but does not explicitly state when to use this tool versus alternatives (e.g., keyboard scrolling or other navigation tools). No when-not or context cues are provided.

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

storage_getB

Read a value from localStorage or sessionStorage.

Set storage_type to 'local' (default) or 'session'.
ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
tab_idNo
storage_typeNolocal

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must fully convey behavior. It only states 'read a value,' which implies a safe operation, but it does not discuss error handling (e.g., missing key), return format, or any side effects. More detail is needed.

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 concise with three sentences. The first sentence immediately states the tool's purpose, and each sentence adds value. Minor improvement: could be slightly more structured.

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

Completeness3/5

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

Given three parameters, no annotations, and an output schema (assumed to cover return info), the description provides the essential purpose but lacks details on the tab_id parameter and potential edge cases. Adequate but not thorough.

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

Parameters2/5

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

The schema has 0% parameter description coverage, so the description must compensate. It only explains the 'storage_type' parameter's options ('local' or 'session'). The 'key' and 'tab_id' parameters are not elaborated beyond their schema definitions.

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

Purpose5/5

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

The description clearly states 'Read a value from localStorage or sessionStorage,' specifying the verb (read) and resource (storage), and distinguishes it from the sibling 'storage_set'.

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 mentions how to set 'storage_type' to 'local' or 'session,' but does not provide guidance on when to use this tool versus alternatives like cookie_get_all, nor does it specify prerequisites or exclusions.

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

storage_setB

Write a value to localStorage or sessionStorage.

Set storage_type to 'local' (default) or 'session'.
ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
valueYes
tab_idNo
storage_typeNolocal

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the burden. It does not disclose what happens on overwrite, storage limits, or error conditions. Only states basic behavior.

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?

Two sentences, no fluff. However, it could be better structured with a brief list or clearer separation of parameter info.

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

Completeness3/5

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

For a simple setter, the description covers basics but lacks important details like overwrite behavior and when to use different storage types. With an output schema present, return values are not 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%. The description only explains 'storage_type' with its options, leaving 'key', 'value', and 'tab_id' undocumented.

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

Purpose5/5

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

The description clearly states the action ('Write a value') and the resource ('localStorage or sessionStorage'), and distinguishes from sibling tool 'storage_get' which reads.

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 versus alternatives, nor any context about when not to use it. The description is minimally informative.

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

tab_findA

Search tabs by title and/or URL substring. Returns matching tabs.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNo
titleNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It discloses substring search behavior but lacks details on case sensitivity, exact matching, or output format (though output schema covers return values).

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

Conciseness5/5

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

Two clear sentences with no wasted words. Front-loaded with action and resource, then result.

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

Completeness4/5

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

For a simple tool with optional parameters and existing output schema, description covers core functionality sufficiently. Does not need to explain return values due to output schema.

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

Parameters4/5

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

Schema description coverage is 0%, so description compensates by linking parameters to search criteria: title and URL substring. Adds meaning beyond schema names, though format details are omitted.

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?

Description clearly states the tool searches tabs by title and/or URL substring, using specific verbs and resources. It distinguishes from siblings like tab_list and tab_info by focusing on substring search.

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 but no explicit guidance on when to use this tool versus alternatives like tab_list or tab_info. No when-not-to-use or context for exclusions.

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

tab_infoB

Get details of a specific tab or the current tab.

ParametersJSON Schema
NameRequiredDescriptionDefault
tab_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It does not disclose what happens if tab_id is invalid or if no tabs exist. Behavioral traits like error handling or return format are missing.

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

Conciseness5/5

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

Single sentence, no redundant words. Front-loaded with essential information. Efficient and to the point.

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

Completeness4/5

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

For a simple tool with one optional parameter and output schema, description covers the parameter behavior adequately. Does not detail return fields, but output schema can fill that gap.

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

Parameters4/5

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

Schema coverage is 0%, so description adds meaning: it explains that tab_id can be a specific id or null to get current tab. This adds value beyond the schema's type definition.

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 gets details of a specific tab or the current tab. It uses a specific verb-resource pair and implies distinction from siblings like tab_list and tab_new.

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. The description implies behavior when tab_id is omitted but does not explicitly state conditions or limitations.

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

tab_listA

List all open tabs with their tab_id, title, URL, and which is current.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 disclose behavioral traits. It states the tool lists tabs with certain fields, but omits details like behavior when no tabs are open (likely empty list), potential for large lists, or whether the output is sorted. As a read operation, it is non-destructive but this is not explicitly stated.

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 efficiently communicates the tool's function and output. It is front-loaded with the action 'List all open tabs' and specifies exact fields returned. No extraneous words.

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

Completeness4/5

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

Given the tool's simplicity (no parameters, output schema exists), the description is mostly complete. It specifies what is listed and the fields returned. However, it lacks context on ordering, whether the list includes all browser tabs or just the current window, and how the 'current' flag works. Still, it covers the essential information.

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

Parameters4/5

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

The tool has zero parameters, so schema description coverage is 100% trivially. The description does not need to add parameter details. Baseline for zero parameters is 4, and the description adds no unnecessary information.

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

Purpose5/5

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

The description clearly states the tool's purpose: listing all open tabs with specific details (tab_id, title, URL, current flag). It uses specific verb 'List' and distinguishes the resource 'open tabs'. It differentiates from siblings like tab_find (single tab lookup) and tab_info (specific tab details).

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?

No explicit guidance on when to use this tool versus alternatives. The description implies it is for obtaining an overview of all open tabs, but does not mention when not to use it (e.g., for a specific tab, use tab_find or tab_info) or provide context about prerequisites or limitations.

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

tab_newA

Open a new browser tab. Optionally navigate to URL. Automatically switches to the new tab.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description adds 'Automatically switches to the new tab' but lacks details on what happens to the previous tab, output format, or whether URL validation occurs.

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

Conciseness5/5

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

Two concise, front-loaded sentences with no redundant information. Every phrase adds value.

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

Completeness4/5

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

For a simple one-parameter tool with an output schema, the description covers opening a tab and automatic switching. Minor omission: no mention of URL requirements (absolute, special URLs) or error conditions.

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

Parameters3/5

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

The description adds meaning to the 'url' parameter by stating it's optional and used for navigation, compensating for zero schema coverage. However, no format or default behavior (e.g., blank tab) is specified.

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

Purpose5/5

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

The description clearly states the specific action: opening a new browser tab with optional URL navigation. It distinguishes from sibling tools like tab_find (find existing tabs) and page_navigate (navigate current tab).

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 (e.g., page_navigate, tab_find). The automatic switch behavior is implied but not explicitly contrasted with other tab operations.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 31 tool updatesv0.1.0
    • First observedbrowser_quit
    • First observedcookie_get_all
    • First observedcookie_remove
    • First observedcookie_set
    • First observeddialog_auto
    • First observeddialog_handle
    • First observedelement_clear
    • First observedelement_drag
    • First observedelement_find
    • First observedelement_find_all
    • First observedelement_get_info
    • First observedelement_get_options
    • First observedelement_get_text
    • First observedelement_wait
    • First observedframe_main
    • First observedjs_execute
    • First observedkeyboard_press
    • First observedkeyboard_type
    • First observednetwork_listen_start
    • First observednetwork_listen_wait
    • First observedpage_forward
    • First observedpage_get_text
    • First observedpage_navigate
    • First observedpage_refresh
    • First observedpage_scroll
    • First observedstorage_get
    • First observedstorage_set
    • First observedtab_find
    • First observedtab_info
    • First observedtab_list
    • First observedtab_new

TDQS

A3.7/5.0
Disambiguation5/5

Each tool targets a distinct action or domain (cookies, dialogs, elements, etc.) with clear boundaries. Overlap is minimal and mitigated by different scopes (e.g., element_get_text vs page_get_text).

Naming Consistency5/5

All tools use a consistent snake_case pattern with domain_verb (e.g., cookie_get_all, element_find). No mixed conventions; the naming is predictable and easy to follow.

Tool Count5/5

31 tools cover the major facets of browser automation (navigation, elements, cookies, dialogs, network, keyboard, storage, tabs, frames, JS) without redundancy. The count is well-scoped for a comprehensive MCP server.

Completeness4/5

Core operations are well covered: CRUD-like for cookies, elements, storage, and tabs. Missing advanced features like screenshots or file handling, but the existing surface enables most common workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    An MCP server providing robust browser automation tools for AI assistants, including page navigation, element interaction, and screenshot capabilities. It leverages the DrissionPage library to enable standardized DOM analysis, network monitoring, and complex web task automation.
    17
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    A professional browser automation server that enables MCP clients to perform structured web navigation, element interaction, and data extraction using the DrissionPage framework. It features 14 deterministic tools optimized for LLMs to automate web workflows efficiently without relying on vision-based models.
    69
    489
    Apache 2.0
  • F
    license
    Not graded
    quality
    D
    maintenance
    A browser automation MCP server providing 30 tools for navigation, interaction, page information, state checks, tab management, and more, enabling natural language control of browsers via MCP-compatible clients.
    -

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/crmmc/DrissionPage-BetterMCP'

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