Skip to main content
Glama
sailaoda

Concurrent Browser MCP

by sailaoda

concurrent-browser-mcp

A multi-concurrent browser MCP (Model Context Protocol) server built with Playwright.

δΈ­ζ–‡ | English

Features

  • πŸš€ Multi-Instance Concurrency: Support running multiple browser instances simultaneously

  • 🎯 Instance Management: Dynamically create, manage, and clean up browser instances

  • πŸ”§ Flexible Configuration: Support various browser types and custom configurations

  • πŸ›‘οΈ Resource Management: Automatically clean up timed-out instances to prevent resource leaks

  • 🌐 Full Feature Support: Complete browser automation capabilities (navigation, clicking, input, screenshots, etc.)

  • πŸ’» Cross-Platform: Support Chromium, Firefox, WebKit

Related MCP server: Better Browser MCP

Installation

# Global installation
npm install -g concurrent-browser-mcp

# Or use npx directly (no installation required)
npx concurrent-browser-mcp

Option 2: Build from Source

# Clone repository
git clone https://github.com/sailaoda/concurrent-browser-mcp.git
cd concurrent-browser-mcp

# Install dependencies
npm install

# Build project
npm run build

# Optional: Global link (for local development)
npm link

Option 3: Quick Install Script

git clone https://github.com/sailaoda/concurrent-browser-mcp.git
cd concurrent-browser-mcp
./install.sh

Quick Start

1. Basic Usage

# Start server (default configuration)
npx concurrent-browser-mcp

# Custom configuration
npx concurrent-browser-mcp --max-instances 25 --browser firefox --headless false

2. MCP Client Configuration

Choose the appropriate configuration based on your installation method:

Using npm global installation or npx

{
  "mcpServers": {
    "concurrent-browser": {
      "command": "npx",
      "args": ["concurrent-browser-mcp", "--max-instances", "20"]
    }
  }
}

Using global installation version

{
  "mcpServers": {
    "concurrent-browser": {
      "command": "concurrent-browser-mcp",
      "args": ["--max-instances", "20"]
    }
  }
}

Using local build version

If you built from source, you can reference the local build version directly:

{
  "mcpServers": {
    "concurrent-browser": {
      "command": "node",
      "args": ["/path/to/concurrent-browser-mcp/dist/index.js", "--max-instances", "20"],
      "cwd": "/path/to/concurrent-browser-mcp"
    }
  }
}

Or use relative path (if config file and project are in the same directory level):

{
  "mcpServers": {
    "concurrent-browser": {
      "command": "node",
      "args": ["./concurrent-browser-mcp/dist/index.js", "--max-instances", "20"]
    }
  }
}

If you used npm link:

{
  "mcpServers": {
    "concurrent-browser": {
      "command": "concurrent-browser-mcp",
      "args": ["--max-instances", "20"]
    }
  }
}

Command Line Options

Option

Description

Default

-m, --max-instances <number>

Maximum number of instances

20

-t, --instance-timeout <number>

Instance timeout in minutes

30

-c, --cleanup-interval <number>

Cleanup interval in minutes

5

--browser <browser>

Default browser type (chromium/firefox/webkit)

chromium

--headless

Default headless mode

true

--width <number>

Default viewport width

1280

--height <number>

Default viewport height

720

--user-agent <string>

Default user agent

-

--proxy <string>

Proxy server address (e.g., http://127.0.0.1:7890)

-

--no-proxy-auto-detect

Disable automatic proxy detection

false

--ignore-https-errors

Ignore HTTPS errors

false

--bypass-csp

Bypass CSP

false

Proxy Configuration

concurrent-browser-mcp supports flexible proxy configuration to help you use browser automation features in network environments that require proxies.

Proxy Configuration Methods

1. Specify Proxy via Command Line

# Use specified proxy server
npx concurrent-browser-mcp --proxy http://127.0.0.1:7890

2. Automatic Local Proxy Detection (Enabled by Default)

The system automatically detects proxies in the following order:

  • Environment Variables: HTTP_PROXY, HTTPS_PROXY, ALL_PROXY

  • Common Proxy Ports: 7890, 1087, 8080, 3128, 8888, 10809, 20171

  • System Proxy Settings (macOS): Automatically reads system network settings

# Auto-detection enabled by default (no additional parameters needed)
npx concurrent-browser-mcp

# Explicitly disable auto-detection
npx concurrent-browser-mcp --no-proxy-auto-detect

3. Proxy Settings in MCP Configuration File

Using specified proxy:

{
  "mcpServers": {
    "concurrent-browser": {
      "command": "npx",
      "args": ["concurrent-browser-mcp", "--proxy", "http://127.0.0.1:7890"]
    }
  }
}

Disable proxy:

{
  "mcpServers": {
    "concurrent-browser": {
      "command": "npx", 
      "args": ["concurrent-browser-mcp", "--no-proxy-auto-detect"]
    }
  }
}

Proxy Detection Logs

The proxy detection results will be displayed at startup:

πŸš€ Starting Concurrent Browser MCP Server...
Max instances: 20
Default browser: chromium
Headless mode: yes
Viewport size: 1280x720
Instance timeout: 30 minutes
Cleanup interval: 5 minutes
Proxy: Auto-detection enabled  # or shows detected proxy address

Supported Proxy Types

  • HTTP proxy: http://proxy-server:port

  • HTTPS proxy: https://proxy-server:port

  • SOCKS5 proxy: socks5://proxy-server:port

Notes

  • Proxy configuration applies to all created browser instances

  • Authentication with username/password is not supported

  • Proxy can be set via environment variables without manual configuration

  • Proxy detection is completed automatically at service startup without affecting runtime performance

Available Tools

Tool Classification

Instance Management

  • browser_create_instance: Create a new browser instance

  • browser_list_instances: List all instances

  • browser_close_instance: Close a specific instance

  • browser_close_all_instances: Close all instances

Page Navigation

  • browser_navigate: Navigate to a specified URL

  • browser_go_back: Go back to previous page

  • browser_go_forward: Go forward to next page

  • browser_refresh: Refresh current page

Page Interaction

  • browser_click: Click on page elements

  • browser_type: Type text content

  • browser_fill: Fill form fields

  • browser_select_option: Select dropdown options

Page Information

  • browser_get_page_info: Get detailed page information including full HTML content, page statistics, and metadata

  • browser_get_element_text: Get element text

  • browser_get_element_attribute: Get element attributes

  • browser_screenshot: Take page screenshots

  • browser_get_markdown: πŸ†• Get Markdown content

Wait Operations

  • browser_wait_for_element: Wait for element to appear

  • browser_wait_for_navigation: Wait for page navigation to complete

JavaScript Execution

  • browser_evaluate: Execute JavaScript code

Usage Examples

1. Create Browser Instance

// Create a new Chrome instance
await callTool('browser_create_instance', {
  browserType: 'chromium',
  headless: false,
  viewport: { width: 1920, height: 1080 },
  metadata: {
    name: 'main-browser',
    description: 'Main browser instance'
  }
});

2. Navigation and Interaction

// Navigate to website
await callTool('browser_navigate', {
  instanceId: 'your-instance-id',
  url: 'https://example.com'
});

// Click element
await callTool('browser_click', {
  instanceId: 'your-instance-id',
  selector: 'button.submit'
});

// Input text
await callTool('browser_type', {
  instanceId: 'your-instance-id',
  selector: 'input[name="search"]',
  text: 'search query'
});

3. Get Page Information

// Take screenshot
await callTool('browser_screenshot', {
  instanceId: 'your-instance-id',
  fullPage: true
});

// Get page information
await callTool('browser_get_page_info', {
  instanceId: 'your-instance-id'
});

4. Concurrent Operations

// Create multiple instances for parallel processing
const instances = await Promise.all([
  callTool('browser_create_instance', { metadata: { name: 'worker-1' } }),
  callTool('browser_create_instance', { metadata: { name: 'worker-2' } }),
  callTool('browser_create_instance', { metadata: { name: 'worker-3' } })
]);

// Navigate to different pages in parallel
await Promise.all(instances.map(async (instance, index) => {
  await callTool('browser_navigate', {
    instanceId: instance.data.instanceId,
    url: `https://example${index + 1}.com`
  });
}));

Architecture Design

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                         MCP Client                              β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                    Concurrent Browser MCP Server                β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚  Browser Tools  β”‚  β”‚ Browser Manager β”‚  β”‚  MCP Server     β”‚  β”‚
β”‚  β”‚                 β”‚  β”‚                 β”‚  β”‚                 β”‚  β”‚
β”‚  β”‚ - Tool Defs     β”‚  β”‚ - Instance Mgmt β”‚  β”‚ - Request       β”‚  β”‚
β”‚  β”‚ - Execution     β”‚  β”‚ - Lifecycle     β”‚  β”‚   Handling      β”‚  β”‚
β”‚  β”‚ - Validation    β”‚  β”‚ - Cleanup       β”‚  β”‚ - Error Mgmt    β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                        Playwright                              β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚   Browser 1     β”‚  β”‚   Browser 2     β”‚  β”‚   Browser N     β”‚  β”‚
β”‚  β”‚   (Chromium)    β”‚  β”‚   (Firefox)     β”‚  β”‚   (WebKit)      β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Real Functionality Testing

In addition to simulation demo scripts, we also provide real browser functionality test scripts that let you see actual screenshot results:

πŸ§ͺ Run Real Tests

# Run real browser screenshot test
node test-real-screenshot.js

This test script will:

  1. Start real browser: Using Chromium engine

  2. Visit websites: Navigate to example.com and github.com

  3. Save screenshots: Generate real PNG screenshot files

  4. File output: Generate screenshot files in current directory

πŸ“Έ Test Output Example

πŸš€ Starting real browser screenshot test...
βœ… Browser started
βœ… Page created
🌐 Navigating to https://example.com...
βœ… Page loaded successfully
πŸ“Έ Taking screenshot and saving as screenshot-2025-07-19T11-04-18-660Z.png...
βœ… Screenshot saved: screenshot-2025-07-19T11-04-18-660Z.png
πŸ“Š File size: 23.57 KB
πŸ“‚ File location: /path/to/screenshot-2025-07-19T11-04-18-660Z.png
🌐 Visiting https://github.com...
βœ… github screenshot saved: screenshot-github-2025-07-19T11-04-18-660Z.png (265.99 KB)
πŸ›‘ Browser closed

πŸ–ΌοΈ View Screenshot Files

After testing, you can find actual screenshot files in the project directory:

# View generated screenshot files
ls -la screenshot-*.png

# Open in system default image viewer
open screenshot-*.png    # macOS
start screenshot-*.png   # Windows
xdg-open screenshot-*.png # Linux

Differences from Traditional MCP Browser Servers

Feature

Traditional MCP Browser Server

Concurrent Browser MCP

Instance Management

Single instance

Multi-instance concurrency

Resource Isolation

None

Complete isolation

Concurrent Processing

Serial

Parallel

Instance Lifecycle

Manual management

Automatic management

Resource Cleanup

Manual

Automatic

Scalability

Limited

Highly scalable

Development Guide

Local Development Environment Setup

# 1. Clone project
git clone https://github.com/sailaoda/concurrent-browser-mcp.git
cd concurrent-browser-mcp

# 2. Install dependencies
npm install

# 3. Build project
npm run build

# 4. Local link (optional, for global command testing)
npm link

Available npm Scripts

# Build TypeScript project
npm run build

# Development mode (file watching)
npm run dev

# Run code linting
npm run lint

# Fix code formatting issues
npm run lint:fix

# Clean build artifacts
npm run clean

# Run tests
npm test

Project Structure

concurrent-browser-mcp/
β”œβ”€β”€ src/                    # Source code directory
β”‚   β”œβ”€β”€ index.ts           # CLI entry point
β”‚   β”œβ”€β”€ server.ts          # MCP server main logic
β”‚   β”œβ”€β”€ browser-manager.ts # Browser instance manager
β”‚   └── tools.ts           # MCP tool definitions and implementation
β”œβ”€β”€ dist/                  # Build artifacts directory
β”œβ”€β”€ assets/                # Static resources directory
β”œβ”€β”€ examples/              # Example scripts
β”œβ”€β”€ test-real-screenshot.js # Real test script
β”œβ”€β”€ config.example.json    # Configuration example
β”œβ”€β”€ package.json           # Project configuration
β”œβ”€β”€ tsconfig.json         # TypeScript configuration
└── README.md             # Project documentation

Using Local Build Version

After building, you can use the local version in several ways:

Option 1: Run build files directly

# Run built files
node dist/index.js --max-instances 20

# Use absolute path in MCP configuration
{
  "mcpServers": {
    "concurrent-browser": {
      "command": "node",
      "args": ["/absolute/path/to/concurrent-browser-mcp/dist/index.js", "--max-instances", "20"]
    }
  }
}
# Execute link in project root directory
npm link

# Now you can use it like a global package
concurrent-browser-mcp --max-instances 20

# Use in MCP configuration
{
  "mcpServers": {
    "concurrent-browser": {
      "command": "concurrent-browser-mcp",
      "args": ["--max-instances", "20"]
    }
  }
}

Option 3: Use in project directory

# Run directly in project directory
cd /path/to/concurrent-browser-mcp
npm run build
node dist/index.js

# MCP configuration using relative path
{
  "mcpServers": {
    "concurrent-browser": {
      "command": "node",
      "args": ["./concurrent-browser-mcp/dist/index.js"],
      "cwd": "/parent/directory/path"
    }
  }
}

Testing and Debugging

# Run real browser tests
node test-real-screenshot.js

# Run simulated MCP call tests
node examples/demo.js

# Start development server (with debug output)
node dist/index.js --max-instances 5 --browser chromium --headless false

Contributing Guidelines

  1. Fork this project

  2. Create feature branch (git checkout -b feature/amazing-feature)

  3. Commit changes (git commit -m 'Add some amazing feature')

  4. Push to branch (git push origin feature/amazing-feature)

  5. Open Pull Request

Available Tools

20 tools
browser_clickC

Click on a page element

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceIdYesInstance ID
selectorYesElement selector
buttonNoMouse buttonleft
clickCountNoNumber of clicks
delayNoClick delay in milliseconds
timeoutNoTimeout in milliseconds

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but offers minimal behavioral insight. It states the basic action but doesn't disclose critical traits like error handling (what happens if selector fails), side effects (page navigation after click), or performance considerations (timeout behavior). This leaves significant gaps 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.

Conciseness5/5

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

The description is extremely concise at just four words, front-loading the core action without any wasted text. Every word earns its place by communicating the essential purpose efficiently.

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

Completeness2/5

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

For a mutation tool with 6 parameters, no annotations, and no output schema, the description is inadequate. It lacks information about behavioral outcomes, error conditions, and relationship to the browser instance lifecycle, leaving too much undefined for reliable agent use.

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

Parameters3/5

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

Schema description coverage is 100%, providing complete parameter documentation. The description adds no additional parameter semantics beyond implying a 'click' action, which aligns with but doesn't enhance the schema. This meets the baseline for high schema coverage.

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 'Click on a page element' clearly states the action (click) and target (page element), which is specific and unambiguous. However, it doesn't differentiate from potential sibling actions like 'right-click' or 'double-click' that might be implied by parameters but aren't explicitly mentioned in the description itself.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. There's no mention of prerequisites (e.g., needing an active browser instance), when not to use it, or how it relates to sibling tools like browser_wait_for_element or browser_select_option for similar interactive scenarios.

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

browser_close_all_instancesB

Close all browser instances

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the action without behavioral details. It doesn't disclose whether this closes tabs, windows, or processes; whether it's reversible; what happens to unsaved data; or if it requires specific permissions. 'Close all' suggests a destructive operation, but this isn't 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, direct sentence with no wasted words. It's front-loaded with the core action and target, making it immediately scannable and efficient. Every word earns its place.

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

Completeness2/5

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

For a destructive tool with no annotations and no output schema, the description is insufficient. It doesn't explain what 'browser instances' means, what gets closed, whether there are confirmation prompts, what the return value is, or error conditions. Given the potential impact, more context is needed.

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 0 parameters with 100% schema description coverage, so no parameter documentation is needed. The description correctly doesn't discuss parameters, maintaining focus on the tool's purpose. Baseline 4 is appropriate for zero-parameter tools.

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 ('Close') and target ('all browser instances'), making the purpose immediately understandable. It distinguishes from sibling 'browser_close_instance' by specifying 'all' instances. However, it doesn't specify what 'browser instances' refers to in this context (e.g., tabs, windows, processes).

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives like 'browser_close_instance' for individual instances or 'browser_list_instances' to check what's open. The description implies a destructive cleanup operation but doesn't specify prerequisites or consequences.

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

browser_close_instanceC

Close the specified browser instance

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceIdYesInstance ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states the action ('Close') but doesn't explain what closing entails (e.g., whether it terminates processes, frees resources, or if it's reversible). It also omits potential side effects, error conditions, or permissions needed, which is a significant gap 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.

Conciseness5/5

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

The description is a single, direct sentence with zero wasted words. It front-loads the core action and target, making it immediately scannable and efficient. Every word earns its place, and there's no unnecessary elaboration or redundancy.

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

Completeness2/5

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

For a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't cover what happens after closing (e.g., success/failure indicators, cleanup effects) or how it integrates with sibling tools (e.g., 'browser_list_instances'). The agent lacks context on behavioral outcomes and error handling, which is critical for safe operation.

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

Parameters3/5

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

The schema description coverage is 100%, with the single parameter 'instanceId' documented as 'Instance ID'. The description adds no additional meaning beyond this, such as how to obtain the ID or format requirements. Given the high schema coverage, a baseline score of 3 is appropriate as the schema handles the parameter documentation adequately.

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 ('Close') and target ('the specified browser instance'), making the purpose immediately understandable. It distinguishes from siblings like 'browser_close_all_instances' by specifying a single instance, though it doesn't explicitly name this distinction. The description avoids tautology by not just restating the tool name.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'browser_close_all_instances' or 'browser_list_instances'. It doesn't mention prerequisites (e.g., needing an existing instance) or typical workflows (e.g., cleanup after operations). This leaves the agent to infer usage from context alone.

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

browser_create_instanceC

Create a new browser instance

ParametersJSON Schema
NameRequiredDescriptionDefault
browserTypeNoBrowser typechromium
headlessNoWhether to run in headless mode
viewportNoViewport size
userAgentNoUser agent string
metadataNoInstance metadata

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'Create' which implies a write/mutation operation, but doesn't disclose any behavioral traits: no mention of permissions required, whether instances persist across sessions, rate limits, what happens on failure, or what the return value might be (e.g., instance ID). The description is minimal and lacks crucial operational context.

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

Conciseness5/5

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

The description is a single, efficient sentence with zero wasteβ€”it states the core purpose without unnecessary words. It's appropriately sized for a tool with a clear primary function and well-documented schema. Every word earns its place, making it easy to parse quickly.

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 with nested objects, no output schema, and no annotations), the description is incomplete. It doesn't explain what a browser instance is in this system, how it's used with sibling tools, what happens after creation, or any error conditions. For a mutation tool with significant parameter structure, more context is needed to guide effective use.

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

Parameters3/5

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

Schema description coverage is 100%, with all parameters well-documented in the schema itself (e.g., browserType with enum values, headless default, viewport structure). The description adds no parameter semantics beyond what's already in the schemaβ€”it doesn't explain why you'd choose different browser types, when to use headless mode, or how metadata is used. Baseline 3 is appropriate since the schema does the heavy lifting.

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 ('Create') and resource ('new browser instance'), making the purpose immediately understandable. It distinguishes this from sibling tools like browser_list_instances or browser_close_instance by focusing on creation rather than listing or closing. However, it doesn't specify what a 'browser instance' entails in this context (e.g., a controlled browser session for automation).

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing to create an instance before using browser_navigate), when not to use it (e.g., if an instance already exists), or how it relates to sibling tools like browser_list_instances for checking existing instances. Usage is implied but not explicitly stated.

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

browser_evaluateC

Execute JavaScript code in the page context

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceIdYesInstance ID
scriptYesJavaScript code to execute

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions execution but doesn't specify whether this is read-only or has side effects, what permissions are needed, how errors are handled, or what the return format might be. For a tool that executes arbitrary JavaScript, this lack of safety and behavioral context is a significant gap.

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

Conciseness5/5

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

The description is a single, clear sentence with zero wasted words. It's front-loaded with the core action and context, making it highly efficient and easy to parse.

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 of executing JavaScript in a browser context, the lack of annotations, and no output schema, the description is insufficient. It doesn't address critical aspects like security implications, error handling, return values, or dependencies on other tools (e.g., requiring browser_create_instance first). This leaves too many unknowns for safe and effective use.

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

Parameters3/5

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

The schema description coverage is 100%, so the schema already documents both parameters (instanceId and script) adequately. The description doesn't add any additional meaning beyond what the schema provides, such as examples of valid scripts or instanceId formats, but it doesn't need to given the high schema coverage.

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 ('Execute JavaScript code') and the context ('in the page context'), which distinguishes it from general JavaScript execution tools. However, it doesn't explicitly differentiate from potential sibling tools that might also execute code in different contexts, though the 'page context' specification is helpful.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like browser_get_element_text or browser_wait_for_element, nor does it mention prerequisites such as requiring an existing browser instance. It simply states what the tool does without contextual usage information.

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

browser_fillC

Fill a form field

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceIdYesInstance ID
selectorYesElement selector
valueYesValue to fill
timeoutNoTimeout in milliseconds

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but offers minimal behavioral context. It implies a mutation action ('fill') but doesn't disclose error conditions (e.g., if selector fails), side effects, or performance aspects like the timeout parameter's role. It mentions no authentication needs or rate limits, leaving critical operational details 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 extremely concise at three words, with no wasted language. It front-loads the core purpose immediately, making it easy to parse. Every word earns its place by directly conveying the tool's function.

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's complexity (interacting with browser instances and DOM elements), no annotations, and no output schema, the description is insufficient. It lacks details on return values, error handling, prerequisites like instanceId usage, and how it integrates with sibling tools. For a browser automation tool with multiple parameters, this leaves too many 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 description coverage is 100%, so the schema already documents all parameters (instanceId, selector, value, timeout). The description adds no additional meaning beyond implying 'value' is for filling form fields, but doesn't clarify parameter interactions or usage nuances. Baseline 3 is appropriate as the schema handles most documentation.

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

Purpose4/5

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

The description 'Fill a form field' clearly states the action (fill) and target (form field), which is specific and unambiguous. It distinguishes this from siblings like browser_click or browser_type by focusing on form field population, though it doesn't explicitly differentiate from browser_select_option which also interacts with form elements.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an active browser instance), contrast with similar tools like browser_type (for typing) or browser_select_option (for dropdowns), or specify when not to use it (e.g., for non-form elements).

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

browser_get_element_attributeC

Get element attribute value

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceIdYesInstance ID
selectorYesElement selector
attributeYesAttribute name
timeoutNoTimeout in milliseconds

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Get element attribute value' implies a read-only operation, but it doesn't disclose critical behaviors: that it requires a valid browser instance (instanceId), may fail if the element isn't found or times out, or returns a string/null value. For a tool with 4 parameters and no annotation coverage, this leaves significant gaps in understanding how it behaves in practice.

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, efficient phrase ('Get element attribute value') that front-loads the core purpose with zero wasted words. Every term earns its place: 'Get' specifies the action, 'element attribute' identifies the target, and 'value' clarifies the output. It's appropriately sized for a straightforward tool.

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's complexity (4 parameters, no annotations, no output schema), the description is incomplete. It doesn't explain the return value (e.g., string or null), error conditions (e.g., if element not found), or dependencies (requires an active browser instance). For a browser interaction tool with multiple parameters, this minimal description leaves too much unspecified for reliable agent use.

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

Parameters3/5

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

Schema description coverage is 100%, with all parameters clearly documented in the schema (instanceId, selector, attribute, timeout). The description adds no additional meaning beyond what the schema providesβ€”it doesn't explain what an 'element attribute' is, provide examples of selectors or attribute names, or clarify the timeout behavior. With high schema coverage, the baseline score of 3 is appropriate as the description doesn't enhance parameter understanding.

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 'Get element attribute value' clearly states the verb ('Get') and resource ('element attribute value'), making the purpose immediately understandable. It distinguishes itself from siblings like browser_get_element_text (which gets text content) and browser_wait_for_element (which waits for existence). However, it doesn't specify that this operates on a browser instance, which is implied but not explicit.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (like needing an existing browser instance), when not to use it (e.g., for text content vs. attributes), or refer to sibling tools like browser_get_element_text for different element properties. The agent must infer usage from the tool name and context alone.

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

browser_get_element_textC

Get element text content

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceIdYesInstance ID
selectorYesElement selector
timeoutNoTimeout in milliseconds

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but offers minimal behavioral context. It doesn't disclose that this is a read-only operation (implied by 'Get'), doesn't mention potential failures (e.g., if element isn't found or isn't visible), and doesn't describe return format or error handling. The timeout parameter suggests it might wait for elements, but this isn't explicitly explained.

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 maximally concise with just four words that directly state the tool's function. There's zero waste or redundancy, and the information is front-loaded appropriately for such a simple operation.

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

Completeness2/5

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

For a browser automation tool with 3 parameters and no output schema, the description is inadequate. It doesn't explain what 'text content' means (innerText vs textContent), doesn't mention the tool's relationship to other browser tools, and provides no information about return values or error conditions despite the complexity of browser interactions.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters adequately. The description adds no additional parameter semantics beyond what's in the schema - it doesn't explain selector syntax, instanceId format, or timeout behavior. Baseline 3 is appropriate when schema does the heavy lifting.

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 ('element text content'), making the purpose immediately understandable. However, it doesn't distinguish this tool from its sibling 'browser_get_element_attribute', which also retrieves element properties but for attributes rather than text content.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'browser_get_element_attribute' or 'browser_get_markdown'. It also doesn't mention prerequisites such as needing an existing browser instance or when text extraction is appropriate versus other retrieval methods.

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

browser_get_markdownC

Get page content in Markdown format, optimized for large language models

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceIdYesInstance ID
includeLinksNoWhether to include links
maxLengthNoMaximum content length in characters
selectorNoOptional CSS selector to extract content from specific element only

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions optimization for large language models, which adds some context about output format, but fails to describe key behaviors: whether it's read-only, if it requires specific permissions, rate limits, or what happens on errors. For a tool with no annotation coverage, this is a significant gap.

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

Conciseness5/5

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

The description is a single, efficient sentence with zero waste. It's front-loaded with the core purpose and includes a useful optimization note. Every word earns its place, making it highly concise and well-structured.

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's complexity (4 parameters, no annotations, no output schema), the description is incomplete. It lacks details on behavioral traits, error handling, and output specifics. While it states the format and optimization, it doesn't cover enough context for safe and effective use, especially for a tool that interacts with browser instances.

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 no parameter-specific information beyond what the input schema provides. Schema description coverage is 100%, so all parameters are documented in the schema. The description implies content extraction but doesn't elaborate on parameter usage or interactions. Baseline 3 is appropriate as the schema handles parameter documentation adequately.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Get page content in Markdown format, optimized for large language models.' It specifies the verb ('Get'), resource ('page content'), and format ('Markdown'), distinguishing it from siblings like browser_get_element_text or browser_get_page_info. However, it doesn't explicitly differentiate from all siblings (e.g., browser_evaluate might also retrieve content).

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It mentions optimization 'for large language models,' which hints at a context but doesn't specify scenarios or exclusions. No explicit alternatives or prerequisites are stated, leaving usage unclear relative to siblings like browser_get_element_text or browser_get_page_info.

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

browser_get_page_infoC

Get detailed page information including full HTML content, page statistics, and metadata

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceIdYesInstance ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions what information is retrieved but lacks details on performance (e.g., speed, potential delays), side effects (e.g., whether it triggers page loads or network requests), error handling, or output format. For a tool that retrieves 'detailed' data without annotations, this is a significant gap in transparency.

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, efficient sentence that front-loads the core purpose ('Get detailed page information') and specifies key components (HTML content, statistics, metadata). There is no wasted verbiage, and every word contributes to understanding the tool's function.

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's complexity (retrieving multiple types of page data), lack of annotations, and no output schema, the description is incomplete. It doesn't cover behavioral aspects like how the data is structured, potential limitations (e.g., size constraints), or dependencies on other tools (e.g., requiring a browser instance). For a tool with no structured support, more context is needed.

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 input schema has 100% description coverage, with the single parameter 'instanceId' documented as 'Instance ID'. The description adds no additional parameter semantics beyond what the schema provides, such as explaining what an instance ID represents or how to obtain it. Baseline score of 3 is appropriate since the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('detailed page information'), including what information is retrieved (HTML content, statistics, metadata). It distinguishes itself from siblings like browser_get_element_attribute or browser_get_markdown by focusing on comprehensive page-level data rather than specific elements or formats. However, it doesn't explicitly differentiate from all siblings in the browser tool family.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an active browser instance), exclusions, or comparisons to siblings like browser_get_markdown (which might provide formatted content) or browser_list_instances (which manages instances). Usage is implied but not explicitly stated.

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

browser_go_backC

Go back to the previous page

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceIdYesInstance ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action but doesn't describe what happens on failure (e.g., if no previous page exists), whether it waits for navigation to complete, or any side effects. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.

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, efficient sentence that directly states the tool's function without any unnecessary words. It is front-loaded and perfectly concise, earning its place with zero waste.

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 of a browser navigation tool with no annotations and no output schema, the description is incomplete. It lacks details on behavior (e.g., success/failure conditions, waiting), prerequisites, and return values. For a tool that likely involves state changes and potential errors, more context is needed.

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 input schema has 100% description coverage, with the single parameter 'instanceId' documented as 'Instance ID'. The description doesn't add any meaning beyond this, such as explaining what an instance represents or how to obtain it. With high schema coverage, the baseline score of 3 is appropriate.

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 ('Go back') and the target ('to the previous page'), which is specific and unambiguous. However, it doesn't explicitly differentiate from its sibling 'browser_go_forward', though the distinction is obvious from the names. The purpose is clear but lacks explicit sibling differentiation.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., requires an existing browser instance with navigation history), exclusions (e.g., not applicable if no previous page exists), or comparisons with siblings like 'browser_navigate' or 'browser_go_forward'. Usage is implied but not stated.

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

browser_go_forwardC

Go forward to the next page

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceIdYesInstance ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions the action but doesn't explain what happens if there's no forward page available (e.g., error behavior), whether it waits for navigation to complete, or what the expected outcome is. This leaves significant behavioral gaps for a navigation tool.

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

Conciseness5/5

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

The description is a single, efficient sentence with zero wasted words. It's appropriately sized for a simple navigation tool and front-loads the core functionality immediately.

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's navigation purpose and lack of both annotations and output schema, the description is insufficient. It doesn't explain what constitutes 'success' (e.g., page loaded), error conditions, or behavioral expectations, leaving the agent with incomplete context for proper usage.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents the single 'instanceId' parameter. The description doesn't add any parameter-specific information beyond what's in the schema, maintaining the baseline score of 3 where schema does the heavy lifting.

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 ('Go forward') and target ('to the next page'), providing a specific verb+resource combination. However, it doesn't explicitly distinguish this tool from its sibling 'browser_go_back' (which presumably goes backward), leaving some room for sibling differentiation.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'browser_navigate' or 'browser_go_back', nor does it mention prerequisites (e.g., requiring a browser instance with forward navigation available). It simply states what the tool does without contextual usage information.

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

browser_list_instancesB

List all browser instances

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'List all browser instances' implies a read-only operation, but it doesn't specify what information is returned (e.g., instance IDs, URLs, status), whether the list is real-time or cached, or if there are any side effects like refreshing instances. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

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

Conciseness5/5

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

The description is a single, clear sentence with zero waste. It's front-loaded with the core action ('List all browser instances') and doesn't include any redundant or verbose language. Every word earns its place, making it highly efficient.

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

Completeness3/5

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

Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is minimally adequate. It states what the tool does but lacks details on return values, behavior, or usage context. For a list operation with no structured output documentation, the description should ideally specify what information is returned to be more complete.

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

Parameters4/5

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

The tool has 0 parameters, and schema description coverage is 100% (though empty). The description doesn't need to explain parameters, but it implicitly confirms there are none by not mentioning any. This is appropriate for a parameterless tool, earning a baseline 4 as it adds no unnecessary information.

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 'List all browser instances' clearly states the verb ('List') and resource ('browser instances'), making the purpose immediately understandable. It distinguishes this tool from siblings that perform actions on browser instances (like click, navigate, close) rather than listing them. However, it doesn't specify what constitutes a 'browser instance' or the scope of 'all' (e.g., all currently active instances).

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., whether browser instances must be created first), nor does it differentiate from potential sibling tools like 'browser_get_page_info' which might provide overlapping information. Usage is implied by the name but not explicitly stated.

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

browser_navigateC

Navigate to a specified URL

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceIdYesInstance ID
urlYesTarget URL
timeoutNoTimeout in milliseconds
waitUntilNoWait conditionload

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('Navigate') but doesn't explain what this entailsβ€”e.g., whether it opens a new page, reloads an existing one, handles errors, or requires specific permissions. This is a significant gap for a tool with potential side effects like navigation.

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, efficient sentence with zero waste. It's front-loaded with the core action and target, making it easy to parse quickly without unnecessary details.

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

Completeness2/5

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

Given the complexity of browser navigation (involving instance management, timing, and state changes), no annotations, and no output schema, the description is incomplete. It lacks details on behavior, error handling, or what happens post-navigation, leaving gaps for the agent to operate effectively.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters (instanceId, url, timeout, waitUntil) with descriptions. The description adds no additional meaning beyond implying a 'url' parameter, which is already covered. Baseline 3 is appropriate as the schema does the heavy lifting.

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 ('Navigate') and target ('to a specified URL'), which is specific and unambiguous. However, it doesn't distinguish this tool from sibling navigation tools like 'browser_go_back' or 'browser_go_forward', which are also navigation-related but for different directions.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing browser instance), exclusions, or comparisons to siblings like 'browser_refresh' or 'browser_wait_for_navigation', leaving the agent to infer usage context.

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

browser_refreshC

Refresh the current page

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceIdYesInstance ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. 'Refresh the current page' implies a mutation (reloading), but it doesn't specify side effects (e.g., losing unsaved form data), authentication needs, rate limits, or what happens on failure. For a mutation tool with zero annotation coverage, this leaves significant gaps in understanding the tool's behavior and risks.

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, efficient sentence with zero waste. It is front-loaded with the core action ('Refresh') and immediately specifies the target ('the current page'), making it easy to parse. Every word earns its place, and there is no unnecessary elaboration or 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's complexity (a mutation with no annotations) and lack of output schema, the description is incomplete. It doesn't explain what 'refresh' entails (e.g., reloading, clearing cache), potential side effects, error conditions, or return values. For a browser interaction tool that could disrupt user state, this minimal description fails to provide adequate context for safe and effective use.

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

Parameters3/5

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

Schema description coverage is 100%, with the single parameter 'instanceId' documented as 'Instance ID' in the schema. The description adds no additional parameter information beyond what the schema provides. According to scoring rules, when schema coverage is high (>80%), the baseline is 3 even with no param info in the description, which applies here.

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 ('Refresh') and target ('the current page'), making the purpose immediately understandable. It doesn't explicitly differentiate from siblings like browser_navigate or browser_go_back/forward, but the verb 'refresh' is specific enough to imply reloading the current page rather than navigation. This is better than vague or tautological descriptions.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an active browser instance), when not to use it (e.g., during form submission), or how it differs from siblings like browser_navigate (which loads a new URL) or browser_go_back/forward (which navigate history). Without such context, the agent must infer usage from the tool name alone.

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

browser_screenshotC

Take a screenshot of the page or element

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceIdYesInstance ID
fullPageNoWhether to capture the full page
selectorNoElement selector (capture specific element)
typeNoImage formatpng
qualityNoImage quality (1-100, JPEG only)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states the action but lacks details on behavioral traits: it doesn't specify output format (e.g., base64 string, file path), error conditions, permissions needed, or side effects. This is a significant gap for a tool with no annotation coverage.

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

Conciseness5/5

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

The description is a single, clear sentence with zero waste. It's front-loaded and efficiently conveys the core purpose without unnecessary 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 no annotations and no output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., image data, success status) or address potential complexities like handling missing elements or instance errors. For a 5-parameter tool with behavioral implications, this is inadequate.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters are well-documented in the schema. The description adds minimal value beyond schema, only implying 'page or element' maps to fullPage and selector parameters. Baseline 3 is appropriate as schema does heavy lifting.

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 ('Take a screenshot') and target ('page or element'), which is specific and distinguishes it from siblings like browser_click or browser_type. However, it doesn't explicitly differentiate from other screenshot-related tools (none exist in siblings), so it's not a perfect 5.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an active browser instance), exclusions, or comparisons with other tools. The description is standalone without context.

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

browser_select_optionC

Select an option from a dropdown

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceIdYesInstance ID
selectorYesElement selector
valueYesValue to select
timeoutNoTimeout in milliseconds

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action but doesn't cover critical aspects like error handling (e.g., what happens if the dropdown isn't found), side effects (e.g., page changes), or performance traits (e.g., timeout behavior beyond the schema). This is inadequate for a mutation tool with zero annotation coverage.

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, efficient sentence with zero wasteβ€”it directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, making it easy for an agent to parse quickly.

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 of a browser interaction tool with no annotations and no output schema, the description is incomplete. It lacks details on behavioral traits, error cases, and output expectations, which are crucial for safe and effective tool invocation in this context.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters (instanceId, selector, value, timeout). The description implies the 'value' parameter is used to select an option but doesn't add meaning beyond the schema, such as format examples or interaction details. Baseline 3 is appropriate when the schema does the heavy lifting.

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 ('Select an option') and the target ('from a dropdown'), which is specific and distinguishes it from siblings like browser_click or browser_fill that perform different browser interactions. However, it doesn't explicitly differentiate from potential similar tools like browser_fill for dropdowns, keeping it at 4 rather than 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an active browser instance), exclusions, or compare it to siblings like browser_click for non-dropdown elements or browser_fill for text inputs, leaving the agent to infer usage context.

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

browser_typeC

Type text into an element

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceIdYesInstance ID
selectorYesElement selector
textYesText to input
delayNoInput delay in milliseconds
timeoutNoTimeout in milliseconds

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action but doesn't mention what happens if the element isn't found (timeout behavior), whether it simulates keystrokes or sets value, or any side effects. The description is minimal and lacks critical operational details.

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

Conciseness5/5

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

The description is a single, clear sentence with zero wasted words. It's front-loaded with the core action and efficiently communicates the essential purpose without unnecessary elaboration.

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

Completeness2/5

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

For a tool with 5 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain return values, error conditions, or behavioral nuances like how delays work or what happens on timeout. The agent would need to guess critical aspects of tool behavior.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all parameters. The description adds no additional meaning beyond implying that 'text' is typed into an element identified by 'selector'. This meets the baseline for high schema coverage but doesn't enhance understanding.

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 ('Type text') and target ('into an element'), making the purpose immediately understandable. It distinguishes itself from siblings like browser_click (clicking) and browser_fill (filling forms), though it doesn't explicitly differentiate from browser_fill which might have overlapping functionality.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like browser_fill or browser_select_option. It doesn't mention prerequisites (e.g., needing an existing browser instance) or typical use cases, leaving the agent to infer usage from context alone.

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

browser_wait_for_elementC

Wait for an element to appear

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceIdYesInstance ID
selectorYesElement selector
timeoutNoTimeout in milliseconds

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It mentions waiting behavior but lacks critical details: what happens on timeout (error, return null?), whether it polls continuously, if it waits for visibility vs. existence, or any side effects. This is a significant gap for a tool that could block execution.

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

Conciseness5/5

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

The description is a single, efficient sentence with zero waste. It's front-loaded and appropriately sized for a simple tool, though this conciseness comes at the cost of detail in other dimensions.

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

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., success boolean, element reference), timeout behavior, or error conditions. For a waiting tool with potential blocking effects, this leaves the agent guessing about critical operational aspects.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters (instanceId, selector, timeout). The description adds no additional meaning beyond implying the selector targets the element to wait for. Baseline 3 is appropriate as the schema does the heavy lifting.

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

Purpose3/5

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

The description 'Wait for an element to appear' clearly states the action (waiting) and target (an element), but it's vague about what constitutes 'appearing' (e.g., visibility, existence in DOM) and doesn't differentiate from siblings like browser_wait_for_navigation. It's functional but lacks specificity for a browser automation context.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an active browser instance via instanceId), nor does it compare to other waiting tools like browser_wait_for_navigation. The agent must infer usage from the tool name and parameters alone.

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

browser_wait_for_navigationB

Wait for page navigation to complete

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceIdYesInstance ID
timeoutNoTimeout in milliseconds

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It mentions waiting for navigation completion but lacks details on behavioral traits: it doesn't specify what happens on timeout (e.g., error thrown, return status), whether it blocks until navigation finishes or times out, or if it handles redirects or multiple navigations. This is a significant gap for a tool with potential side effects.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and every part of the sentence contributes to understanding the tool's function, making it highly concise and well-structured.

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 of navigation waiting (which involves asynchronous behavior and potential errors), the description is incomplete. No output schema exists, so return values are undocumented. With no annotations and minimal description, it fails to cover critical aspects like error handling, success criteria, or interaction with other browser tools, leaving gaps for an AI agent.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters (instanceId and timeout) with descriptions. The description adds no additional meaning beyond what the schema provides, such as explaining how timeout interacts with navigation events or why instanceId is required. Baseline 3 is appropriate when the schema does the heavy lifting.

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 ('wait for page navigation to complete'), which is a specific verb+resource combination. It distinguishes itself from siblings like browser_navigate (which initiates navigation) and browser_wait_for_element (which waits for elements rather than navigation events). However, it doesn't explicitly mention what constitutes 'complete' navigation (e.g., network idle, DOM ready), leaving some ambiguity.

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 after initiating navigation (e.g., with browser_navigate) but doesn't explicitly state when to use it versus alternatives. It doesn't mention prerequisites like needing an active browser instance or specify scenarios where this tool is necessary versus relying on implicit waits. No exclusions or clear alternatives are provided.

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. 20 tool updates
    • First observedbrowser_click
    • First observedbrowser_close_all_instances
    • First observedbrowser_close_instance
    • First observedbrowser_create_instance
    • First observedbrowser_evaluate
    • First observedbrowser_fill
    • First observedbrowser_get_element_attribute
    • First observedbrowser_get_element_text
    • First observedbrowser_get_markdown
    • First observedbrowser_get_page_info
    • First observedbrowser_go_back
    • First observedbrowser_go_forward
    • First observedbrowser_list_instances
    • First observedbrowser_navigate
    • First observedbrowser_refresh
    • First observedbrowser_screenshot
    • First observedbrowser_select_option
    • First observedbrowser_type
    • First observedbrowser_wait_for_element
    • First observedbrowser_wait_for_navigation

TDQS

B3.4/5.0
Disambiguation5/5

Every tool has a clearly distinct purpose with no ambiguity. Each tool targets a specific browser interaction (e.g., navigation, element interaction, instance management, content retrieval), and the descriptions clearly differentiate their functions. There is no overlap that would cause misselection.

Naming Consistency5/5

All tool names follow a consistent 'browser_' prefix with snake_case and descriptive verb_noun patterns (e.g., browser_click, browser_navigate, browser_get_markdown). This predictability makes it easy for agents to understand and use the tools without confusion.

Tool Count4/5

With 20 tools, the count is slightly high but reasonable for a comprehensive browser automation server. It covers a wide range of operations from basic navigation to advanced interactions, though it might feel heavy compared to simpler servers. Each tool appears to earn its place in the domain.

Completeness5/5

The tool set provides complete coverage for browser automation, including instance management, navigation, element interaction, content retrieval, and waiting mechanisms. There are no obvious gaps; agents can perform full workflows from setup to teardown without dead ends.

Maintenance

ActivityInactive
ResponsivenessSyncing

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
    Not graded
    quality
    C
    maintenance
    parallel-browser-mcp is an MCP server for parallel browser automation. It exposes a numeric session model over MCP so one client can create and control multiple browser sessions at the same time across multiple browser providers.
    182
    42
    Apache 2.0
  • A
    license
    A
    quality
    B
    maintenance
    Multi-agent local browser automation MCP server with per-agent WebSocket paths, configurable ports, and fixes for upstream issues like port collisions and recursion bugs.
    23
    Apache 2.0
  • A
    license
    A
    quality
    D
    maintenance
    Stateful MCP server wrapping Playwright for browser automation. Provides tools to navigate, interact, and extract data from web pages via a persistent browser session.
    19
    1,414
    MIT

Latest Blog Posts

MCP directory API

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

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

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