Browser Pool MCP
This server provides a dynamic, isolated browser automation pool for concurrent agents via the MCP protocol and Playwright. Each agent gets its own browser instance by passing _agent_id, ensuring session isolation and conflict-free execution (omit _agent_id for a shared browser). It supports comprehensive automation actions:
Navigation: navigate to URLs, go back/forward, get current URL.
Interaction: click, type, press keys, hover, select options, drag & drop, file upload, handle dialogs.
Inspection: full-page/viewport screenshots, accessibility snapshots, console messages (filtered), network requests, JavaScript evaluation.
Waiting: wait for time, text to appear/disappear.
Tab & Window: list, create, switch, close tabs; resize and close browsers.
Pool Management: monitor per-agent status (
pool_status), close instances (browser_close), test async (pool_test).
Configure via environment variables (base port, max instances per wrapper, global max, idle timeout, debug logging). Supports on-demand spawning, graceful cleanup of idle/orphaned instances, and prevents termination of active browsers. Default max 10 concurrent browsers per wrapper, idle cleanup after 30 minutes.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Browser Pool MCPopen example.com in an isolated browser for agent-a and screenshot it"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
๐ฅ๏ธ Browser Pool MCP
Dynamic browser pool MCP server โ every agent gets its own isolated browser.
English | ไธญๆๆๆกฃ
A Model Context Protocol server that wraps
Microsoft's @playwright/mcp and
turns it into a dynamic browser pool: each unique caller gets its own
isolated Chrome instance, so multiple Claude Code sessions, subagents, or any
MCP clients can run browser automation concurrently without conflicts.
โจ Features
๐งฉ Per-agent isolation โ each unique
_agent_idgets its own browser. No more"Browser is already in use"errors when multiple agents hit the browser at once.๐ On-demand spawning โ browsers are lazily started on first use (local CLI, ~1s), never pre-allocated.
๐งน Auto-cleanup โ idle instances are killed after 30 min; orphaned instances from crashed wrappers are cleaned on startup.
๐ก๏ธ Never kills busy agents โ when the pool is full, the wrapper evicts only idle instances; if all are busy it waits, so a running agent's browser is never yanked away.
๐ Backward compatible โ calling tools without
_agent_idshares one "default" browser, preserving original single-session behavior.๐ Full Playwright toolset โ all
@playwright/mcptools (navigate, click, type, screenshot, evaluate, tabs, networkโฆ), no feature loss.
Related MCP server: hanzi-browse
๐ง Architecture
Claude Code main session โโstdioโโ> playwright-pool-mcp (this server)
โ
โโโ agent "A" โโSSEโโ> @playwright/mcp :9000 โโ> Chrome A
โโโ agent "B" โโSSEโโ> @playwright/mcp :9001 โโ> Chrome B
โโโ agent "C" โโSSEโโ> @playwright/mcp :9002 โโ> Chrome C
โโโ "default" โโSSEโโ> @playwright/mcp :9003 โโ> Chrome DThe wrapper does not control Chrome directly. It spawns @playwright/mcp
instances on demand and proxies MCP tool calls to them, adding per-agent routing.
๐ Quick Start
Prerequisites
Node.js โฅ 18
npm
Install
git clone <your-repo-url> playwright-pool-mcp
cd playwright-pool-mcp
npm install
# First-time Chromium download (if needed):
npx playwright install chromiumConfigure Claude Code
User-level global config (~/.claude.json):
{
"mcpServers": {
"playwright-pool": {
"type": "stdio",
"command": "node",
"args": ["/path/to/playwright-pool-mcp/playwright-pool-script.js"],
"env": {
"BROWSER_POOL_BASE_PORT": "9000",
"BROWSER_POOL_MAX_INSTANCES": "10",
"BROWSER_POOL_GLOBAL_MAX": "12",
"BROWSER_POOL_INSTANCE_TIMEOUT_MS": "1800000",
"BROWSER_POOL_DEBUG": "0"
}
}
}
}Restart Claude Code. Tools appear as mcp__playwright-pool__*.
๐ก Usage
Mode 1: Shared (backward compatible)
Omit _agent_id โ all calls share one "default" browser:
mcp__playwright-pool__browser_navigate(url="https://example.com")
mcp__playwright-pool__browser_snapshot()Mode 2: Isolated per agent (recommended)
Pass _agent_id โ each unique value gets its own browser:
subagent A: mcp__playwright-pool__browser_navigate(url="https://news.ycombinator.com", _agent_id="agent-a")
subagent B: mcp__playwright-pool__browser_navigate(url="https://github.com/trending", _agent_id="agent-b")
subagent C: mcp__playwright-pool__browser_navigate(url="https://www.baidu.com", _agent_id="agent-c")โ ๏ธ Important: pass the same
_agent_idacross all calls from one agent to keep its browser state (cookies, login, navigation). Different agents use different values.
Subagent template
Create .claude/agents/web-worker.md:
---
name: web-worker
description: Run browser tasks (scraping / research / testing / automation)
tools: mcp__playwright-pool__*, Read, Bash
---
Use mcp__playwright-pool__* tools to operate the browser.
**Key rule: pass the `_agent_id` parameter on every browser tool call.**
The main conversation may dispatch multiple web-workers concurrently; different
workers must use different `_agent_id` values so each gets its own isolated browser.
Examples:
- mcp__playwright-pool__browser_navigate(url="...", _agent_id="worker-1")
- mcp__playwright-pool__browser_evaluate(function="...", _agent_id="worker-1")
Use the same `_agent_id` for all calls within one worker.๐ ๏ธ Tools
All tools accept an optional _agent_id parameter. Aligned 1:1 with @playwright/mcp v0.0.78.
โน๏ธ Element targeting: interaction tools use
target(snapshot ref or CSS selector). Therefparameter is accepted as an alias fortarget(Claude Code's client maps it).
Tool | Description |
| Navigate to a URL |
| Go back |
| Accessibility tree (LLM-friendly) |
| Screenshot (PNG/JPEG) |
| Click element |
| Type text into element |
| Press keyboard key |
| Hover element |
| Select dropdown option |
| Drag & drop |
| Run JavaScript |
| Wait for condition |
| Find text in page snapshot |
| Fill multiple form fields (JSON array of |
| Manage tabs |
| Resize window |
| Handle alert/confirm |
| Upload files |
| Get console logs |
| Network activity |
| Mouse control (screen coordinates) |
| Run arbitrary code (dangerous) |
| Close browser for this agent |
| Pool status (per agent) |
โ๏ธ Configuration
All config via environment variables in ~/.claude.json โ no code changes needed:
Variable | Default | Description |
|
| Starting port for browser instances |
|
| Max concurrent browsers per wrapper (โ300MB RAM each) |
|
| Global max browsers across ALL wrapper sessions (multiple Claude Code windows). File-lock based counter in |
|
| Idle timeout (30 min) |
|
| Set |
Changes take effect after restarting Claude Code.
๐ก Global limit (
BROWSER_POOL_GLOBAL_MAX): each Claude Code window runs its own wrapper, andBROWSER_POOL_MAX_INSTANCESlimits only that wrapper. To cap browser instances across ALL sessions (e.g. two windows must share a total of 12), setBROWSER_POOL_GLOBAL_MAXto the same value in every session's config. Slots are counted via a lock-protected counter file (~/.browser-pool/global-count) and are released when instances close or the wrapper exits gracefully.
๐ How It Works
Any browser tool call arrives โ wrapper extracts
_agent_id(defaults to"default")Looks up the per-agent assignment map โ reuse existing browser if alive
If none: check the global limit (
BROWSER_POOL_GLOBAL_MAX) โ find a free port โ spawn local@playwright/mcpCLI (node cli.js --port X --isolated)Mark the instance
busyduring the call, so eviction never kills an in-flight callPool full? Evict only idle instances (oldest first); if all busy, wait up to 60s
Idle > 30 min โ auto-killed; wrapper startup scans for orphaned instances and cleans them (PPID-guarded, never kills another live session's browsers)
Global slot accounting: acquired before spawn, released when the instance closes or the wrapper exits gracefully
๐ฆ Dependencies
@modelcontextprotocol/sdkโ MCP protocol@playwright/mcpโ browser automation enginezodโ schema validation
๐ License
Available Tools
25 toolsbrowser_clickC
็นๅปๅ ็ด ๏ผelement = a11y ๅผ็จ๏ผref = CSS ้ๆฉๅจ๏ผ
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | CSS ้ๆฉๅจๅ ๅบ | |
| element | Yes | ๅฏ่ฎฟ้ฎๆงๆ ไธญ็ๅ ็ด id | |
| _agent_id | No | ้็ฆป้ฎ๏ผๅไธ agent ็ๆๆ่ฐ็จไผ ็ธๅ็ๅผไปฅไฟๆๅ ถๆต่งๅจ๏ผไธๅ agent ไผ ไธๅ็ๅผไปฅ่ทๅ็ฌ็ซๆต่งๅจใ็็ฅๅๅ ฑไบซ้ป่ฎคๆต่งๅจใ |
TDQS
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 only states the click action and parameter meanings, omitting side effects, navigation waits, or error conditions. This leaves the agent without critical safety information for a potentially mutating action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence. Every word carries meaning, with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple click tool, the description is incomplete; it lacks behavioral context, usage alternatives, and return value expectations. Without annotations or output schema, the agent cannot anticipate side effects like navigation or form submission. However, the parameter clarification is somewhat helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description restates the schema's parameter meanings ('element = a11y ๅผ็จ, ref = CSS ้ๆฉๅจ') but adds no new semantics beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool clicks an element ('็นๅปๅ ็ด ') and distinguishes the two reference types (a11y reference vs CSS selector). This is a specific verb+resource combination that differentiates it from sibling interaction tools like browser_hover or browser_drag.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention exclusions, prerequisites, or scenarios where browser_type or browser_hover would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_closeB
ๅ ณ้ญ่ฏฅ agent ็ๆต่งๅจ
| Name | Required | Description | Default |
|---|---|---|---|
| _agent_id | No | ้็ฆป้ฎ๏ผๅไธ agent ็ๆๆ่ฐ็จไผ ็ธๅ็ๅผไปฅไฟๆๅ ถๆต่งๅจ๏ผไธๅ agent ไผ ไธๅ็ๅผไปฅ่ทๅ็ฌ็ซๆต่งๅจใ็็ฅๅๅ ฑไบซ้ป่ฎคๆต่งๅจใ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It only states the action 'close' without disclosing whether it is destructive, irreversible, or how it affects tabs, session state, or other agent activities.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence that is direct and front-loaded. Every word earns its place, with no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although the tool is simple and the parameter is documented in the schema, the description lacks behavioral context such as side effects, return behavior, or relationship to sibling tools. It provides barely more than the tool name itself.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the sole parameter _agent_id, which already explains its purpose and default behavior. The description adds no additional parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('ๅ ณ้ญ' = close) and the resource ('่ฏฅ agent ็ๆต่งๅจ' = this agent's browser), distinguishing it from navigation, inspection, and other sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as browser_drop or pool_test. The description does not mention prerequisites, typical scenarios, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_console_messagesC
่ทๅๆงๅถๅฐๆถๆฏ
| Name | Required | Description | Default |
|---|---|---|---|
| level | Yes | ๆฅๅฟ็บงๅซ่ฟๆปค | |
| _agent_id | No | ้็ฆป้ฎ๏ผๅไธ agent ็ๆๆ่ฐ็จไผ ็ธๅ็ๅผไปฅไฟๆๅ ถๆต่งๅจ๏ผไธๅ agent ไผ ไธๅ็ๅผไปฅ่ทๅ็ฌ็ซๆต่งๅจใ็็ฅๅๅ ฑไบซ้ป่ฎคๆต่งๅจใ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits but says nothing about how the tool behaves. It does not mention whether messages are read from the current page, whether the console is cleared, what output format is expected, or any side effects. This is a critical transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of a single short phrase. It is front-loaded and to the point, but this brevity sacrifices essential detail, making it somewhat under-specified rather than efficiently concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, this description is grossly incomplete. It fails to explain return value structure, filtering semantics, or how the tool interacts with the browser state, leaving the agent without enough information to use it reliably.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully documents both parameters (level and _agent_id) with descriptions, so the tool description does not need to repeat them. However, it also does not add any contextual information about the level filter, such as acceptable values, allowed combinations, or the default behavior when omitted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (่ทๅ/retrieve) and resource (ๆงๅถๅฐๆถๆฏ/console messages), which effectively differentiates it from sibling tools like browser_network_requests. However, it lacks specificity about the exact scope (e.g., current page vs. all tabs) and what types of console messages are included.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool instead of alternatives such as browser_network_requests or browser_snapshot. The description simply states what it does without any context about use cases, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_dragC
ๆๅ ็ด A ๆๅฐๅ ็ด B
| Name | Required | Description | Default |
|---|---|---|---|
| _agent_id | No | ้็ฆป้ฎ๏ผๅไธ agent ็ๆๆ่ฐ็จไผ ็ธๅ็ๅผไปฅไฟๆๅ ถๆต่งๅจ๏ผไธๅ agent ไผ ไธๅ็ๅผไปฅ่ทๅ็ฌ็ซๆต่งๅจใ็็ฅๅๅ ฑไบซ้ป่ฎคๆต่งๅจใ | |
| end_selector | Yes | ็ป็น CSS ้ๆฉๅจ | |
| start_selector | Yes | ่ตท็น CSS ้ๆฉๅจ |
TDQS
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 does not state whether the tool waits for the drop, simulates drag events, works with iframes or shadow DOM, or what happens on failure. This is a serious gap for a complex browser interaction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no redundancy, but it is under-specified rather than concisely rich. While it is not verbose, the extreme brevity leaves out essential information, making it acceptable but not exemplary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description is responsible for explaining the tool's complete behavior. It fails to mention return values, side effects, waiting behavior, or error cases. For a moderate-complexity tool, this is inadequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully describes start_selector and end_selector, including _agent_id. The description's 'element A' and 'element B' merely restates the schema's start/end relationship without adding new semantic value, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (drag) and the targets (element A to element B). It distinguishes itself from siblings like browser_drop through the verb 'drag', but it does not elaborate on whether this is a standard HTML5 drag-and-drop or a mouse event sequence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives such as browser_click or browser_drop. There is no mention of prerequisites, supported element types, or scenarios where drag is appropriate, leaving the agent without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_dropB
ๆพไธ่ขซๆๆฝ็ๅ ็ด
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | CSS ้ๆฉๅจ | |
| _agent_id | No | ้็ฆป้ฎ๏ผๅไธ agent ็ๆๆ่ฐ็จไผ ็ธๅ็ๅผไปฅไฟๆๅ ถๆต่งๅจ๏ผไธๅ agent ไผ ไธๅ็ๅผไปฅ่ทๅ็ฌ็ซๆต่งๅจใ็็ฅๅๅ ฑไบซ้ป่ฎคๆต่งๅจใ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It names the action but does not describe side effects, what the 'selector' targets (drop point vs. element), whether DOM changes occur, or what happens on completion. This is too opaque for a browser automation action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that is front-loaded with the action and resource. No filler or redundant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description is under-specified. The required 'selector' is ambiguousโdoes it identify the element to drop or the drop target? There is no mention of pairing with browser_drag or post-condition behavior, making it incomplete for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of parameters with descriptions for 'selector' and '_agent_id'. The tool description itself adds no parameter-level meaning beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'ๆพไธ่ขซๆๆฝ็ๅ ็ด ' clearly states the action ('drop') and the resource ('the dragged element'), and it contrasts with sibling tool browser_drag. However, it lacks explicit scope or context about the drop target, so it stops short of a fully specified purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is implied: '่ขซๆๆฝ็ๅ ็ด ' (the dragged element) presupposes a prior drag operation, likely with browser_drag. However, there is no explicit guidance on when to use this tool vs. alternatives, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_evaluateC
ๅจ้กต้ขไธญๆง่ก JavaScript๏ผๅฝๆฐๅญ็ฌฆไธฒ๏ผ
| Name | Required | Description | Default |
|---|---|---|---|
| function | Yes | ่ฆๆง่ก็ JS ๅฝๆฐ/่กจ่พพๅผ | |
| _agent_id | No | ้็ฆป้ฎ๏ผๅไธ agent ็ๆๆ่ฐ็จไผ ็ธๅ็ๅผไปฅไฟๆๅ ถๆต่งๅจ๏ผไธๅ agent ไผ ไธๅ็ๅผไปฅ่ทๅ็ฌ็ซๆต่งๅจใ็็ฅๅๅ ฑไบซ้ป่ฎคๆต่งๅจใ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for disclosing safety and side effects. It fails to mention that executing JavaScript can modify the page, trigger network requests, cause navigation, or otherwise disrupt the browser state. The _agent_id isolation mechanism is also not mentioned in the description, leaving agents unaware of potential cross-agent contamination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence containing no wasted words. It is appropriately sized for a tool with a straightforward action, though the brevity comes at the cost of explanatory depth. Structure is fine; it's just minimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only two parameters, no output schema, and no annotations, the description must compensate by explaining return values, side effects, and the impact of _agent_id. It does none of this. For a JavaScript execution tool that can arbitrarily affect the page, the lack of behavioral context makes it incomplete for safe and effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers both parameters with descriptions (100% coverage), including the function string and _agent_id. The description adds no extra meaning beyond what the schema already provides; it merely repeats 'ๅฝๆฐๅญ็ฌฆไธฒ' from the function parameter. With full schema coverage, the baseline of 3 applies, and no additional semantic enrichment is present.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the verb 'ๆง่ก' (execute) with a clear resource 'JavaScript๏ผๅฝๆฐๅญ็ฌฆไธฒ๏ผ' in the page, which unambiguously states the tool's function. It distinguishes itself from sibling tools like browser_navigate or browser_click, but does not explicitly name alternatives or contrast with them, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as browser_click or browser_snapshot. It simply states what it does without any context for selection, making it a bare functionality disclosure with no implicit or explicit usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_file_uploadD
ไธไผ ๆไปถ
| Name | Required | Description | Default |
|---|---|---|---|
| paths | Yes | ่ฆไธไผ ็ๆไปถ่ทฏๅพ | |
| _agent_id | No | ้็ฆป้ฎ๏ผๅไธ agent ็ๆๆ่ฐ็จไผ ็ธๅ็ๅผไปฅไฟๆๅ ถๆต่งๅจ๏ผไธๅ agent ไผ ไธๅ็ๅผไปฅ่ทๅ็ฌ็ซๆต่งๅจใ็็ฅๅๅ ฑไบซ้ป่ฎคๆต่งๅจใ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description offers no behavioral details. It does not disclose whether the upload is synchronous, whether it waits for completion, supports multiple files (though the schema implies an array), or any side effects on the browser state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short phrase, but it is under-specified rather than concisely informative. It fails to convey anything beyond the tool's name, making the brevity a deficiency rather than a quality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description must carry the full burden of explaining the tool's behavior. It does not mention return values, error conditions, or the role of the '_agent_id' isolation key, leaving the agent without enough context to use the tool reliably.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both 'paths' and '_agent_id' having descriptive text. The tool description adds no value beyond the schema, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'ไธไผ ๆไปถ' translates to 'upload file', which is a direct restatement of the tool name 'browser_file_upload'. It provides no differentiation from other browser actions like browser_drop or browser_navigate, and lacks any detail about the browser context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives such as browser_drop. There is no mention of prerequisites like an active file input, page state, or how it fits into a browser automation flow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_get_urlC
่ทๅๅฝๅ้กต้ข URL
| Name | Required | Description | Default |
|---|---|---|---|
| _agent_id | No | ้็ฆป้ฎ๏ผๅไธ agent ็ๆๆ่ฐ็จไผ ็ธๅ็ๅผไปฅไฟๆๅ ถๆต่งๅจ๏ผไธๅ agent ไผ ไธๅ็ๅผไปฅ่ทๅ็ฌ็ซๆต่งๅจใ็็ฅๅๅ ฑไบซ้ป่ฎคๆต่งๅจใ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It only states the primary action and does not mention what happens if no page is open, whether the operation has side effects, or what the return format is. This leaves important behavioral aspects undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no unnecessary words. For a simple getter tool, this level of conciseness is appropriate and efficient. It earns full credit for clarity without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the rich schema description for the only parameter, the description is somewhat adequate. However, since there is no output schema, the description could have mentioned return values or edge-case behavior (e.g., empty string if no page). This missing context prevents a higher score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of the parameters, with the single _agent_id parameter having a clear description about isolation behavior. The tool description adds no additional parameter details, but per the baseline for high schema coverage, a score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description '่ทๅๅฝๅ้กต้ข URL' clearly states the specific action (get) and resource (current page URL). It is unambiguous and effectively communicates the tool's purpose, though it does not explicitly distinguish it from sibling tools. Since the tool name itself is already explicit, this description is sufficient.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of edge cases, prerequisites (like having a page loaded), or exclusions. The usage context is only implied by the tool's obvious purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_handle_dialogC
ๅค็ alert/confirm ๅผน็ช
| Name | Required | Description | Default |
|---|---|---|---|
| accept | Yes | ๆฅๅๆๆ็ป | |
| _agent_id | No | ้็ฆป้ฎ๏ผๅไธ agent ็ๆๆ่ฐ็จไผ ็ธๅ็ๅผไปฅไฟๆๅ ถๆต่งๅจ๏ผไธๅ agent ไผ ไธๅ็ๅผไปฅ่ทๅ็ฌ็ซๆต่งๅจใ็็ฅๅๅ ฑไบซ้ป่ฎคๆต่งๅจใ | |
| promptText | Yes | prompt ๅผน็ช็่พๅ ฅๆๆฌ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, but it offers none. It does not explain that 'accept' determines acceptance/dismissal, that promptText supplies input to prompt dialogs, or that a dialog must be open. The single generic verb 'handle' reveals nothing about side effects or requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short phrase, which is certainly concise and front-loaded. However, its brevity borders on under-specification rather than efficiency. The phrase contains no waste but also lacks substance needed for a standalone understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 3 parameters, no annotations, and no output schema. The description is minimal and fails to convey essential context such as what happens when a dialog is handled, whether it dismisses the dialog, or what the return behavior is. It is inadequate for an agent to invoke correctly without additional assumptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with each parameter having a description (accept: accept or reject; promptText: input text for prompt dialog; _agent_id: isolation key). The tool description adds no parameter meaning beyond schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'ๅค็ alert/confirm ๅผน็ช' uses a specific verb (handle) and resource (alert/confirm dialogs), clearly distinguishing it from sibling browser tools like click, type, and navigate. While 'handle' is somewhat generic, the resource is unambiguous and it is the only dialog-handling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It does not mention that it should be invoked when a dialog is present, nor does it specify any prerequisites or exclusions. The description is purely a purpose statement with no usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_hoverC
ๆฌๅๅจๅ ็ด ไธ
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | CSS ้ๆฉๅจ | |
| element | Yes | ๅ ็ด | |
| _agent_id | No | ้็ฆป้ฎ๏ผๅไธ agent ็ๆๆ่ฐ็จไผ ็ธๅ็ๅผไปฅไฟๆๅ ถๆต่งๅจ๏ผไธๅ agent ไผ ไธๅ็ๅผไปฅ่ทๅ็ฌ็ซๆต่งๅจใ็็ฅๅๅ ฑไบซ้ป่ฎคๆต่งๅจใ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only states 'hover' without detailing effects, whether it waits for actionability, failure behavior, or any side effects. This is insufficient for a tool with no prior context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short and free of fluff, which is efficient, but it does not provide any structured information or elaboration. It is concise to the point of being sparse, rather than optimally packaged.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simple action but the presence of many sibling tools and no output schema, the description is too minimal to be complete. It lacks guidance on usage context, behavioral expectations, and how it differs from similar actions, making it inadequate for fully informed tool selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides descriptions for all three parameters (ref, element, _agent_id), including a detailed explanation for _agent_id. The tool description adds no extra meaning beyond this, so a baseline score of 3 is appropriate given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'ๆฌๅๅจๅ ็ด ไธ' clearly states the action (hover) and the target (element), making the tool's purpose immediately understandable. It distinguishes from siblings like browser_click by the specific verb, though it lacks additional scope or context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as browser_click or browser_drag. There is no mention of prerequisites, typical scenarios, or exclusions, leaving the agent without decision-making support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_network_requestsC
่ทๅ็ฝ็ป่ฏทๆฑๆดปๅจ
| Name | Required | Description | Default |
|---|---|---|---|
| _agent_id | No | ้็ฆป้ฎ๏ผๅไธ agent ็ๆๆ่ฐ็จไผ ็ธๅ็ๅผไปฅไฟๆๅ ถๆต่งๅจ๏ผไธๅ agent ไผ ไธๅ็ๅผไปฅ่ทๅ็ฌ็ซๆต่งๅจใ็็ฅๅๅ ฑไบซ้ป่ฎคๆต่งๅจใ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits, but it does not. It fails to state whether network requests are returned in a list, cleared after retrieval, or how the isolation key (via _agent_id) affects behavior. No side effects or return structure are mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short, but this is under-specification rather than effective conciseness. It omits essential details, making it insufficiently informative even though it is brief.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, and the description does not explain what the tool returns or how network request activity is presented. For a simple tool, it still leaves major gaps in agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter _agent_id, which is fully documented in the schema. The description itself adds no additional parameter context, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description '่ทๅ็ฝ็ป่ฏทๆฑๆดปๅจ' (get network request activity) provides a verb and resource, clearly indicating the tool fetches network request-related data. However, it lacks specificity about scope (e.g., all requests, filtered) and does not differentiate from sibling tools like browser_console_messages or browser_snapshot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives. The description does not mention prerequisites, context, or exclusions, leaving the agent without direction on selecting it among the many browser inspection tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_press_keyC
ๆไธ้ฎ็ๆ้ฎ
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ้ฎๅ๏ผๅฆ Enter | |
| _agent_id | No | ้็ฆป้ฎ๏ผๅไธ agent ็ๆๆ่ฐ็จไผ ็ธๅ็ๅผไปฅไฟๆๅ ถๆต่งๅจ๏ผไธๅ agent ไผ ไธๅ็ๅผไปฅ่ทๅ็ฌ็ซๆต่งๅจใ็็ฅๅๅ ฑไบซ้ป่ฎคๆต่งๅจใ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden of disclosing behavior. It only states 'press keyboard key' with no information about focus requirements, key combinations, side effects, or what happens after the key is pressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise phrase with no redundancy or filler. It is appropriately sized for a simple tool, front-loading the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and only 2 parameters, the description is incomplete. It lacks behavioral context, usage conditions, and any explanation of the effect of pressing a key, which an agent would need to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both 'key' and '_agent_id' described in the input schema. The description adds no parameter-level meaning beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'ๆไธ้ฎ็ๆ้ฎ' (press keyboard key) clearly states the tool's action with a specific verb and resource. It is distinct from mouse-based siblings like browser_click, though it does not explicitly differentiate from browser_type (which types text).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidance is provided. The description does not indicate when to use this tool versus alternatives like browser_type or browser_click, nor any prerequisites or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_resizeC
่ฐๆดๆต่งๅจ็ชๅฃๅคงๅฐ
| Name | Required | Description | Default |
|---|---|---|---|
| width | Yes | ๅฎฝๅบฆ | |
| height | Yes | ้ซๅบฆ | |
| _agent_id | No | ้็ฆป้ฎ๏ผๅไธ agent ็ๆๆ่ฐ็จไผ ็ธๅ็ๅผไปฅไฟๆๅ ถๆต่งๅจ๏ผไธๅ agent ไผ ไธๅ็ๅผไปฅ่ทๅ็ฌ็ซๆต่งๅจใ็็ฅๅๅ ฑไบซ้ป่ฎคๆต่งๅจใ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only states 'resize browser window size' with no information about side effects (e.g., affecting subsequent screenshots or responsive layout), prerequisites (e.g., browser must be open), or error handling. The description adds no behavioral context beyond the operation itself.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no redundant or unnecessary information. It is appropriately sized for a straightforward resize operation, front-loaded with the essential meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description should provide more context about how resizing affects the browser session, when to use it, and any limitations. It currently only states the action, leaving the agent without enough information to fully understand the tool's role in the browser workflow. The schema descriptions help for parameters but not for the tool's broader context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with each parameter having a Chinese description (width, height, and a detailed explanation of _agent_id). The description itself does not add any additional meaning beyond what the schema already provides, so it meets the baseline but does not exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description '่ฐๆดๆต่งๅจ็ชๅฃๅคงๅฐ' clearly states the action (resize) and resource (browser window size). It distinguishes from sibling browser tools like navigate, click, and type, which perform different actions. However, it is essentially a restatement of the tool name with minimal additional detail, so it lacks the specificity of higher-scoring descriptions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. The description does not mention any context such as resizing before taking a screenshot or how it interacts with other browser tools. No exclusions or alternative tool recommendations are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_screenshotC
ๆชๅพ๏ผๅซๅ๏ผ
| Name | Required | Description | Default |
|---|---|---|---|
| fullPage | Yes | ๆฏๅฆๆด้กตๆชๅพ๏ผ้ป่ฎค false๏ผ | |
| _agent_id | No | ้็ฆป้ฎ๏ผๅไธ agent ็ๆๆ่ฐ็จไผ ็ธๅ็ๅผไปฅไฟๆๅ ถๆต่งๅจ๏ผไธๅ agent ไผ ไธๅ็ๅผไปฅ่ทๅ็ฌ็ซๆต่งๅจใ็็ฅๅๅ ฑไบซ้ป่ฎคๆต่งๅจใ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosure. It only says 'alias' and gives no information about what the tool does beyond the name, any side effects, return values, or limitations. This is essentially no behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short, which could be considered concise, but it is under-specified rather than efficient. It leaves out essential information about the tool's purpose and usage, so it does not earn its place as a useful description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the tool's relative simplicity, the description is inadequate. It fails to clarify the alias relationship, specify return behavior, or provide any context about when to use it relative to the many sibling browser tools. The name and schema alone are not enough for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and both parameters (fullPage and _agent_id) have meaningful descriptions in the schema. The description adds no additional parameter semantics, but per the baseline for high schema coverage, a score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'ๆชๅพ๏ผๅซๅ๏ผ' means 'Screenshot (alias)', which identifies the tool's basic function (taking a screenshot) but adds only an ambiguous alias qualifier. It does not distinguish this tool from sibling tools like browser_take_screenshot or browser_snapshot, and the alias target is unnamed, leaving the purpose somewhat vague.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. The 'alias' label hints that it may be an alternative name for another screenshot tool, but it never explicitly states which tool it aliases or when to prefer it, so the agent receives no actionable usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_select_optionC
ๅจไธๆๆกไธญ้ๆฉ้้กน
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | CSS ้ๆฉๅจ | |
| values | Yes | ่ฆ้ไธญ็ๅผ | |
| element | Yes | ๅ ็ด | |
| _agent_id | No | ้็ฆป้ฎ๏ผๅไธ agent ็ๆๆ่ฐ็จไผ ็ธๅ็ๅผไปฅไฟๆๅ ถๆต่งๅจ๏ผไธๅ agent ไผ ไธๅ็ๅผไปฅ่ทๅ็ฌ็ซๆต่งๅจใ็็ฅๅๅ ฑไบซ้ป่ฎคๆต่งๅจใ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states 'select an option in a dropdown,' which conveys the purpose but reveals nothing about side effects, return values, error handling, or whether the selection triggers events. There is zero additional behavioral context beyond the tool's name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, straightforward sentence with no redundant words. It is front-loaded with the core action and resource. However, it is under-specified in content, which slightly detracts from its value, but from a pure conciseness standpoint, it earns a high score for avoiding fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This tool has no output schema and no annotations, and the description is extremely sparse. It fails to explain how to identify which dropdown to use, how the 'values' array works, whether multi-select is supported, or what happens after selection. Given the tool's complexity (4 parameters, browser-side effects), the description is grossly inadequate for an agent to use it correctly without additional inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (element, ref, values, _agent_id) are documented in the input schema. The description adds no parameter-specific meaning, but per the rubric, high schema coverage warrants a baseline of 3. The description does not compensate or enhance parameter understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'ๅจไธๆๆกไธญ้ๆฉ้้กน' clearly states the action (select) and the target resource (dropdown box). It is specific enough to understand the tool's basic purpose and distinguishes itself from siblings like browser_click or browser_type by focusing on dropdown selection. However, it doesn't explicitly contrast with sibling tools or mention alternative approaches, so it falls short of a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention conditions for use, prerequisites, or situations where this tool is preferred over other browser interaction tools. There is no explicit or implicit usage guidance beyond the bare action itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_snapshotB
่ทๅ้กต้ขๅฏ่ฎฟ้ฎๆงๅฟซ็ ง๏ผ็ปๆๅ๏ผ้ๅ LLM ้ ่ฏป๏ผ
| Name | Required | Description | Default |
|---|---|---|---|
| _agent_id | No | ้็ฆป้ฎ๏ผๅไธ agent ็ๆๆ่ฐ็จไผ ็ธๅ็ๅผไปฅไฟๆๅ ถๆต่งๅจ๏ผไธๅ agent ไผ ไธๅ็ๅผไปฅ่ทๅ็ฌ็ซๆต่งๅจใ็็ฅๅๅ ฑไบซ้ป่ฎคๆต่งๅจใ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the snapshot is structured and LLM-friendly, without covering potential side effects, permissions, or the exact return format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that immediately conveys the tool's purpose and output nature. It is front-loaded and contains no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description is too minimal. It does not explain what 'accessibility snapshot' precisely includes, when it should be used, or any behavioral details, leaving the agent under-informed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage for the single optional _agent_id parameter, so the baseline is 3. The description adds no additional semantic detail beyond what the schema documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a page accessibility snapshot and emphasizes it is structured and suitable for LLM reading. This distinguishes it from sibling tools like screenshots or console messages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives like browser_take_screenshot or browser_console_messages. It lacks any when-to-use or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_tabsC
็ฎก็ๆ ็ญพ้กต๏ผaction: list|new|close|select๏ผ
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | ๆ ็ญพ้กต็ดขๅผ | |
| action | Yes | list|new|close|select | |
| _agent_id | No | ้็ฆป้ฎ๏ผๅไธ agent ็ๆๆ่ฐ็จไผ ็ธๅ็ๅผไปฅไฟๆๅ ถๆต่งๅจ๏ผไธๅ agent ไผ ไธๅ็ๅผไปฅ่ทๅ็ฌ็ซๆต่งๅจใ็็ฅๅๅ ฑไบซ้ป่ฎคๆต่งๅจใ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the full burden. It only repeats the action enum from the schema and does not disclose side effects (e.g., what closing a tab does, whether selecting is required before interacting, or how _agent_id isolates browser sessions).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, but it is under-specified rather than efficiently complete. It is concise but sacrifices essential behavioral context for a multi-action tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and three parameters involving multiple action modes and a session isolation key, the description is insufficient. It does not explain return values, per-action index requirements, or the effect of _agent_id.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters action, index, and _agent_id are already documented in the schema. The description adds no additional meaning; it merely restates the action values already present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource (tabs) and the operation (manage) while enumerating the four actions list/new/close/select. This distinguishes it from sibling tools like browser_navigate or browser_click, though the verb 'manage' is somewhat generic.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives such as browser_navigate, browser_close, or browser_get_url. The action list implies basic usage, but there is no explicit context, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_take_screenshotC
ๆชๅพ๏ผ้ป่ฎค fullPage=false๏ผ
| Name | Required | Description | Default |
|---|---|---|---|
| fullPage | Yes | ๆฏๅฆๆด้กตๆชๅพ๏ผ้ป่ฎค false๏ผ | |
| _agent_id | No | ้็ฆป้ฎ๏ผๅไธ agent ็ๆๆ่ฐ็จไผ ็ธๅ็ๅผไปฅไฟๆๅ ถๆต่งๅจ๏ผไธๅ agent ไผ ไธๅ็ๅผไปฅ่ทๅ็ฌ็ซๆต่งๅจใ็็ฅๅๅ ฑไบซ้ป่ฎคๆต่งๅจใ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full weight for disclosing behaviors. It only mentions the default of fullPage, which is already in the schema. It does not disclose output format, whether it saves a file, return value, or any side effects, leaving significant behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with zero wasted words. It is front-loaded and appropriately brief for a simple tool, though it repeats schema information rather than adding new value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description should explain the tool's return value and context of use. It only states the default fullPage setting, leaving critical information missing for a screenshot tool that likely returns an image or path. It also fails to clarify distinction from sibling 'browser_screenshot'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, providing full parameter details. The description's mention of '้ป่ฎค fullPage=false' just repeats the schema's own description, adding no additional meaning. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs a screenshot ('ๆชๅพ') and notes the default fullPage behavior. However, it does not differentiate from the sibling tool 'browser_screenshot', so it lacks explicit sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'browser_screenshot' or other browser tools. There is no mention of context, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_typeC
ๅๅ ็ด ่พๅ ฅๆๆฌ
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | CSS ้ๆฉๅจ | |
| text | Yes | ่ฆ่พๅ ฅ็ๆๆฌ | |
| submit | Yes | ่พๅ ฅๅๆๅ่ฝฆ | |
| element | Yes | ๅ ็ด | |
| _agent_id | No | ้็ฆป้ฎ๏ผๅไธ agent ็ๆๆ่ฐ็จไผ ็ธๅ็ๅผไปฅไฟๆๅ ถๆต่งๅจ๏ผไธๅ agent ไผ ไธๅ็ๅผไปฅ่ทๅ็ฌ็ซๆต่งๅจใ็็ฅๅๅ ฑไบซ้ป่ฎคๆต่งๅจใ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral disclosure burden. It only says 'input text' and does not mention whether the field is cleared first, whether it focuses the element, how the submit parameter behaves, or any other side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no filler or repetition. It is efficient, though it lacks structured detail beyond the bare action statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 parameters and no output schema or annotations, the one-line description is insufficient. It does not clarify behavior, return values, or how the two element-related parameters are intended to be used, leaving significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds no parameter-level meaning and notably leaves the relationship between 'element' and 'ref' unexplained, but the schema already documents each parameter's basic purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('่พๅ ฅๆๆฌ' / input text) and the target ('ๅ ็ด ' / element), giving a specific verb+resource pair. However, it does not distinguish itself from sibling tools like browser_press_key or browser_click, so it misses some differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as browser_press_key, browser_file_upload, or browser_click. There are no exclusions or context clues about the preferred use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_wait_forD
็ญๅพ ๆกไปถ
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ็ญๅพ ๆๆฌๅบ็ฐ | |
| time | Yes | ็ญๅพ ๆฏซ็งๆฐ | |
| textGone | Yes | ็ญๅพ ๆๆฌๆถๅคฑ | |
| _agent_id | No | ้็ฆป้ฎ๏ผๅไธ agent ็ๆๆ่ฐ็จไผ ็ธๅ็ๅผไปฅไฟๆๅ ถๆต่งๅจ๏ผไธๅ agent ไผ ไธๅ็ๅผไปฅ่ทๅ็ฌ็ซๆต่งๅจใ็็ฅๅๅ ฑไบซ้ป่ฎคๆต่งๅจใ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavior disclosure. It offers no information about waiting semantics, timeouts, polling behavior, or what happens when conditions are not met. The schema parameter descriptions hint at 'wait for text to appear/disappear' but the description itself adds nothing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is under-specified rather than concise. '็ญๅพ ๆกไปถ' is two characters that convey no actionable information, and the structure is a bare phrase rather than a clear explanatory sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 4 parameters, no output schema, and no annotations. The description fails to explain return values, error handling, or the waiting mechanism. It is inadequate for an agent to select and invoke this tool correctly, especially given sibling tools that require similar context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description itself provides no parameter information, but the schema descriptions for 'text', 'textGone', and 'time' are present. However, the relationship between these parameters (e.g., time as a timeout vs. fixed wait) is not clarified by the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description '็ญๅพ ๆกไปถ' is a vague noun phrase meaning 'wait condition' and does not state the tool's action or resource. It is essentially a restatement of the tool name 'browser_wait_for', providing no distinction from sibling browser tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidance is provided. The description does not indicate when to use this tool versus alternatives like browser_click or browser_navigate, nor does it mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pool_statusA
ๆฅ็ๆต่งๅจๆฑ ็ถๆ๏ผๆ agent๏ผ
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates a read-only operation via the verb 'view', but beyond that, it provides no additional behavioral contextโno mention of output contents, side effects, or limitations. Since there are no annotations, the description carries the full burden but only delivers the bare minimum.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short phrase that is entirely front-loaded and contains no filler words, scoring high on conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple status tool with no parameters and no output schema, the description is minimal but adequate for basic understanding; however, it doesn't specify what status information is returned or how it is presented, leaving some ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, giving a baseline score of 4. The description adds context about 'by agent' which hints at the scope of the result, but since there are no parameters, there is nothing more to explain.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'ๆฅ็' (view) with clear resource 'ๆต่งๅจๆฑ ็ถๆ' (browser pool status) and scope 'ๆ agent' (by agent), which clearly distinguishes it from the sibling pool_test tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives; there is no mention of specific scenarios, prerequisites, or comparisons with pool_test or other browser tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pool_testD
ๆต่ฏๅผๆญฅๅๅบ
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It merely says 'test async response' with no information about side effects, return value, errors, or whether it is safe. This is essentially no transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short and front-loaded, but it is under-specified rather than concise. It contains only a vague phrase with no structured information, so it does not earn its place as a useful specification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this tool has one parameter, no output schema, no annotations, and sits among complex browser automation tools, the description is completely inadequate. It provides almost no contextual information about what the tool does, when to use it, or what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention or explain the 'message' parameter. Although the param is named intuitively, the tool description offers no guidance on what to pass or expected format, so it fails to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'ๆต่ฏๅผๆญฅๅๅบ' translates to 'test asynchronous response,' which names a verb and object but remains vague about what the tool actually does. It does not clearly distinguish itself from the sibling browser automation tools, though its purpose is not a tautology.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There is no context about typical scenarios, prerequisites, or exclusions, leaving the agent without useful selection criteria.
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.
25 tool updates
v1.1.0- First observed
browser_click - First observed
browser_close - First observed
browser_console_messages - First observed
browser_drag - First observed
browser_drop - First observed
browser_evaluate - First observed
browser_file_upload - First observed
browser_get_url - First observed
browser_handle_dialog - First observed
browser_hover - First observed
browser_navigate - First observed
browser_navigate_back - First observed
browser_navigate_forward - First observed
browser_network_requests - First observed
browser_press_key - First observed
browser_resize - First observed
browser_screenshot - First observed
browser_select_option - First observed
browser_snapshot - First observed
browser_tabs - First observed
browser_take_screenshot - First observed
browser_type - First observed
browser_wait_for - First observed
pool_status - First observed
pool_test
TDQS
Scored across 25 tools
Most tools have distinct purposes, but browser_take_screenshot and browser_screenshot are explicit aliases, causing ambiguity. Additionally, browser_drag and browser_drop could be confused as both relate to drag-and-drop operations.
The majority of tools follow a browser_verb pattern (e.g., browser_navigate, browser_click), but there are exceptions like browser_snapshot, browser_console_messages, and browser_network_requests which use nouns. The pair browser_take_screenshot and browser_screenshot also breaks consistency.
At 25 tools, the server is on the heavy side but still plausible for a comprehensive browser automation tool. However, the presence of a duplicate screenshot tool and a test tool (pool_test) suggests some redundancy.
The tool set covers a wide range of browser actions: navigation, interaction, screenshots, snapshots, tab management, dialog handling, file upload, and more. Minor gaps exist (e.g., no explicit cookie management or scrolling) but core workflows are well covered.
Maintenance
Related MCP Connectors
MCP server for building and testing AI agents with multi-model experimentation and insights.
- TabfleetOAuthcom.tabfleet
Launch, inspect, control, and share isolated cloud browsers for your agents.
Hosted MCP catalog with 30 tenant-isolated browser, RAG, AI, mail and media tools.
A paid remote MCP for AI agent browser MCP session, built to return verdicts, receipts, usage logs,
Related MCP Servers
- FlicenseCqualityDmaintenanceA dynamic browser pool MCP server that enables multiple concurrent, isolated Playwright sessions for Claude Code and other MCP clients. It manages on-demand instances on dynamic ports to resolve session conflicts and includes automatic cleanup of idle browsers.201-
- AlicenseNot gradedqualityCmaintenanceMCP server providing browser automation for AI agents with context-aware playbooks and skills for complex websites.7 npm176PolyForm Noncommercial 1.0.0

@meshbrow/mcp-serverofficial
AlicenseNot gradedqualityBmaintenanceMCP server for Meshbrow that gives AI agents full browser automation capabilities with stealth anti-detection, enabling natural language control of browser sessions, data extraction, and multi-browser fleets.MIT- AlicenseBqualityDmaintenanceEnables AI agents to control multiple independent browser instances in parallel with process-level isolation, supporting any backend MCP server for browser automation.271,020 npm17MIT