Skip to main content
Glama
rnd-pro
by rnd-pro

Browser[X]MCP Banner

AI-Powered Browser Automation with Advanced Form Testing

License Node.js Version Status

Browser[X]MCP is a Model Context Provider (MCP) server that enables AI-driven browser automation with advanced form testing capabilities, intelligent element extraction, and comprehensive interaction logging.

Connect your AI apps to browser automation - Works seamlessly with Cursor, Claude Desktop, VS Code, and other MCP-compatible applications.

✨ Features

šŸ¤– AI-Driven Testing

  • Smart Form Filling: AI automatically fills forms with realistic test data

  • Batch Actions: Efficient bulk operations for multiple elements (up to 5 actions per batch)

  • Context Awareness: AI understands page state and avoids redundant actions

  • Loop Detection: Prevents infinite testing cycles

⚔ Batch Operations System

  • Multi-Element Processing: Execute up to 5 actions simultaneously

  • Intelligent Grouping: AI automatically groups similar elements for batch processing

  • Performance Optimization: Reduce API calls and execution time by 3-5x

  • Error Isolation: Individual action failures don't stop the entire batch

  • Smart Prioritization: Batch similar input types (text fields, checkboxes, etc.)

šŸŽÆ Advanced Element Extraction

  • XML Canvas Format: Compact, efficient page representation (800x+ compression)

  • ID-Based Targeting: Reliable element identification

  • Coordinate Mapping: Precise click positioning

  • Real-time Updates: Dynamic page state tracking

šŸ’° Token Economics & Cost Efficiency

  • Massive Token Savings: 800x+ data compression vs screenshots

  • AI Cost Reduction: ~90% lower AI API costs compared to vision models

  • Text vs Vision Models: Use cheaper text models instead of expensive vision APIs

  • Scalable Operations: Process thousands of pages at fraction of screenshot costs

  • Performance Boost: 10x faster processing with compact data format

šŸ“Š Comprehensive Logging

  • Action History: Detailed logs of all AI decisions and actions

  • Form Data Capture: Real-time extraction of filled form data

  • Performance Metrics: Success rates, timing, and efficiency stats

  • Test Reports: JSON and console output formats

šŸ›”ļø Robust Automation

  • Field Clearing: Advanced input field cleaning before entry

  • File Upload Handling: Programmatic file upload without OS dialogs

  • Error Recovery: Graceful handling of failed operations

  • Stealth Mode: Reduced bot detection signatures

Related MCP server: BrowserPilot

šŸš€ Quick Start

Installation

# Clone the repository
git clone https://github.com/rnd-pro/browser-x-mcp.git
cd browser-x-mcp

# Install dependencies
npm install

# Install Playwright browser binaries for local browser tests
npx playwright install chromium

# Configure environment
cp .env.example .env
# Edit .env with your API keys

# Start the MCP server
npm start

Basic Usage

# Run AI-powered form testing
npm test

# Run with mock AI (faster testing)  
npm run test:mock

# Generate test reports
npm run test:report

šŸ—ļø Architecture

ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”    ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”    ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”
│   AI Test       │───▶│   MCP Server     │───▶│   Browser       │
│   Agent         │    │   (BrowserX)     │    │   (Playwright)  │
ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜    ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜    ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜
         │                        │                       │
         ā–¼                        ā–¼                       ā–¼
ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”    ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”    ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”
│   Test Reports  │    │   Action Logs    │    │   Screenshots   │
│   & Metrics     │    │   & Form Data    │    │   & Canvas      │
ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜    ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜    ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜

šŸ“ Project Structure

browserx-mcp/
ā”œā”€ā”€ src/
│   ā”œā”€ā”€ server/              # MCP Server implementation
│   │   ā”œā”€ā”€ index.js         # Main server with browser automation
│   │   ā”œā”€ā”€ atomic-navigation.js  # Navigation utilities
│   │   └── daemon.js        # Server daemon
│   └── extractor/           # Page analysis tools
│       └── VirtualCanvasExtractor.js  # XML canvas extraction
ā”œā”€ā”€ test/
│   ā”œā”€ā”€ ai-mcp-interaction-test.js  # AI-powered testing
│   ā”œā”€ā”€ real-websites-test.js       # Real website validation
│   └── input-types-test-page.html  # Test page
ā”œā”€ā”€ tools/                   # Development utilities
│   └── screenshot-analyzer/ # Screenshot analysis tools (planned)
ā”œā”€ā”€ examples/                # Usage examples
ā”œā”€ā”€ docs/                    # Documentation
└── config/                  # Configuration files

šŸ’° Cost Efficiency Analysis

Token Usage Comparison

Approach

Data Size

Tokens

Cost/Request

Screenshots

200KB

~400,000

$0.0048

XML Canvas

0.25KB

~500

$0.0001

Savings

800x smaller

800x fewer

48x cheaper

Real-World Performance

  • Google Search: 276KB screenshot → 3KB canvas = 92x compression

  • GitHub Pages: 166KB screenshot → 121KB canvas = 1.4x compression

  • Average Savings: ~90% cost reduction on AI API calls

šŸŽ® Usage Examples

AI-Powered Form Testing

import { MCPAIInteractionAgent } from './test/ai-mcp-interaction-test.js';

const agent = new MCPAIInteractionAgent({
    maxIterations: 20,
    useMockAI: false,
    stopOnFailure: true
});

await agent.init();
await agent.runInteractionTest();
const report = await agent.generateReport();

Batch Operations Example

// Execute multiple actions in one batch
const batchResponse = await fetch('http://localhost:3001', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
        jsonrpc: '2.0',
        method: 'batch_actions',
        params: {
            actions: [
                { action: 'input_text', element_id: 'email', text: 'user@example.com' },
                { action: 'input_text', element_id: 'password', text: 'SecurePass123' },
                { action: 'click_element_by_id', element_id: 'submit-btn' }
            ]
        },
        id: 1
    })
});

Custom MCP Operations

// Connect to MCP server
const response = await fetch('http://localhost:3001', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
        jsonrpc: '2.0',
        method: 'extract_xml_canvas',
        params: {},
        id: 1
    })
});

šŸ¤– AI Editor Integration

Browser[X]MCP integrates seamlessly with MCP-compatible AI applications:

Application

Support

Setup

Cursor

āœ… Full

Add to .cursor/mcp.json

Claude Desktop

āœ… Full

Add to MCP configuration

VS Code

āœ… Full

Use MCP extension

Windsurf

āœ… Full

MCP server integration

Cursor Integration

To use Browser[X]MCP with Cursor, add this to your .cursor/mcp.json:

{
  "mcpServers": {
    "browser-x-mcp": {
      "command": "node",
      "args": ["./src/server/daemon.js"],
      "env": {
        "BROWSER_X_MCP_DEBUG": "true",
        "NODE_ENV": "development"
      }
    }
  }
}

Then restart Cursor and start automating your browser with AI! šŸš€

šŸ”§ Configuration

Environment Variables

Create a .env file based on .env.example:

# Copy the example file
cp .env.example .env

# Edit with your settings
nano .env

Required environment variables:

# AI Configuration (required for AI testing)
OPENROUTER_API_KEY=your_openrouter_api_key_here
OPENROUTER_MODEL=deepseek/deepseek-r1:free

# Server Configuration
MCP_PORT=3001
BROWSER_HEADLESS=false

Note: Get your OpenRouter API key from openrouter.ai

Test Configuration

const config = {
    maxIterations: 30,
    stopOnFailure: true,
    useMockAI: false,
    headless: false,
    loopThreshold: 2
};

šŸ“Š Test Reports

Browser[X]MCP generates comprehensive test reports:

{
  "testMetadata": {
    "testType": "MCP AI-Powered Form Interaction Test",
    "timestamp": "2025-01-20T19:30:22.508Z",
    "duration": "45.2 seconds",
    "model": "deepseek/deepseek-r1:free"
  },
  "results": {
    "totalActions": 12,
    "successfulActions": 12,
    "failedActions": 0,
    "successRate": "100.00%",
    "aiDecisions": [...]
  }
}

šŸ› ļø Development

Running Tests

# AI-powered form testing
npm test

# Alternative AI test command
npm run test:ai

# Mock AI testing (faster, no API required)
npm run test:mock

# View test page manually
npm run test:page

Adding New Features

  1. Server Extensions: Add new MCP methods in src/server/index.js

  2. AI Capabilities: Enhance AI logic in test/ai-mcp-interaction-test.js

  3. Extractors: Create new page analyzers in src/extractor/

šŸ—ŗļø Roadmap

šŸŽÆ Planned Features

šŸ–¼ļø Screenshot Analysis Tools

  • Visual element detection and coordinate mapping

  • Cropped screenshot analysis for targeted interactions

  • AI-powered click coordinate determination

  • Visual regression testing capabilities

🧠 Enhanced AI Integration

  • Multi-model AI support (GPT-4, Claude, Local models)

  • Custom AI prompt templates

  • Learning from user interactions

  • Adaptive testing strategies

🌐 Extended Browser Support

  • Multi-browser testing (Chrome, Firefox, Safari)

  • Browser profile management

  • Existing browser connection support

  • Extension-based automation

šŸ” Advanced Analysis

  • Performance monitoring and optimization

  • Accessibility testing integration

  • SEO analysis capabilities

  • Security vulnerability scanning

šŸ“± Cross-Platform Support

  • Mobile browser automation

  • Responsive design testing

  • Touch interaction simulation

  • Device emulation

šŸš€ Priority Features

  • Screenshot analyzer tool implementation

  • Enhanced error handling and recovery

  • Performance optimization

  • Comprehensive documentation

šŸŽØ Future Vision

  • Visual testing framework

  • Multi-browser orchestration

  • Cloud deployment options

  • Enterprise features

šŸ¤ Contributing

We welcome contributions! Please see our Contributing Guide for details.

Development Setup

git clone https://github.com/rnd-pro/browser-x-mcp.git
cd browser-x-mcp
npm install
npm run dev

Submitting Changes

  1. Fork the repository

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

  3. Commit changes: git commit -m 'Add amazing feature'

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

  5. Open a Pull Request

šŸ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

šŸ‘„ Development Team

Developed by RND-PRO Team

  • 🌐 Website: rnd-pro.com

  • šŸ’¼ Professional development team specializing in innovative automation solutions

  • šŸ¤– Experts in AI integration and browser automation technologies

šŸ™ Acknowledgments

  • Built on top of Playwright for reliable browser automation

  • Inspired by the MCP (Model Context Provider) specification

  • AI integration powered by OpenRouter and various LLM providers

  • Similar to Browser MCP but with advanced AI testing capabilities

šŸ“ž Support


Made with ā¤ļø by RND-PRO Team for the AI automation community

Available Tools

14 tools
batch_actionsA

Execute multiple actions in batch (up to 5 actions for performance)

ParametersJSON Schema
NameRequiredDescriptionDefault
actionsYesArray of actions to execute in sequence

TDQS

A3.6/5.0
Behavior2/5

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

The description discloses the 5-action limit and performance rationale, but it omits critical behavioral details such as execution order, error handling, atomicity, and whether actions share state. With no annotations to cover safety or side effects, the description leaves the agent without essential operational knowledge.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that immediately conveys the main action and a useful constraint. It contains no extraneous words and is 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?

While the schema is detailed, the description fails to explain when batch execution is preferred over individual sibling tools, what the tool returns, or how it handles partial failures. No output schema exists, so the description should at least indicate the response format. The performance hint alone is insufficient for operational decision-making.

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 provides 100% coverage for the 'actions' parameter, including nested fields and descriptions. The tool description adds no parameter-specific meaning beyond restating the maxItems=5 constraint already present in the schema, so the baseline score of 3 applies.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Execute multiple actions in batch' with an explicit limit of 5 actions. This distinguishes it from sibling tools that handle single actions such as input_text or scroll_page.

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

Usage Guidelines4/5

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

The phrase 'up to 5 actions for performance' provides clear context that batch execution is intended for efficiency when bundling multiple actions. It does not explicitly name alternatives or edge cases, but the performance rationale makes the use case evident.

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

click_element_by_xpathC

Click an element using XPath selector

ParametersJSON Schema
NameRequiredDescriptionDefault
xpathYesXPath selector for the element to click

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It only states 'Click' without mentioning side effects, error handling, waiting behavior, or the need for a loaded page. This is insufficient for a mutating action.

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

Conciseness5/5

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

The description is a single sentence with no redundant words. It is tightly written and immediately communicates the core action and selector method.

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 simplicity, the description is minimal but lacks important context such as what happens if the element is not found or if multiple elements match. It also does not mention the surrounding browser state, making it incomplete for robust agent decision-making.

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 already describes the xpath parameter as 'XPath selector for the element to click', covering 100% of the schema. The description's 'using XPath selector' adds no additional meaning beyond the schema, so a 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 ('Click'), the target ('an element'), and the locating method ('using XPath selector'). This distinguishes it from most siblings, though it does not explicitly mention the browser context or edge cases.

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 prefer this tool over alternatives like execute_atomic_action or get_element_details. The description implies usage for clicking, but there are no exclusions, prerequisites, or alternative references.

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

compare_with_screenshotA

Compare virtual canvas data size with screenshot for performance testing

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, yet the description does not disclose behavioral traits such as return format, side effects, or whether it is read-only. It only states the comparison purpose, leaving the agent uninformed about what happens when the tool is invoked.

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

Conciseness5/5

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

The description is a single sentence that conveys the core purpose without redundancy. Every word contributes to understanding, making it highly concise.

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

Completeness2/5

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

The description lacks information about output or return value, which is critical since there is no output schema. It also does not clarify what 'compare' yields (e.g., pass/fail, metrics) or how it relates to performance testing, leaving a significant completeness gap.

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

Parameters4/5

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

The tool has zero parameters, so the schema provides no parameter information and the baseline is 4. The description does not need to add parameter semantics, and it correctly omits any since there are none.

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

Purpose5/5

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

The description uses the specific verb 'compare' and identifies the resources (virtual canvas data size, screenshot) and the context (performance testing), making it clear what the tool does. It distinguishes itself from sibling tools like get_performance_metrics by focusing on comparison rather than measurement.

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

Usage Guidelines4/5

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

The description provides clear context (performance testing) but does not explicitly state when to use this tool over siblings or any exclusions. There is no mention of alternatives, so it earns a 4 for clear context without explicit exclusions.

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

evaluate_in_pageC

Execute JavaScript code in the browser page context

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesJavaScript code to execute in the page

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 fails to mention whether the code's return value is surfaced, how errors are handled, whether execution is asynchronous, or if there are side effects like page state changes. The only extra context is 'in the browser page context', which is minimal.

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

Conciseness4/5

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

The description is a single sentence that is very concise and front-loaded. However, it is perhaps too brief, lacking context that would warrant a higher score. Still, for conciseness, it earns a high score as there is no wasted wording.

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

Completeness2/5

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

The tool is simple with one parameter, but it executes arbitrary JavaScript, which is powerful and potentially side-effectful. With no output schema and no annotations, the description should explain at least the return value and error behavior, but it does not. This leaves the agent uncertain about what happens after execution.

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% for the single 'code' parameter, which is described as 'JavaScript code to execute in the page'. The tool description adds no additional meaning beyond the schema, but the baseline for high coverage is 3, and there is nothing missing in parameter 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 uses the specific verb 'Execute' with the resource 'JavaScript code in the browser page context', clearly identifying the tool's function. It distinguishes from sibling tools like navigate_browser and input_text, though it doesn't explicitly call out that distinction. The name and description align well.

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 only states what it does, without mentioning exclusions, prerequisites, or scenarios where other tools like execute_atomic_action or click_element_by_xpath might be more appropriate. This is a clear gap.

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

execute_atomic_actionB

Execute an atomic action generated by get_element_details

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesAtomic action object from get_element_details
text_inputNoText to input (for input_text actions)

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of disclosing side effects. It only says 'execute' with no mention of browser state changes, navigation, permissions, return values, or error behavior. For a tool that performs actions on a live page, this is a significant transparency gap.

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

Conciseness5/5

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

One short sentence directly states the core function with no filler or repetition. It is front-loaded and appropriately sized for a tool that relies on the schema for parameter 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?

This is a core execution tool with no output schema and no annotations, yet the description does not explain supported action types, how text_input is used, what a successful execution looks like, or potential side effects. Given the tool's moderate-to-high complexity, this is under-specified and depends heavily on external knowledge of get_element_details.

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 covers both parameters with descriptions (100% coverage), so the baseline applies. The description adds a minor contextual cue that the action object comes from get_element_details, but it does not explain parameter interrelationships or constraints beyond the schema.

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

Purpose4/5

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

The description uses the specific verb 'execute' with the resource 'atomic action' and states it originates from get_element_details, which clearly distinguishes it as the counterpart to that tool. However, it does not define what an atomic action is, leaving some ambiguity for agents unfamiliar with the workflow.

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

Usage Guidelines4/5

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

The description explicitly says the action must be 'generated by get_element_details', establishing a clear before/after relationship and indicating when to use it. It does not mention alternatives or when not to use this tool, but the source constraint gives solid context.

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

extract_virtual_canvasA

Extract virtual canvas data from current page instead of taking screenshot

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoURL to navigate to (optional if page already loaded)
wait_forNoCSS selector to wait for before extraction (optional)
include_non_interactiveNoInclude non-interactive elements in extraction

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It fails to mention whether navigation occurs, potential side effects, permissions, or the format of the returned data. This is a significant gap for a tool with optional parameters like url and wait_for.

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

Conciseness5/5

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

The description is a single sentence that starts with the action verb and contains no filler. Every word contributes meaning, 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 no output schema and no annotations, the description is insufficiently complete. It does not explain what 'virtual canvas data' includes, how the extraction works, or what the agent should expect as a result. The minimal context is adequate for basic understanding but leaves many operational questions unanswered.

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 for all parameters, so the baseline is 3. The tool description adds no extra parameter semantics beyond what the schema already provides.

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

Purpose5/5

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

The description clearly states the verb 'extract' with a specific resource 'virtual canvas data' and context 'from current page'. It also differentiates from taking a screenshot, which helps distinguish it from screenshot-related tools.

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

Usage Guidelines4/5

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

The phrase 'instead of taking screenshot' provides a clear usage context: use this tool when you need data rather than a visual capture. However, it does not explicitly mention when not to use it or name alternative sibling tools, so it falls short of a 5.

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

get_element_detailsC

Step 2: Get detailed information about specific element for precise action execution

ParametersJSON Schema
NameRequiredDescriptionDefault
element_idYesElement ID from list_navigation_elements
action_intentNoIntended action (click, input, hover, etc.)

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 disclosing side effects and behavior. It does not mention whether the tool is read-only, what specific details it returns, any error conditions, or whether it requires prior calls. The phrase 'precise action execution' hints at a preparatory role but does not disclose concrete behavioral traits.

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

Conciseness4/5

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

The description is a single sentence, concise and front-loaded with the 'Step 2' context. It conveys the core purpose without unnecessary words. The 'Step 2' prefix is useful but not essential, and the overall structure is clean.

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

Completeness2/5

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

The tool has no output schema and no annotations, so the description should explain what 'detailed information' includes and what the return format is. It does not. It also lacks explicit context about how this step fits into a broader workflow beyond the 'Step 2' label. The description is adequate only as a minimal stub.

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 both parameters are already documented. The description adds minimal context by linking action_intent to 'precise action execution', but it primarily relies on the schema's parameter descriptions. This matches the baseline of 3 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 clearly states the tool's action (Get detailed information) and its resource (specific element) with a stated purpose (for precise action execution). It is a specific verb+resource combo that is distinguishable from siblings like execute_atomic_action, but it does not explicitly compare itself to other tools.

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

Usage Guidelines2/5

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

The only usage hint is 'Step 2' which implies a sequence, but the description does not state when to use this tool vs alternatives, nor when not to use it. It lacks explicit guidance about prerequisites or relationships to sibling tools like list_navigation_elements or execute_atomic_action.

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

get_performance_metricsA

Get Browser[X]MCP server performance metrics and statistics

ParametersJSON Schema
NameRequiredDescriptionDefault
random_stringNoDummy parameter for no-parameter tools

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states that the tool gets metrics and statistics, but does not mention whether it is read-only, whether it requires an active browser session, what specific metrics are returned, or any potential side effects. For a tool with no annotations, this is insufficient.

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

Conciseness5/5

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

The description is a single sentence that immediately states the action ('Get') and the target ('server performance metrics and statistics'). It contains no filler words and is fully front-loaded. Every word contributes to understanding, 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.

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 (no required parameters, no nested objects, no output schema), the description is minimally adequate but lacks detail about what specific metrics are included or how the output is formatted. Since there is no output schema, the description should provide some overview of return values; 'metrics and statistics' is too vague to be fully complete.

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

Parameters3/5

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

The schema has a single dummy parameter with a clear description ('Dummy parameter for no-parameter tools'), and schema coverage is 100%. The description adds no further parameter explanation, but the schema alone is sufficient because the parameter is a placeholder and requires no semantic enrichment. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's function: getting performance metrics and statistics. The verb 'Get' is specific, the resource 'Browser[X]MCP server performance metrics and statistics' is clear, and it is distinguished from all sibling tools which focus on navigation, interaction, and element inspection. No ambiguity exists about what this tool does.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives, but the name and content imply it is for retrieving server performance information. There are no sibling tools that offer similar functionality, so context is implicit rather than explicitly guided. This falls into 'implied usage'.

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

helpA

Get detailed usage instructions and workflow examples for Browser[X]MCP

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNoSpecific help topic (optional)overview

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It only says 'Get detailed usage instructions and workflow examples' without explaining side effects, return format, or whether the tool is strictly read-only. This lack of behavioral context is a significant gap, especially with no annotations to fall back on.

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

Conciseness5/5

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

The description is a single sentence, front-loaded with the verb 'Get', and contains zero waste. Every word contributes to conveying the tool's core 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.

Completeness3/5

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

The tool is simple with one optional enum parameter and no output schema. The description is accurate but minimal; it does not explain what each topic covers or what the response looks like. Given the lack of annotations and output schema, the description is adequate but not fully complete, so a score of 3 is fitting.

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 provides 100% coverage with a clear description for the 'topic' parameter and its enum values. The description adds no additional parameter-specific meaning, but the schema already documents the parameter well, so 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.

Purpose5/5

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

The description clearly states the tool's purpose: 'Get detailed usage instructions and workflow examples for Browser[X]MCP'. It uses a specific verb ('Get') and identifies the resource (usage instructions and workflow examples). This distinguishes it from sibling browser automation tools, making its role as a help/instruction tool unambiguous.

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

Usage Guidelines3/5

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

The description implies usage—it's a help tool for obtaining instructions—but does not explicitly state when to use it over other tools or mention any alternatives. There are no exclusions or contextual triggers provided. The usage guidance is implied rather than explicit, which fits a score of 3.

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

input_textA

Input text into a form field using virtual canvas data

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesText to input
element_idYesElement ID from virtual canvas data
clear_firstNoClear existing text first

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only hints at a dependency on 'virtual canvas data' and does not explain key behaviors such as default clearing (though schema mentions it), focus handling, side effects, or failure modes. This is a significant gap for a mutation-like 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, focused sentence that front-loads the action ('Input text') and specifies the context ('form field', 'virtual canvas data'). It is concise and contains no 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 should clarify prerequisites and error conditions. It vaguely references 'virtual canvas data' but does not explicitly mention that extract_virtual_canvas should be called first or what constitutes a valid element_id. It also omits what happens on failure, leaving important gaps for an agent.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters are already well-documented. The description merely echoes the schema's element_id reference and adds no extra constraints, format details, or relationships. It meets the baseline for high coverage but does not exceed it.

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

Purpose5/5

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

The description clearly states the tool's function with a specific verb ('Input'), a target resource ('form field'), and a distinctive data source ('virtual canvas data'). This distinguishes it from sibling tools like click_element_by_xpath, which handles clicks, not text entry.

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

Usage Guidelines4/5

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

The description gives clear context for when to use the tool—entering text into form fields—and the mention of 'virtual canvas data' implies it works in conjunction with canvas extraction tools. However, it does not explicitly discuss alternatives or when not to use it, so it falls short of a top score.

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

list_navigation_elementsB

Step 1: List all available interactive elements on the page with descriptions

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoURL to analyze (optional if page already loaded)
group_byNoHow to group the elementspurpose

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description must convey behavioral expectations. The verb 'List' suggests a read-only operation, but the description does not explicitly state that the page will not be modified, nor does it disclose potential side effects, whether a page must be loaded, or any other behavioral traits.

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 that immediately communicates the tool's purpose. There is no fluff or unnecessary detail, making it highly concise and front-loaded.

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 (two optional parameters, no output schema), the short description is mostly sufficient. However, it omits details about the output format or what 'descriptions' entail, and the ambiguity about 'interactive elements' vs. 'navigation elements' leaves a gap in completeness.

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 provides descriptions for both parameters (url and group_by), achieving 100% schema description coverage. The description itself adds no parameter-specific information, so it does not elevate beyond the baseline.

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 ('List') and resource ('all available interactive elements on the page'), with a mention of 'descriptions' for output. However, the tool name is 'list_navigation_elements' while the description says 'interactive elements', which is a broader scope; this slight mismatch could confuse an agent about exactly what is listed.

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

Usage Guidelines2/5

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

No explicit when-to-use or alternative guidance is provided. The prefix 'Step 1' implies it is a preliminary action, but it does not explain under what circumstances to call this tool versus siblings like 'get_element_details' or 'extract_virtual_canvas'.

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

scroll_pageB

Scroll the page in specified direction

ParametersJSON Schema
NameRequiredDescriptionDefault
amountNoScroll amount in pixels (optional, defaults to viewport size)
directionYesScroll direction

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It only states the basic action without mentioning behavior such as whether the scroll is smooth or instant, whether it waits for page stability, how the 'amount' parameter interacts with viewport behavior, or any side effects. This is a significant gap even for a simple scroll 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, concise sentence: 'Scroll the page in specified direction'. No filler words, front-loaded verb, and it is efficient for a simple tool. It could arguably be more detailed, but as a concise statement it earns full marks.

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

Completeness3/5

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

For a low-complexity tool with full schema coverage, the description is basic but sufficient to convey the core operation. However, it lacks usage guidelines, behavioral details, and information about edge cases (e.g., horizontal scroll support), making it adequate but not complete. The absence of annotations and output schema further limits completeness.

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 provides descriptions for both parameters (direction with enum values, amount with default and unit), achieving 100% schema description coverage. The tool description adds no extra parameter semantics, so the baseline of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the action ('Scroll') and the target ('the page'), with a qualifier 'in specified direction' that outlines the core purpose. It is sufficiently specific and distinguishes from sibling navigation tools like navigate_browser, though it lacks explicit mention of scrolling to top/bottom or pixel-based control, which are captured in the schema.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as navigate_browser or execute_atomic_action. There is no mention of context, exclusions, or prerequisites, leaving the agent to 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.

start_browserC

Start browser instance for testing

ParametersJSON Schema
NameRequiredDescriptionDefault
headlessNoRun browser in headless mode

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only states 'Start browser instance' without revealing side effects (e.g., opening a new window, network access), whether it blocks, or what happens if called repeatedly. This is minimal and insufficient for an agent to anticipate consequences.

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

Conciseness4/5

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

The description is a single concise sentence with no wasted words. It is appropriately brief for a simple tool, though it could incorporate some usage hints without becoming verbose.

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 role as a likely entry point for browser automation, the description lacks essential context: no mention of when to invoke it, what it sets up for subsequent tools, or any prerequisites. It is incomplete for an agent trying to decide when and how to use it, even with a simple schema.

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%: the only parameter 'headless' is fully described in the schema. The description adds no parameter-specific information, but the baseline of 3 is appropriate since the schema already documents the parameter.

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 'Start' and resource 'browser instance', indicating the tool initializes a browser session. It implicitly distinguishes from sibling tools that perform navigation, input, or extraction, but the purpose is somewhat generic ('for testing') and could be more specific about the initialization role.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, nor any mention of prerequisites or typical sequencing (e.g., call before navigate_browser). The description simply states what it does without context on appropriate usage.

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

Tool Schema Changelog

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

  1. 14 tool updatesv1.0.0-beta.1
    • First observedbatch_actions
    • First observedclick_element_by_xpath
    • First observedcompare_with_screenshot
    • First observedevaluate_in_page
    • First observedexecute_atomic_action
    • First observedextract_virtual_canvas
    • First observedget_element_details
    • First observedget_performance_metrics
    • First observedhelp
    • First observedinput_text
    • First observedlist_navigation_elements
    • First observednavigate_browser
    • First observedscroll_page
    • First observedstart_browser

TDQS

B3.4/5.0

Scored across 14 tools

Disambiguation4/5

Most tools target distinct actions (navigate, input, scroll, start, etc.), and the two-step element workflow is clear. However, click_element_by_xpath and execute_atomic_action both can perform clicks, and evaluate_in_page could also replicate any action, creating minor overlap. Descriptions mostly clarify but ambiguity exists in action execution tools.

Naming Consistency4/5

Almost all tools follow snake_case verb_noun pattern, with verbs like extract, navigate, input, scroll, start, list, get, execute, evaluate, click. Inconsistencies: 'compare_with_screenshot' uses preposition structure, and 'batch_actions' uses a noun as verb, but overall readable and predictable.

Tool Count5/5

14 tools is within the ideal range for a browser automation server, covering navigation, interaction, element inspection, and performance utilities without feeling bloated.

Completeness3/5

The set covers navigation, interaction, element inspection, and even performance testing, but lacks a browser shutdown/close tool and explicit waiting/synchronization operations, which are common in browser automation. Core workflows are present but the lifecycle is incomplete.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers