Skip to main content
Glama
Euraxluo

Browser-MCP Server

by Euraxluo

Session-Based Browser-Use FastMCP Server

CI codecov

English | 中文

English

A modern Model Context Protocol (MCP) server that provides advanced browser automation capabilities using the FastMCP framework. Features session-based instance management, TTL cleanup, PDF generation, file downloads, cookie management, and comprehensive browser configuration options. All browser operations are implemented via browser-use.

🎯 Key Features

  • Session-Based Management: Each MCP session gets its own isolated browser instance automatically

  • Advanced Browser Control: Full browser automation with Playwright backend (via browser-use)

  • PDF Generation: Convert web pages to PDF with custom formatting options

  • File Operations: Download/upload files, manage file system, and access all temp files

  • Cookie Management: Set, get, and manage browser cookies for authentication

  • Screenshot Capture: Take full-page, viewport, or element screenshots

  • Tab Management: Create, switch, and close browser tabs

  • Content Extraction: Extract and search page content

  • Session Persistence: Automatic cleanup with configurable TTL

  • Multi-Instance Support: Run multiple isolated browser sessions

  • Configurable Security: All browser security settings are configurable via API

🚀 Quick Start

  1. Install Dependencies:

    Using uv (recommended):

    uv sync --all-extras
  2. Install the Browser:

    uv run playwright install --with-deps chromium
  3. Start the Server:

    Using uv (recommended):

    uv run main.py
  4. Basic Usage (Direct SessionBrowserManager):

    # Direct usage without MCP protocol (for testing/development)
    from browser_fastmcp_server import SessionBrowserManager, BrowserConfig
    import asyncio
    
    async def main():
        # Create session manager
        manager = SessionBrowserManager(max_instances=5, default_ttl=300)
        await manager.start_cleanup_task()
        
        # Create a new browser session
        session_id = "test_session_123"
        instance = await manager.get_or_create_session_instance(
            session_id, 
            BrowserConfig(headless=True)
        )
        
        # Navigate to a website
        browser_session = instance.browser_session
        await browser_session.navigate("https://example.com")
        
        # Get page elements
        state_summary = await browser_session.get_state_summary(cache_clickable_elements_hashes=True)
        print(f"Interactive elements: {len(state_summary.selector_map)}")
        
        # Take a screenshot
        page = await browser_session.get_current_page()
        screenshot_bytes = await page.screenshot(full_page=True)
        
        # Close session when done
        await manager.close_session(session_id)
        await manager.shutdown()
    
    if __name__ == "__main__":
        asyncio.run(main())

🛠️ Run Tests

Install test dependencies and run all tests:

uv run python -m pytest test_browser_workflow_test.py test_browser_fastmcp_client.py test_browser_test.py -v

🛠️ Core Tools (API)

Session Management

  • create_chrome_instance(headless, viewport_width, viewport_height) → Create a new browser session, returns session_id

  • close_instance(session_id) → Close a specific session

  • get_instance_info(session_id) → Get info for a session

  • check_browser_health(session_id) → Check the health status of a browser session and provide recovery suggestions

  • get_browser_status() → List all sessions

  • close_all_instances() → Close all sessions

Browser Configuration

  • set_browser_config(session_id, headless, no_sandbox, user_agent, viewport_width, viewport_height, disable_web_security) → Set browser config (restart if needed)

  • get_browser_config(session_id) → Get current config

Navigation & Page Control

  • navigate_to(session_id, url, new_tab=False) → Go to any URL (optionally in new tab)

  • navigate_back(session_id) / navigate_forward(session_id) → History navigation

  • refresh_page(session_id) → Refresh the current page

  • get_page_state(session_id) → List interactive elements with indices

Tab Management

  • get_tabs_info(session_id) → List all open tabs

  • switch_tab(session_id, page_id) → Switch between tabs

  • close_tab(session_id, page_id) → Close specific tab

Element Interaction

  • click_element(session_id, index) → Click element by index

  • click_element_by_xpath(session_id, xpath) → Click element by XPath

  • input_text(session_id, index, text) → Type into form fields

  • set_element_value(session_id, index, value) → Set input/select value directly

  • get_element_info(session_id, index=None, xpath=None) → Get element info (by index or xpath)

  • send_keys(session_id, keys) → Send keyboard shortcuts

  • upload_file(session_id, index, file_path) → Upload files to forms

  • get_dropdown_options(session_id, index) → Inspect select elements

Media & Files

  • take_screenshot(session_id, target=None, width=None, height=None, full_page=True, quality=90, format="png") → Capture screenshots

  • generate_pdf(session_id, url=None, html_content=None, output_filename=None, ...) → Save page as PDF

  • download_file(session_id, url, output_filename=None, timeout=30) → Download files from URLs

  • download_image(session_id, image_url, output_filename=None, timeout=30) → Download images specifically

  • set_cookie(session_id, name, value, domain, path, http_only, secure, same_site, expires, max_age) → Set browser cookies

  • get_cookies(session_id, domain=None) → Retrieve current cookies

Utilities

  • scroll_page(session_id, direction="down") → Scroll up/down

  • extract_content(session_id, query) → Extract text content

  • wait(seconds) → Pause execution

  • browser_tips() → Get automation best practices

  • search_bing(session_id, query) → Bing search

📚 Resources (REST-style)

  • browser://status → Manager and sessions status

  • browser://instances → All sessions info

  • browser://instance/{id}/page → Session page info

  • browser://instance/{id}/tabs → Session tabs

  • browser://instance/{id}/screenshots → Session screenshots

  • browser://instance/{id}/status → Session status (detailed)

  • browser://instance/{id}/files → Session temp files

  • browser://instance/{id}/cookies → Session cookies

  • browser://instance/{id}/file/{relative_path} → Read a file in session temp

  • browser://help → This help

🔧 Configuration

Configure the server using environment variables:

# Maximum number of concurrent browser instances
BROWSER_MAXIMUM_INSTANCES=10

# Session TTL in seconds (default: 30 minutes)
BROWSER_INSTANCE_TTL=1800

# Command execution timeout in seconds
BROWSER_EXECUTE_TIMEOUT=30

# Cleanup interval in seconds
BROWSER_CLEANUP_INTERVAL=60

📝 Prompts

Built-in prompts for common automation scenarios:

  • web_testing(url, test_scenario) → Web testing workflows

  • data_extraction(url, data_type) → Data extraction strategies

  • form_filling(url, form_data) → Automated form filling (returns conversation)

  • automation_troubleshooting() → Debugging help

🔌 MCP Integration

Using with Claude Desktop

  1. Add to Claude Desktop Configuration:

    Edit your Claude Desktop configuration file (usually at ~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

    {
      "mcpServers": {
        "browser-mcp": {
          "command": "uv",
          "args": ["run", "fastmcp", "run", "/path/to/browser-mcp/browser_fastmcp_server.py"],
          "env": {
            "BROWSER_MAXIMUM_INSTANCES": "5",
            "BROWSER_INSTANCE_TTL": "1800"
          }
        }
      }
    }
  2. Restart Claude Desktop to load the MCP server

  3. Start Using: The browser automation tools will now be available in your Claude conversations

Using with MCP Client (Two Ways)

Method 1: Network-based MCP Client (via HTTP/SSE)

import asyncio
from mcp import ClientSession, SSEClientTransport

async def main():
    # Connect to the running server via network
    transport = SSEClientTransport("http://localhost:8000/sse")
    
    async with ClientSession(transport) as session:
        # Initialize session
        await session.initialize()
        
        # Start browser
        info = await session.call_tool("create_chrome_instance", {"headless": True})
        session_id = info["session_id"]
        
        # Navigate to website
        await session.call_tool("navigate_to", {"session_id": session_id, "url": "https://example.com"})
        
        # Take screenshot
        await session.call_tool("take_screenshot", {"session_id": session_id})
        
        # Close session
        await session.call_tool("close_instance", {"session_id": session_id})

if __name__ == "__main__":
    asyncio.run(main())

Method 2: Direct Client (No Network)

import asyncio
from fastmcp import Client
from browser_fastmcp_server import mcp as browsers_mcp

async def main():
    # Direct client connection (no network)
    client = Client(browsers_mcp)
    
    async with client:
        # Start browser
        session = await client.call_tool("create_chrome_instance", {"headless": True})
        session_id = session.data.session_id
        
        # Navigate to website
        await client.call_tool("navigate_to", {"session_id": session_id, "url": "https://example.com"})
        
        # Take screenshot
        await client.call_tool("take_screenshot", {"session_id": session_id})
        
        # Close session
        await client.call_tool("close_instance", {"session_id": session_id})

if __name__ == "__main__":
    asyncio.run(main())

🔒 Authentication

For server deployments requiring authentication, modify main.py to set an AuthProvider before startup:

Basic Authentication:

from fastmcp.auth import BasicAuth

# Add this before mcp.run()
mcp.auth = BasicAuth(username="admin", password="password")

JWT Authentication (Recommended for Production):

For more advanced authentication, we recommend using fastmcp-authentication:

from fastmcp_authentication import BearerAuthProvider

JWKS_URI = "http://localhost:8080/.well-known/jwks.json"
auth = BearerAuthProvider(
    jwks_uri=JWKS_URI,
    issuer="http://localhost:8080",
    audience="localhost:8080",
    algorithm="RS256"
)

mcp.auth = auth

💡 Use Cases

  • Web Testing: Automated functional, security, and performance testing

  • Data Scraping: Extract structured data from websites

  • Form Automation: Fill and submit web forms programmatically

  • Content Monitoring: Track changes in web content

  • Screenshot Documentation: Capture visual evidence for reports

  • PDF Generation: Convert web pages to PDF documents

  • Session Management: Handle authenticated workflows

🔒 Security Features

  • Session isolation between MCP clients

  • Secure cookie management with HttpOnly and Secure flags

  • Configurable browser security settings (CORS, sandbox, etc.)

  • Automatic cleanup of temporary files

  • TTL-based session expiration

🐳 Docker Usage

Build the image:

docker build -t browser-mcp .

Run the server (default: port 8000, SSE transport):

docker run -p 8000:8000 browser-mcp

You can override startup parameters via environment variables:

docker run -e MCP_PORT=9000 -e MCP_TRANSPORT=http -e MCP_HOST=127.0.0.1 -p 9000:9000 browser-mcp

Related MCP server: Browser Use MCP Server

Chinese

基于会话的浏览器自动化 FastMCP 服务器,提供先进的浏览器自动化功能,使用 FastMCP 框架构建。所有浏览器操作均通过 browser-use 实现。

🎯 核心特性

  • 基于会话的管理: 每个 MCP 会话自动获得独立的浏览器实例

  • 高级浏览器控制: 基于 Playwright 的完整浏览器自动化(由 browser-use 提供)

  • PDF 生成: 将网页转换为 PDF,支持自定义格式选项

  • 文件操作: 下载/上传文件,管理临时文件目录

  • Cookie 管理: 设置、获取和管理浏览器 Cookie 用于身份验证

  • 截图捕获: 全页面、视口或元素截图

  • 标签页管理: 创建、切换和关闭浏览器标签页

  • 内容提取: 提取和搜索页面内容

  • 会话持久化: 自动清理,可配置 TTL

  • 多实例支持: 运行多个隔离的浏览器会话

  • 可配置安全性: 所有浏览器安全设置均可通过 API 配置

🚀 快速开始

  1. 安装依赖:

    使用 uv(推荐):

    uv sync --all-extras
  2. 安装浏览器:

    uv run playwright install --with-deps chromium
  3. 启动服务器:

    使用 uv(推荐):

    uv run main.py
  4. 基本使用(直接使用 SessionBrowserManager):

    # 直接使用,不通过 MCP 协议(用于测试/开发)
    from browser_fastmcp_server import SessionBrowserManager, BrowserConfig
    import asyncio
    
    async def main():
        # 创建会话管理器
        manager = SessionBrowserManager(max_instances=5, default_ttl=300)
        await manager.start_cleanup_task()
        
        # 创建新浏览器会话
        session_id = "test_session_123"
        instance = await manager.get_or_create_session_instance(
            session_id, 
            BrowserConfig(headless=True)
        )
        
        # 导航到网站
        browser_session = instance.browser_session
        await browser_session.navigate("https://example.com")
        
        # 获取页面元素
        state_summary = await browser_session.get_state_summary(cache_clickable_elements_hashes=True)
        print(f"交互元素: {len(state_summary.selector_map)}")
        
        # 截图
        page = await browser_session.get_current_page()
        screenshot_bytes = await page.screenshot(full_page=True)
        
        # 完成后关闭会话
        await manager.close_session(session_id)
        await manager.shutdown()
    
    if __name__ == "__main__":
        asyncio.run(main())

🛠️ 运行测试

安装测试依赖并运行所有测试:

uv run python -m pytest test_browser_workflow_test.py test_browser_fastmcp_client.py test_browser_test.py -v

🛠️ 核心工具(API)

会话管理

  • create_chrome_instance(headless, viewport_width, viewport_height) → 创建新浏览器会话,返回 session_id

  • close_instance(session_id) → 关闭指定会话

  • get_instance_info(session_id) → 获取会话信息

  • check_browser_health(session_id) → 检查浏览器会话的健康状态并提供恢复建议

  • get_browser_status() → 列出所有会话

  • close_all_instances() → 关闭所有会话

浏览器配置

  • set_browser_config(session_id, headless, no_sandbox, user_agent, viewport_width, viewport_height, disable_web_security) → 设置浏览器配置(如需重启自动重启)

  • get_browser_config(session_id) → 获取当前配置

导航和页面控制

  • navigate_to(session_id, url, new_tab=False) → 导航到 URL(可选新标签页)

  • navigate_back(session_id) / navigate_forward(session_id) → 历史记录导航

  • refresh_page(session_id) → 刷新当前页面

  • get_page_state(session_id) → 获取带索引的交互元素

标签页管理

  • get_tabs_info(session_id) → 列出所有打开的标签页

  • switch_tab(session_id, page_id) → 切换标签页

  • close_tab(session_id, page_id) → 关闭指定标签页

元素交互

  • click_element(session_id, index) → 按索引点击元素

  • click_element_by_xpath(session_id, xpath) → 按 XPath 点击元素

  • input_text(session_id, index, text) → 在表单字段中输入文本

  • set_element_value(session_id, index, value) → 直接设置输入/选择值

  • get_element_info(session_id, index=None, xpath=None) → 获取元素信息(按索引或 xpath)

  • send_keys(session_id, keys) → 发送键盘快捷键

  • upload_file(session_id, index, file_path) → 上传文件到表单

  • get_dropdown_options(session_id, index) → 检查 select 元素

媒体和文件

  • take_screenshot(session_id, target=None, width=None, height=None, full_page=True, quality=90, format="png") → 截图

  • generate_pdf(session_id, url=None, html_content=None, output_filename=None, ...) → 保存页面为 PDF

  • download_file(session_id, url, output_filename=None, timeout=30) → 下载文件

  • download_image(session_id, image_url, output_filename=None, timeout=30) → 下载图片

  • set_cookie(session_id, name, value, domain, path, http_only, secure, same_site, expires, max_age) → 设置 Cookie

  • get_cookies(session_id, domain=None) → 获取当前 Cookie

实用工具

  • scroll_page(session_id, direction="down") → 上下滚动

  • extract_content(session_id, query) → 提取文本内容

  • wait(seconds) → 暂停执行

  • browser_tips() → 获取自动化最佳实践

  • search_bing(session_id, query) → Bing 搜索

📚 资源(REST 风格)

  • browser://status → 管理器和会话状态

  • browser://instances → 所有会话信息

  • browser://instance/{id}/page → 会话页面信息

  • browser://instance/{id}/tabs → 会话标签页

  • browser://instance/{id}/screenshots → 会话截图

  • browser://instance/{id}/status → 会话详细状态

  • browser://instance/{id}/files → 会话临时文件

  • browser://instance/{id}/cookies → 会话 Cookie

  • browser://instance/{id}/file/{relative_path} → 读取会话临时文件

  • browser://help → 帮助

🔧 配置

使用环境变量配置服务器:

# 最大并发浏览器实例数
BROWSER_MAXIMUM_INSTANCES=10

# 会话 TTL(秒)(默认:30分钟)
BROWSER_INSTANCE_TTL=1800

# 命令执行超时(秒)
BROWSER_EXECUTE_TIMEOUT=30

# 清理间隔(秒)
BROWSER_CLEANUP_INTERVAL=60

📝 提示

常见自动化场景的内置 prompt:

  • web_testing(url, test_scenario) → Web 测试工作流

  • data_extraction(url, data_type) → 数据提取策略

  • form_filling(url, form_data) → 自动表单填写(返回对话)

  • automation_troubleshooting() → 调试帮助

🔌 MCP 集成

与 Claude Desktop 一起使用

  1. 添加到 Claude Desktop 配置:

    编辑 Claude Desktop 配置文件(macOS 上通常位于 ~/Library/Application Support/Claude/claude_desktop_config.json):

    {
      "mcpServers": {
        "browser-mcp": {
          "command": "uv",
          "args": ["run", "fastmcp", "run", "/path/to/browser-mcp/browser_fastmcp_server.py"],
          "env": {
            "BROWSER_MAXIMUM_INSTANCES": "5",
            "BROWSER_INSTANCE_TTL": "1800"
          }
        }
      }
    }
  2. 重启 Claude Desktop 以加载 MCP 服务器

  3. 开始使用: 浏览器自动化工具现在可在您的 Claude 对话中使用

与 MCP 客户端一起使用(两种方式)

方式一:基于网络的 MCP 客户端(通过 HTTP/SSE)

import asyncio
from mcp import ClientSession, SSEClientTransport

async def main():
    # 通过网络连接到运行的服务器
    transport = SSEClientTransport("http://localhost:8000/sse")
    
    async with ClientSession(transport) as session:
        # 初始化会话
        await session.initialize()
        
        # 启动浏览器
        info = await session.call_tool("create_chrome_instance", {"headless": True})
        session_id = info["session_id"]
        
        # 导航到网站
        await session.call_tool("navigate_to", {"session_id": session_id, "url": "https://example.com"})
        
        # 截图
        await session.call_tool("take_screenshot", {"session_id": session_id})
        
        # 关闭会话
        await session.call_tool("close_instance", {"session_id": session_id})

if __name__ == "__main__":
    asyncio.run(main())

方式二:直接客户端(无网络)

import asyncio
from fastmcp import Client
from browser_fastmcp_server import mcp as browsers_mcp

async def main():
    # 直接客户端连接(无网络)
    client = Client(browsers_mcp)
    
    async with client:
        # 启动浏览器
        session = await client.call_tool("create_chrome_instance", {"headless": True})
        session_id = session.data.session_id
        
        # 导航到网站
        await client.call_tool("navigate_to", {"session_id": session_id, "url": "https://example.com"})
        
        # 截图
        await client.call_tool("take_screenshot", {"session_id": session_id})
        
        # 关闭会话
        await client.call_tool("close_instance", {"session_id": session_id})

if __name__ == "__main__":
    asyncio.run(main())

🔒 身份验证

对于需要身份验证的服务器部署,在启动前修改 main.py 设置 AuthProvider:

基本身份验证:

from fastmcp.auth import BasicAuth

# 在 mcp.run() 之前添加
mcp.auth = BasicAuth(username="admin", password="password")

JWT 身份验证(生产环境推荐):

对于更高级的身份验证,我们推荐使用 fastmcp-authentication

from fastmcp_authentication import BearerAuthProvider

JWKS_URI = "http://localhost:8080/.well-known/jwks.json"
auth = BearerAuthProvider(
    jwks_uri=JWKS_URI,
    issuer="http://localhost:8080",
    audience="localhost:8080",
    algorithm="RS256"
)

mcp.auth = auth

💡 使用场景

  • Web 测试: 自动化功能、安全和性能测试

  • 数据抓取: 从网站提取结构化数据

  • 表单自动化: 程序化填写和提交 Web 表单

  • 内容监控: 跟踪 Web 内容变化

  • 截图文档: 为报告捕获视觉证据

  • PDF 生成: 将网页转换为 PDF 文档

  • 会话管理: 处理身份验证工作流

🔒 安全功能

  • MCP 客户端之间的会话隔离

  • 支持 HttpOnly 和 Secure 标志的安全 Cookie 管理

  • 可配置的浏览器安全设置(CORS、沙箱等)

  • 临时文件自动清理

  • 基于 TTL 的会话过期

🐳 Docker 用法

构建镜像:

docker build -t browser-mcp .

运行服务(默认8000端口,SSE模式):

docker run -p 8000:8000 browser-mcp

可通过环境变量覆盖启动参数:

docker run -e MCP_PORT=9000 -e MCP_TRANSPORT=http -e MCP_HOST=127.0.0.1 -p 9000:9000 browser-mcp

Available Tools

35 tools
browser_tipsC

LLM-oriented best practices and practical tips for robust, step-by-step use of browser MCP tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior3/5

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

With no annotations provided, the description carries full burden. It discloses that the tool provides guidance/tips (a read-only informational function), but doesn't specify behavioral traits like whether it returns structured data, if it's interactive, or if it has any side effects. The description is neutral but lacks depth about how the tool behaves.

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, reasonably concise sentence that gets straight to the point. It could be slightly more front-loaded with a clearer action verb, but it efficiently communicates the core idea without unnecessary words or structure.

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 has 0 parameters, annotations, but has an output schema, the description is minimally adequate. It explains what the tool provides (tips/guidance) but doesn't detail the format or content of the output, relying on the output schema for that. For a guidance tool among many action-oriented siblings, more context about when and how to use it would be helpful.

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 the baseline is 4. The description doesn't need to explain parameters since none exist, and it appropriately focuses on the tool's purpose rather than parameter documentation.

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

Purpose2/5

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

The description states it provides 'best practices and practical tips' for browser MCP tools, which gives a general purpose but is vague about what the tool actually does. It doesn't specify a clear verb+resource combination (like 'display tips' or 'retrieve guidance'), and doesn't distinguish itself from sibling tools that perform concrete browser actions.

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

Usage Guidelines2/5

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

The description mentions 'LLM-oriented best practices' and 'robust, step-by-step use', implying it should be used for guidance when working with browser tools, but provides no explicit when-to-use rules, no exclusions, and no alternatives. It doesn't specify whether to use this before, during, or after browser operations.

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

check_browser_healthC

Check the health status of a browser session and provide recovery suggestions

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 checking health and providing recovery suggestions, but doesn't specify what constitutes 'health status' (e.g., connectivity, errors, performance), what recovery suggestions entail, or whether this is a read-only operation. For a tool with no annotations, this leaves significant gaps in understanding its behavior and 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 clearly states the tool's purpose without unnecessary words. It's front-loaded with the core action and outcome, making it easy to parse quickly. Every part of the sentence contributes directly to understanding the tool.

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 has an output schema (which should cover return values), the description's main job is to clarify purpose and usage. It does a decent job on purpose but lacks usage guidelines and parameter details. For a health-check tool with no annotations, it's minimally adequate but leaves gaps in behavioral context and parameter understanding.

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

Parameters2/5

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

The input schema has 1 parameter with 0% description coverage, and the tool description provides no information about parameters. It doesn't explain what 'session_id' represents, how to obtain it, or its format. With low schema coverage, the description fails to compensate, leaving the parameter's meaning unclear.

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: 'Check the health status of a browser session and provide recovery suggestions'. It specifies the verb ('check'), resource ('browser session'), and outcome ('provide recovery suggestions'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'get_browser_status' or 'get_page_state', which might also provide status information.

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, timing, or how it differs from sibling tools such as 'get_browser_status' or 'get_page_state', which could overlap in functionality. Without this context, users 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.

click_elementC

Click an interactive element by index with confirmation

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
indexYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/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 'with confirmation', hinting at a safety or feedback mechanism, but doesn't elaborate on what confirmation entails (e.g., success/failure response, delays, or side effects). It fails to address critical behaviors like error handling, performance implications, or interaction with browser state, leaving significant gaps.

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: 'Click an interactive element by index with confirmation'. It is front-loaded and appropriately sized for the tool's complexity, making it easy to parse 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?

Given the tool's complexity (interactive browser operation), lack of annotations, and low schema coverage, the description is incomplete. It doesn't cover parameter meanings, behavioral details, or usage context. While an output schema exists (which might explain return values), the description fails to provide sufficient guidance for safe and effective tool invocation in a browser automation setting.

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

Parameters1/5

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

Schema description coverage is 0%, meaning parameters 'session_id' and 'index' have no descriptions in the schema. The tool description adds no meaning beyond the schema—it doesn't explain what 'session_id' refers to (e.g., browser instance) or how 'index' is defined (e.g., zero-based, element order). With 2 undocumented parameters and no compensation in the description, this is inadequate.

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 'Click an interactive element by index with confirmation' states the action (click) and target (interactive element) but is vague about what 'by index' means in practice and doesn't distinguish it from sibling 'click_element_by_xpath'. It provides a basic purpose but lacks specificity about the indexing system or what constitutes an 'interactive element'.

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 guidance on when to use this tool versus alternatives like 'click_element_by_xpath' is provided. The description implies usage for clicking elements via index, but it doesn't specify prerequisites (e.g., needing an active browser session) or exclusions, leaving the agent to infer context from sibling tools.

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 interactive element by XPath with confirmation

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
xpathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions 'with confirmation' which hints at some interactive or safety behavior, but doesn't clarify what this means (e.g., user prompt, automatic check, error handling). It fails to address critical aspects like error conditions (e.g., invalid XPath, element not found), performance implications, or browser session requirements beyond the session_id parameter.

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

Conciseness4/5

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

The description is a single, focused sentence that directly states the tool's purpose. While it could be more informative, it wastes no words and is appropriately sized for a basic action tool. The structure is front-loaded with the core functionality.

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 moderate complexity (browser interaction with XPath), no annotations, and an output schema (which handles return values), the description is minimally adequate but incomplete. It covers the basic action but lacks crucial context about behavior, parameters, and differentiation from siblings, leaving gaps that could hinder effective use despite the output schema.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate but adds no parameter information. It doesn't explain what 'session_id' represents (browser instance, user session) or provide guidance on XPath syntax/format. The mention of 'confirmation' might relate to parameters but isn't linked to any specific input, leaving parameters essentially undocumented.

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

Purpose4/5

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

The description clearly states the action ('Click') and target ('an interactive element by XPath'), specifying the method of element identification. However, it doesn't explicitly differentiate from the sibling 'click_element' tool, which likely uses a different selector method, leaving some ambiguity about when to choose this specific XPath-based version.

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 'click_element' or other interaction tools. It mentions 'with confirmation' but doesn't explain what this confirmation entails or when it's required, offering minimal context for decision-making.

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

close_all_instancesA

Close all browser instances and delete all related data, only admin can use this tool

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/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 clearly states this is a destructive operation ('delete all related data') and specifies the permission requirement ('only admin can use this tool'). However, it doesn't describe what happens to active sessions, whether the operation is reversible, or what the output contains.

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 contains all essential information: the action, the scope, and the permission requirement. Every word earns its place with zero wasted text.

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

Completeness4/5

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

For a destructive admin-only tool with no parameters and an output schema, the description covers the critical aspects: what it does, its destructive nature, and permission requirements. The existence of an output schema means return values don't need explanation. However, it could benefit from mentioning irreversible consequences or confirmation requirements.

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?

With 0 parameters and 100% schema description coverage, the baseline would be 4. The description appropriately doesn't discuss parameters since none exist, which is correct for this tool's design.

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

Purpose5/5

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

The description clearly states the specific action ('Close all browser instances and delete all related data'), distinguishing it from the sibling 'close_instance' tool which likely closes a single instance. The verb+resource+scope combination is precise and unambiguous.

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

Usage Guidelines4/5

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

The description provides explicit context about when to use this tool ('only admin can use this tool'), which helps differentiate it from other browser management tools. However, it doesn't explicitly state when NOT to use it or name specific alternatives for partial cleanup scenarios.

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

close_instanceB

Close a specific Chrome browser instance by session_id, will delete the instance and all related data

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that closing 'will delete the instance and all related data', which indicates a destructive operation, but fails to detail critical aspects like whether this action is irreversible, requires specific permissions, or has side effects on other browser operations. This leaves significant gaps for a tool with clear destructive implications.

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 action and consequence without unnecessary words. Every part earns its place by stating the tool's purpose and behavioral impact directly.

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 complexity as a destructive operation with no annotations and an output schema (which reduces the need to describe return values), the description is minimally adequate. It covers the basic action and data deletion but lacks details on error conditions, dependencies, or integration with sibling tools, making it incomplete for safe and effective use.

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

Parameters3/5

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

The input schema has 0% description coverage, so the description must compensate. It adds meaning by specifying that 'session_id' identifies the 'specific Chrome browser instance' to close, which clarifies the parameter's role beyond the schema's basic type. However, it doesn't explain the format or source of 'session_id', such as whether it comes from 'create_chrome_instance' or other tools, leaving practical usage unclear.

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 ('specific Chrome browser instance by session_id'), distinguishing it from the sibling 'close_all_instances'. However, it doesn't specify what 'close' entails beyond deletion, leaving some ambiguity about whether it terminates processes or just cleans up data.

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 'close_all_instances' or 'close_tab', nor does it mention prerequisites such as needing an existing instance. It implies usage by specifying the 'session_id' parameter but lacks explicit context or exclusions.

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

close_tabB

Close a specific tab, if the tab is the last one, it will goto about:blank

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
page_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It adds useful context about what happens when closing the last tab (navigates to 'about:blank'), which is a behavioral trait not inferable from the schema. However, it doesn't cover other aspects like error handling, permissions needed, or the effect on browser state beyond this specific case, leaving 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 with a single sentence that is front-loaded with the core action ('Close a specific tab') and adds a conditional behavioral note. Every word earns its place, and there is no redundancy or unnecessary elaboration, 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 has an output schema (which likely covers return values), the description doesn't need to explain outputs. However, as a mutation tool with no annotations and 0% schema coverage, the description is incomplete: it lacks parameter details, error conditions, and broader behavioral context. The added note about the last tab scenario is helpful but insufficient for full completeness.

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

Parameters2/5

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

The input schema has 0% description coverage, and the tool description provides no information about the parameters (session_id and page_id). The description does not compensate for this lack by explaining what these parameters mean, how to obtain them, or their roles in identifying the tab to close, resulting in inadequate parameter semantics.

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 a specific tab') and the resource ('tab'), making the purpose immediately understandable. It distinguishes itself from sibling tools like 'close_all_instances' or 'close_instance' by focusing on individual tabs. However, it doesn't explicitly differentiate from 'switch_tab' in terms of closing vs. switching, which slightly reduces specificity.

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 by mentioning the condition 'if the tab is the last one, it will goto about:blank', which suggests when this tool might be appropriate (e.g., for closing tabs in a browser session). However, it lacks explicit guidance on when to use this vs. alternatives like 'close_all_instances' or 'close_instance', and no prerequisites or exclusions are stated, leaving some ambiguity.

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

create_chrome_instanceB

Create a new Chrome browser instance and return session_id (UUID)

ParametersJSON Schema
NameRequiredDescriptionDefault
headlessNo
viewport_widthNo
viewport_heightNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
configYesBrowser configuration
temp_dirYesTemporary directory path
last_usedYesLast usage timestamp
created_atYesCreation timestamp
session_idYesSession ID
active_tabsYesNumber of active tabs
current_urlYesCurrent page URL
active_tab_idYesActive tab ID
current_titleYesCurrent page title
screenshot_countYesNumber of screenshots taken

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It discloses that a session_id (UUID) is returned, which is useful behavioral context. However, it lacks critical details: whether this consumes significant resources, if there are rate limits on instance creation, what happens if too many instances are open, or if it requires specific permissions. For a tool that likely launches a browser process, 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 action ('Create a new Chrome browser instance') and key outcome ('return session_id'). There is zero waste—every word contributes essential information without redundancy or fluff.

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 complexity (creating a browser instance), no annotations, and an output schema (which likely covers the session_id return), the description is minimally complete. It states the purpose and return value, but lacks context on resource usage, error conditions, or integration with sibling tools. For a tool with potential side effects (launching processes), more behavioral detail would be helpful, but the output schema reduces the burden.

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

Parameters3/5

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

Schema description coverage is 0%, so the schema provides no parameter descriptions. The description adds no parameter information beyond what's inferred from the schema (e.g., 'headless' might control headless mode). It doesn't explain what 'headless' means, why viewport dimensions matter, or default behaviors. With 3 parameters and 0% coverage, the description fails to compensate adequately, but it's not misleading, so a baseline 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 ('Create a new Chrome browser instance') and the resource ('Chrome browser instance'), with the specific outcome of returning a session_id. It distinguishes from siblings like 'get_instance_info' or 'close_instance' by focusing on creation rather than querying or termination. However, it doesn't explicitly differentiate from all siblings (e.g., 'set_browser_config' might also involve browser setup).

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 an existing instance must be closed first), when not to use it (e.g., for reusing instances), or refer to sibling tools like 'close_all_instances' for cleanup. Usage is implied only by the action of creation.

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

download_fileB

Download any file from URL to the temp directory. Use fetch+blob+a.download, if failed, fallback to goto+expect_download, maximum compatibility.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
urlYes
output_filenameNo
timeoutNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
successYesWhether download was successful
file_nameYesDownloaded filename
file_pathYesDownloaded file path
mime_typeYesFile MIME type
size_bytesYesFile size in bytes
download_timeYesDownload time in seconds

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations provided, the description carries full burden. It discloses implementation details (fetch+blob+a.download, fallback to goto+expect_download) and mentions 'maximum compatibility', which adds useful behavioral context. However, it doesn't cover important aspects like error handling, file size limits, or security considerations for a download operation.

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

Conciseness4/5

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

The description is appropriately concise with two sentences that each serve a purpose: the first states the core functionality, the second adds implementation details. It's front-loaded with the main purpose, though the technical implementation details might be more appropriate in a separate section.

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 has an output schema (which presumably documents return values), the description doesn't need to explain outputs. However, for a file download tool with 4 parameters and no annotations, the description should provide more guidance about parameter usage, error conditions, and security implications to be complete.

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

Parameters2/5

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

With 0% schema description coverage and 4 parameters, the description provides no information about any parameters. It doesn't explain what 'session_id' represents, how 'url' should be formatted, what 'output_filename' does, or what 'timeout' controls. The description fails to compensate for the complete lack of schema documentation.

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

Purpose4/5

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

The description clearly states the tool downloads files from URLs to a temp directory, specifying the verb 'download' and resource 'file from URL'. It distinguishes from sibling 'download_image' by handling 'any file' rather than just images, though it doesn't explicitly contrast with other download-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 Guidelines3/5

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

The description implies usage for downloading files with maximum compatibility via fallback mechanisms, but doesn't explicitly state when to use this tool versus alternatives like 'download_image' or 'upload_file'. It provides some context about compatibility but lacks clear when/when-not guidance.

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

download_imageC

Download a image from URL, it will download the image to the temp directory, and return the file path, it will open a new tab if the image is not from the same origin as the current page

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
image_urlYes
output_filenameNo
timeoutNo

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations provided, the description carries full burden. It discloses key behaviors: downloads to temp directory, returns file path, and opens new tab for cross-origin images. However, it lacks information about error handling, file format support, permissions needed, or rate limits. The description doesn't contradict annotations since none exist.

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 reasonably concise with two main clauses. However, the second clause about opening new tabs could be more clearly integrated. The description is front-loaded with the core functionality.

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 4 parameters, 0% schema coverage, no annotations, and no output schema, the description is insufficient. It doesn't explain what the return value looks like beyond 'file path', doesn't cover all parameters, and lacks error scenarios or limitations. The cross-origin behavior is helpful but incomplete.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It mentions 'URL' which relates to 'image_url' parameter, but doesn't explain the purpose of 'session_id', 'output_filename', or 'timeout'. The description adds minimal value beyond what parameter names already suggest.

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 'download' and resource 'image from URL', specifying it saves to temp directory and returns file path. However, it doesn't explicitly differentiate from sibling 'download_file' which appears to be a more general file download tool.

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

Usage Guidelines2/5

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

The description mentions 'it will open a new tab if the image is not from the same origin as the current page' which provides some behavioral context, but offers no explicit guidance on when to use this tool versus alternatives like 'download_file' or 'take_screenshot'. No prerequisites or exclusions are stated.

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

extract_contentB

Extract content from page based on query, including all frames/iframes

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions extraction from frames/iframes, which adds some context about scope, but fails to describe critical behaviors such as what 'extract' entails (e.g., text, HTML, structured data), performance implications, error handling, or authentication needs. This is inadequate for a tool with mutation-like implications.

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 clarifying detail about frames/iframes, making it appropriately sized and easy to parse.

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

Completeness3/5

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

Given 2 parameters with 0% schema coverage, no annotations, and an output schema present, the description is moderately complete. It covers the basic action and scope but lacks details on parameters, behavioral traits, and usage context. The output schema reduces the need to explain return values, but overall completeness is limited.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It implies 'query' is used to target content but doesn't explain its format or semantics (e.g., CSS selector, XPath, keyword). 'session_id' is not mentioned at all. The description adds minimal value beyond the schema, failing to fully address the coverage gap.

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 ('extract content') and the target ('from page based on query'), with the additional detail 'including all frames/iframes' that specifies scope. However, it doesn't explicitly differentiate from sibling tools like 'get_element_info' or 'get_page_state', which might also retrieve content, so it misses full 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., needing an active session), exclusions, or compare to siblings like 'get_element_info' for more targeted extraction. This leaves the agent with minimal context for tool selection.

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

generate_pdfB

Generate PDF from current page, URL, or HTML content

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
urlNo
html_contentNo
output_filenameNo
print_backgroundNo
margin_topNo
margin_bottomNo
margin_leftNo
margin_rightNo
paper_widthNo
paper_heightNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
size_kbYesFile size in KB
successYesWhether PDF generation was successful
file_nameYesPDF filename
file_pathYesGenerated PDF file path
page_countYesNumber of pages
source_urlYesSource URL if applicable

TDQS

B3/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure but provides minimal information. It states what the tool does but doesn't describe important behavioral aspects: whether it requires specific permissions, how it handles errors, what the output looks like (though there's an output schema), whether it's resource-intensive, or any rate limits. The description is functional but lacks operational context needed for safe and effective use.

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 8 words, front-loading the core functionality with zero wasted language. Every word earns its place by specifying both the action and the three input sources. The structure is optimal for quick comprehension while conveying essential information.

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 (11 parameters, 0% schema coverage, no annotations) and the presence of an output schema, the description is insufficiently complete. While the output schema may cover return values, the description doesn't address critical aspects: how to choose between the three input sources, what 'current page' means in relation to session_id, default behaviors, error conditions, or performance characteristics. For a tool with this many configuration options, more guidance is needed.

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

Parameters2/5

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

With 0% schema description coverage for 11 parameters, the description fails to compensate for this significant gap. It mentions three input sources (current page, URL, HTML content) which map to some parameters, but doesn't explain the relationship between session_id and 'current page', doesn't mention the numerous formatting parameters (margins, paper size, background printing), and provides no guidance on parameter interactions or requirements beyond what's obvious from the schema structure.

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 function as 'Generate PDF from current page, URL, or HTML content', specifying both the action (generate PDF) and the sources (current page, URL, HTML content). It distinguishes itself from sibling tools like 'take_screenshot' or 'download_file' by focusing specifically on PDF generation from web content. However, it doesn't explicitly differentiate from potential PDF-related siblings that might not exist in this list.

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 context by listing three input sources (current page, URL, or HTML content), suggesting when this tool is appropriate versus alternatives. However, it doesn't provide explicit guidance on when to choose between these sources or when to use this versus other output tools like 'take_screenshot' or 'download_file'. No exclusions or prerequisites are mentioned.

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

get_browser_configC

Get advanced browser configuration for a specific instance

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
configYesBrowser configuration
temp_dirYesTemporary directory path
last_usedYesLast usage timestamp
created_atYesCreation timestamp
session_idYesSession ID
active_tabsYesNumber of active tabs
current_urlYesCurrent page URL
active_tab_idYesActive tab ID
current_titleYesCurrent page title
screenshot_countYesNumber of screenshots taken

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'Get' which implies a read operation, but fails to specify if this requires special permissions, what the output includes (though an output schema exists), or any side effects like performance impacts. This is inadequate for a tool that likely interacts with browser instances.

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 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.

Completeness3/5

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

Given the tool has an output schema (which covers return values) and only one parameter, the description is somewhat complete but lacks critical context. It doesn't explain what 'advanced browser configuration' entails or how it differs from other get-* tools, leaving gaps in understanding the tool's full scope and use cases.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate, but it only vaguely references 'a specific instance' without explaining the 'session_id' parameter's meaning or format. Since there is only one parameter, the baseline is 4, but the description adds minimal value beyond the schema, resulting in a score of 3.

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

Purpose3/5

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

The description states the tool 'Get advanced browser configuration for a specific instance' clearly indicates it retrieves configuration data, with 'advanced' and 'specific instance' providing some specificity. However, it doesn't distinguish this from sibling tools like 'get_browser_status' or 'get_instance_info', leaving the exact scope and differentiation vague.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as 'get_browser_status' or 'get_instance_info'. The description implies it's for configuration retrieval but offers no context on prerequisites, timing, or exclusions, leaving the agent to guess based on tool names alone.

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

get_browser_statusA

Get current browser status, including all instances and their status,only admin can use this tool

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It adds important context about admin-only access, which is valuable behavioral information not captured elsewhere. However, it doesn't describe what 'browser status' includes beyond 'instances and their status', nor does it mention response format, error conditions, or whether this is a read-only operation (though 'Get' implies reading).

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 appropriately concise with two clauses that each add value: the core functionality and the admin restriction. It's front-loaded with the main purpose. While efficient, the phrasing could be slightly more polished ('only admin can use this tool' could be 'Requires admin privileges.').

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

Completeness4/5

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

Given the tool's simplicity (0 parameters, output schema exists), the description provides adequate context. The admin restriction is crucial information, and the purpose is clearly stated. With an output schema handling return values, the description doesn't need to explain response format. For a status-checking tool, this is reasonably 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 with 100% schema description coverage, so the schema already fully documents the parameter situation. The description appropriately doesn't discuss parameters since none exist. Baseline for 0 parameters is 4, and the description doesn't detract from this by incorrectly mentioning parameters.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Get current browser status, including all instances and their status.' This specifies the verb ('Get') and resource ('browser status'), and distinguishes it from siblings like 'get_instance_info' or 'get_page_state' by focusing on overall browser status rather than specific instances or page states. However, it doesn't explicitly differentiate from 'check_browser_health', 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 Guidelines4/5

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

The description provides clear context for usage with 'only admin can use this tool', establishing an important prerequisite. This helps the agent understand when NOT to use it (non-admin contexts). However, it doesn't explicitly mention when to choose this tool over alternatives like 'check_browser_health' or 'get_instance_info', nor does it provide exclusion criteria beyond admin requirements.

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

get_cookiesC

Get cookies from the browser

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
domainNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('Get cookies') but doesn't describe what the tool returns (e.g., cookie data format), whether it requires authentication, potential rate limits, or side effects. This leaves significant gaps for a tool that interacts with browser state.

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

Conciseness5/5

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

The description is extremely concise with a single sentence, 'Get cookies from the browser', which is front-loaded and wastes no words. Every part earns its place by stating the core action, though it could benefit from more detail.

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

Completeness3/5

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

Given the tool's moderate complexity (2 parameters, browser interaction) and the presence of an output schema (which handles return values), the description is minimally complete but lacks context. It doesn't cover behavioral aspects or parameter meanings, making it just adequate but with clear gaps for effective use.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for undocumented parameters. It adds no meaning beyond the schema, failing to explain what 'session_id' and 'domain' represent or how they affect cookie retrieval. With 2 parameters and no param info in the description, this is inadequate.

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 'Get cookies from the browser' states a clear verb ('Get') and resource ('cookies'), but it's vague about scope and doesn't distinguish from siblings like 'set_cookie' or 'get_browser_config'. It lacks specificity about what kind of cookies or what browser 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 like needing an active browser session, nor does it contrast with sibling tools like 'set_cookie' or 'get_browser_status', leaving usage context implied but not explicit.

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

get_dropdown_optionsC

Get options from a dropdown/select element, it will return the options of the element, and the id and name of the element

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
indexYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesDropdown ID
nameYesDropdown name
optionsYesDropdown options

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the return values (options, id, and name) but lacks critical details: whether this is a read-only operation, if it requires specific permissions, potential errors (e.g., invalid session or index), or performance implications. For a tool interacting with browser elements, this is a significant gap.

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

Conciseness4/5

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

The description is a single, efficient sentence that front-loads the core purpose. It avoids redundancy and wastes no words, though it could be slightly more structured (e.g., separating purpose from return values). Overall, it's appropriately concise for the tool's complexity.

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 moderate complexity (2 required parameters, browser interaction), no annotations, and an output schema (which handles return values), the description is minimally adequate. It covers the purpose and output but misses parameter semantics and behavioral context. With the output schema reducing the need to detail returns, it's complete enough for basic use but leaves gaps for robust agent operation.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for undocumented parameters. It mentions no parameters at all, failing to explain what 'session_id' and 'index' represent or how they relate to dropdown elements. This leaves both parameters semantically unclear beyond their titles in 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 clearly states the verb 'Get' and the resource 'options from a dropdown/select element', specifying what the tool does. It distinguishes from siblings like 'get_element_info' by focusing specifically on dropdown options rather than general element information. However, it doesn't explicitly contrast with other dropdown-related tools (none appear in the sibling list), 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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an active browser session), compare to similar tools like 'get_element_info', or specify scenarios where this tool is preferred. The agent must infer usage from the purpose alone.

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

get_element_infoC

Get detailed information about a DOM element (supports index or xpath query), can get the value of the element

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
indexNo
xpathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
tagYesHTML tag name
textYesElement text content
indexYesElement index
valueYesElement value
xpathYesElement XPath
attributesYesElement attributes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool can 'get the value of the element', which hints at read-only behavior, but doesn't cover critical aspects like error handling (e.g., if element not found), performance implications, or authentication needs for the session.

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, efficient sentence that front-loads the core purpose. However, it could be more structured by separating query methods from value retrieval, and the phrase 'can get the value of the element' feels tacked on rather than integrated.

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 3 parameters with 0% schema coverage and no annotations, but with an output schema present, the description is moderately complete. It covers the basic purpose and query methods but lacks details on parameter usage, error cases, and behavioral context, which are needed for a tool interacting with DOM elements.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It mentions 'index or xpath query', which partially explains two parameters, but doesn't clarify the 'session_id' parameter or provide details on query syntax, default behaviors, or mutual exclusivity between index and xpath.

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 ('detailed information about a DOM element'), specifying it supports index or xpath query. It distinguishes from siblings like 'get_page_state' or 'get_instance_info' by focusing on element-level details, though it doesn't explicitly name alternatives.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives is provided. It mentions supporting index or xpath query but doesn't specify prerequisites (e.g., needing an active browser session) or compare to siblings like 'get_dropdown_options' for specific element types.

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

get_instance_infoB

Get detailed information about a specific browser instance

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
configYesBrowser configuration
temp_dirYesTemporary directory path
last_usedYesLast usage timestamp
created_atYesCreation timestamp
session_idYesSession ID
active_tabsYesNumber of active tabs
current_urlYesCurrent page URL
active_tab_idYesActive tab ID
current_titleYesCurrent page title
screenshot_countYesNumber of screenshots taken

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 the full burden of behavioral disclosure. It states it 'gets' information, implying a read-only operation, but doesn't cover aspects like authentication needs, rate limits, error handling, or what 'detailed information' entails. This leaves significant gaps for a tool with an output schema.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded and appropriately sized for its content, earning full marks for conciseness.

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 has an output schema, the description doesn't need to explain return values, which helps completeness. However, with no annotations, low schema coverage, and multiple sibling tools, the description is minimal and lacks context on usage, parameters, or behavioral traits, making it only adequate for basic understanding.

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

Parameters3/5

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

The description adds no meaning beyond the input schema, which has 0% description coverage and only one parameter 'session_id'. Since schema coverage is low, the description should compensate but doesn't explain what 'session_id' represents or how to obtain it. The baseline is adjusted due to the single parameter, but the lack of semantic detail limits utility.

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 the resource 'detailed information about a specific browser instance', making the purpose understandable. However, it doesn't differentiate from siblings like 'get_browser_status' or 'get_page_state', which might provide overlapping or related information about browser 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?

No guidance is provided on when to use this tool versus alternatives such as 'get_browser_status' or 'get_tabs_info'. The description implies usage for a specific instance but doesn't specify prerequisites, exclusions, or contextual triggers.

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

get_page_stateB

Get current page state and interactive elements; frames mode is unstable and may not extract all details.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
framesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYesCurrent page URL
titleYesPage title
elementsYesInteractive elements list
interactive_elements_countYesNumber of interactive elements

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It adds useful context about the frames parameter being 'unstable' and potentially incomplete, which goes beyond the basic schema. However, it doesn't describe other behavioral traits like performance characteristics, error conditions, or what 'page state' specifically includes (e.g., DOM structure, JavaScript state).

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 (one sentence) and front-loaded with the core purpose, followed by a critical warning. Every word earns its place, with no redundant information. The structure efficiently communicates essential information without waste.

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 has an output schema (which handles return values), no annotations, and simple parameters, the description is moderately complete. It covers the purpose and a key behavioral warning but lacks details on parameter semantics (especially session_id) and broader usage context. For a tool with 2 parameters and no annotation coverage, it should do more to compensate.

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

Parameters2/5

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

The input schema has 0% description coverage, so the description must compensate. It only mentions the frames parameter ('frames mode is unstable'), providing some semantic context for that parameter. However, it doesn't explain the session_id parameter at all, leaving half the parameters undocumented. The description adds minimal value beyond the bare 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 clearly states the tool's purpose: 'Get current page state and interactive elements' - a specific verb ('Get') and resource ('page state and interactive elements'). It distinguishes itself from siblings like get_element_info (specific element) or get_tabs_info (tab-level info) by focusing on overall page state. However, it doesn't explicitly contrast with all possible alternatives.

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 provides some usage guidance with the warning about frames mode being 'unstable and may not extract all details,' which implies when to be cautious with the frames parameter. However, it doesn't explicitly state when to use this tool versus alternatives like get_element_info for specific elements or extract_content for content extraction, nor does it provide clear prerequisites or exclusions.

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

get_tabs_infoB

Get information about all open browser tabs

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states what the tool does but lacks critical details: it doesn't specify what information is returned (e.g., URLs, titles, tab states), whether it requires specific permissions, or if there are rate limits. This is inadequate 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 no wasted words. It's front-loaded with the core purpose, making it easy to parse quickly, which is ideal for conciseness in tool definitions.

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 low complexity (1 parameter, no annotations) and the presence of an output schema (which handles return values), the description is minimally adequate. However, it lacks context about what 'information' includes and when to use it over siblings, leaving gaps in completeness for effective 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?

The description adds no parameter information beyond what the input schema provides. With 0% schema description coverage and 1 parameter ('session_id'), the schema alone documents the parameter's existence and type. The description doesn't compensate by explaining what 'session_id' means or how to obtain it, so it meets the baseline for minimal value.

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

Purpose4/5

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

The description clearly states the action ('Get information') and resource ('all open browser tabs'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'get_instance_info' or 'get_page_state' that might provide overlapping browser information, which prevents a perfect score.

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

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. With many sibling tools related to browser operations (e.g., 'get_instance_info', 'get_page_state'), there's no indication of whether this tool is for tab metadata, content, or other details, leaving usage context unclear.

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

input_textC

Input text into a form field

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
indexYes
textYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action but doesn't reveal critical traits: whether it requires a specific browser state, if it waits for the field to be interactable, potential side effects (e.g., triggering form validation), or error conditions. 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 wasted words. It's front-loaded and appropriately sized for a simple action, though this conciseness comes at the cost of missing details needed for full understanding.

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 (3 required parameters, mutation operation) and lack of annotations, the description is incomplete. While an output schema exists, the description doesn't address behavioral nuances, parameter meanings, or usage context, making it insufficient for reliable agent operation in a crowded sibling toolset.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate by explaining parameters. It adds no meaning beyond the schema—failing to clarify what 'session_id', 'index', or 'text' represent in context (e.g., index of which element, text encoding). This leaves all three parameters undocumented, significantly hindering correct invocation.

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

Purpose4/5

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

The description 'Input text into a form field' clearly states the action (input) and target (form field), providing a specific verb+resource. However, it doesn't distinguish from sibling tools like 'send_keys' or 'set_element_value', which may have overlapping functionality in 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?

The description provides no guidance on when to use this tool versus alternatives like 'send_keys' or 'set_element_value'. It lacks context about prerequisites (e.g., needing an active browser session) or exclusions, 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.

refresh_pageC

Refresh the current page

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2/5.0
Behavior1/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure but provides none. It doesn't indicate whether this is a read-only or destructive operation, what happens to page state, whether authentication is preserved, or what the expected outcome looks like. For a browser interaction tool with zero annotation coverage, this is completely inadequate.

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 at just three words. It's front-loaded with the core action and target, with zero wasted words. While it's severely under-specified, this isn't a conciseness problem - it's a completeness problem. The description is appropriately sized for what it attempts to convey.

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

Completeness1/5

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

Given that this is a browser interaction tool with no annotations, 0% schema description coverage, and multiple sibling tools that could be confused with it, the description is completely inadequate. While an output schema exists (which might help with return values), the description fails to provide the minimal context needed for an agent to understand when and how to use this tool versus alternatives.

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 doesn't mention any parameters, but with only 1 parameter and 0% schema description coverage, the baseline would be 3. The schema shows a required 'session_id' parameter, but the description provides no context about what this represents or why it's needed. The description neither compensates for the lack of schema documentation nor adds value beyond what's already in the structured schema.

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

Purpose2/5

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

The description 'Refresh the current page' is a tautology that essentially restates the tool name 'refresh_page'. While it clearly indicates the action (refresh) and target (current page), it doesn't provide any additional specificity or differentiation from potential alternatives. It's better than being completely misleading but fails to add meaningful context beyond the name itself.

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

Usage Guidelines1/5

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

The description provides absolutely no guidance about when to use this tool versus alternatives. With sibling tools like 'navigate_back', 'navigate_forward', 'navigate_to', and 'get_page_state', there's clear potential for confusion about when a page refresh is appropriate versus navigation or state checking. The description offers no context about use cases or prerequisites.

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

scroll_pageC

Scroll page up or down

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
directionNodown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the basic action. It doesn't disclose behavioral traits such as whether scrolling is incremental or continuous, if it requires a loaded page, potential side effects (e.g., triggering lazy-loaded content), or error conditions. This leaves significant gaps for a mutation-like operation.

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

Conciseness5/5

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

The description is extremely concise with a single, front-loaded sentence that directly states the tool's function. There is no wasted verbiage, making it efficient for quick comprehension, though this brevity contributes to gaps in other dimensions.

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 has an output schema (which likely covers return values), the description's minimalism is somewhat mitigated. However, for a tool with 2 parameters (0% schema coverage) and no annotations, the description is incomplete—it lacks details on usage context, parameter meanings, and behavioral nuances, making it only minimally viable.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate but adds no parameter information. It doesn't explain what 'session_id' refers to (e.g., browser instance) or clarify 'direction' (e.g., 'up' vs 'down' as strings, default behavior). This fails to address the undocumented parameters adequately.

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 'Scroll page up or down' clearly states the action (scroll) and resource (page), but it's vague about scope and lacks differentiation from siblings like 'navigate_back' or 'navigate_forward'. It doesn't specify if this scrolls the entire page or a specific element, which could be important given sibling tools like 'click_element'.

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 active browser session), exclusions, or how it differs from other navigation tools in the sibling list, 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.

search_bingC

Search Bing for a query with progress tracking

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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. While 'Search Bing' implies a read-only operation, it doesn't specify authentication needs, rate limits, or what 'progress tracking' entails (e.g., real-time updates, callback mechanisms). The description is too vague about behavioral traits beyond the basic action.

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

Conciseness5/5

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

The description is extremely concise at just one sentence with no wasted words. It's front-loaded with the core action ('Search Bing') and adds a useful modifier ('with progress tracking'). Every part of the sentence contributes meaning, making it efficient 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 has an output schema (which should document return values), the description doesn't need to explain outputs. However, with 2 parameters at 0% schema coverage and no annotations, the description is incomplete—it fails to clarify parameter purposes or behavioral details adequately. The presence of an output schema raises the baseline, but gaps remain.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for undocumented parameters. It mentions 'query' implicitly but doesn't explain the 'session_id' parameter at all. The phrase 'with progress tracking' might relate to 'session_id', but this connection isn't made explicit, leaving both parameters poorly explained beyond what the bare schema provides.

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 'Search' and the resource 'Bing', specifying the action and target. It adds 'with progress tracking' which provides additional context about the tool's functionality. However, it doesn't explicitly distinguish this from other search-related tools that might exist in the sibling list, though none are directly search tools.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any prerequisites, constraints, or comparison with other tools in the sibling list (which are primarily browser automation tools, not search engines). The phrase 'with progress tracking' hints at a specific use case but doesn't clarify when this is preferred over a simpler search.

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

send_keysC

Send keyboard keys to the browser

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
keysYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 lacks details on permissions needed, error handling (e.g., invalid session_id), rate limits, or what happens if the browser isn't ready. This leaves significant gaps for an agent to use it safely and effectively.

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 no wasted words, making it easy to parse. It's front-loaded with the core action, though its brevity contributes to gaps in other dimensions like guidelines and transparency.

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 has an output schema (which reduces the need to describe return values) but no annotations and low parameter clarity, the description is minimally adequate. It states the basic purpose but lacks critical details for safe usage in a browser automation context, making it incomplete for effective agent operation.

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

Parameters2/5

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

With 0% schema description coverage, the description adds no meaning beyond the schema. It doesn't explain what 'session_id' refers to (e.g., a browser instance) or what format 'keys' should be in (e.g., key names like 'Enter' or raw text). This fails to compensate for the lack of schema documentation, making parameters unclear.

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 ('send') and resource ('keyboard keys') with the target ('to the browser'), making the purpose understandable. However, it doesn't differentiate from siblings like 'input_text' or 'set_element_value', which also involve browser input actions, leaving some ambiguity about when to choose this specific tool.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'input_text' and 'set_element_value' that handle text input, there's no indication of whether 'send_keys' is for special keys (e.g., Enter, Tab) or general typing, leading to potential misuse without further context.

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

set_browser_configC

Set advanced browser configuration for a specific instance. If you want to change the viewport, you can use the set_browser_config tool to change the viewport_width and viewport_height.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
headlessNo
no_sandboxNo
user_agentNo
viewport_widthNo
viewport_heightNo
disable_web_securityNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
configYesBrowser configuration
temp_dirYesTemporary directory path
last_usedYesLast usage timestamp
created_atYesCreation timestamp
session_idYesSession ID
active_tabsYesNumber of active tabs
current_urlYesCurrent page URL
active_tab_idYesActive tab ID
current_titleYesCurrent page title
screenshot_countYesNumber of screenshots taken

TDQS

C2.4/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 setting configuration but doesn't explain whether this requires specific permissions, if changes are immediate or require restart, what happens to existing configuration, or any side effects. The example about viewport is helpful but insufficient for a tool with 7 parameters including security-related options like 'disable_web_security'.

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

Conciseness3/5

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

The description is brief (two sentences) but inefficiently structured. The second sentence is redundant with the tool name and could be more informative. While concise, it lacks proper front-loading of the most important information about what this tool actually configures.

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

Completeness2/5

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

Given the tool has 7 parameters (including security-sensitive ones), no annotations, and 0% schema description coverage, the description is inadequate. It doesn't explain the scope of configuration, relationship to sibling tools like 'get_browser_config', or provide enough context for safe usage. The existence of an output schema helps but doesn't compensate for the missing behavioral and parameter context.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It only mentions 'viewport_width' and 'viewport_height' parameters, ignoring the other 5 parameters including critical ones like 'session_id' (required), 'headless', 'no_sandbox', 'user_agent', and 'disable_web_security'. The description adds minimal value beyond what's in the schema titles.

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

Purpose3/5

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

The description states the tool 'Set advanced browser configuration for a specific instance', which provides a clear verb ('Set') and resource ('browser configuration'). However, it doesn't distinguish this from sibling tools like 'get_browser_config' or explain what makes it 'advanced' versus basic configuration options available elsewhere.

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 minimal guidance with 'If you want to change the viewport, you can use the set_browser_config tool to change the viewport_width and viewport_height.' This gives one specific use case but doesn't explain when to use this versus other configuration methods, what other parameters are for, or any prerequisites. No alternatives or exclusions are mentioned.

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

set_element_valueC

Set value of an input or select element directly, supports frames

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
indexYes
valueYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 full burden but only states the action and frame support. It lacks details on permissions, side effects (e.g., if it triggers events), error handling, or response format, leaving behavioral traits unclear 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, efficient sentence with no wasted words. It's front-loaded with the core action and includes an additional useful detail ('supports frames') without redundancy.

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 a mutation tool with 3 parameters, 0% schema coverage, no annotations, but an output schema exists, the description is minimally adequate. It states the purpose and a key feature (frame support) but lacks parameter explanations and behavioral context, relying on the output schema for return values.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate but adds no parameter details. It doesn't explain what 'session_id', 'index', or 'value' mean, their formats, or how they interact, failing to provide meaningful semantics 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 clearly states the verb 'Set' and the resource 'value of an input or select element', making the purpose understandable. It distinguishes from siblings like 'input_text' or 'send_keys' by specifying direct value setting for form elements, though it doesn't explicitly contrast with them.

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 guidance on when to use this tool versus alternatives like 'input_text' or 'send_keys' is provided. The mention of 'supports frames' hints at a specific context but doesn't define when to prefer this tool or exclude others.

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

switch_tabC

Switch to a specific browser tab and return the tab info object

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
page_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesTab ID
urlYesTab URL
titleYesTab title
is_activeYesWhether this is the active tab

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 switching and returning tab info, but doesn't cover critical aspects like whether this requires an existing browser session, if it changes the active tab in a visible way, potential errors (e.g., invalid IDs), or side effects. This leaves significant gaps for a mutation-like operation.

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 action and outcome with zero wasted words. It's appropriately sized for a straightforward tool, making it easy to parse quickly.

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 has an output schema (which should document the 'tab info object'), the description doesn't need to detail return values. However, with 2 required parameters, 0% schema coverage, and no annotations, the description is too minimal—it doesn't explain parameter semantics or behavioral context, making it incomplete for safe and effective use.

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

Parameters2/5

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

Schema description coverage is 0%, so the schema provides no parameter details. The description doesn't explain what 'session_id' or 'page_id' mean, their formats, or how to obtain them (e.g., from 'get_tabs_info'). This fails to compensate for the lack of schema documentation, leaving parameters largely ambiguous.

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 ('switch to a specific browser tab') and the outcome ('return the tab info object'), which is specific and actionable. However, it doesn't explicitly differentiate from sibling tools like 'get_tabs_info' (which likely lists tabs without switching) or 'close_tab' (which closes rather than switches), missing full sibling distinction.

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. For example, it doesn't clarify if this should be used after 'get_tabs_info' to identify a target tab, or how it relates to navigation tools like 'navigate_to'. 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.

take_screenshotC

Take screenshot with structured result, it will take screenshot of the target element if target is not None, otherwise it will take screenshot of the full page, otherwise it will take screenshot of the current viewport Screenshot page or element (by target selector, supports CSS/XPath, e.g. 'button', '//button', 'css=button', 'xpath=//button'). See: https://playwright.dev/python/docs/locators#locate-by-css-or-xpath

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
targetNo
widthNo
heightNo
full_pageNo
qualityNo
formatNopng

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It describes the tool's behavior (taking screenshots with conditional targeting) and mentions structured results, but lacks details on permissions, rate limits, side effects (e.g., does it save files?), or error handling. The link to Playwright docs adds some context but isn't integrated into the description itself.

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

Conciseness3/5

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

The description is moderately concise but could be more front-loaded; the first sentence is clear, but the second sentence mixes target explanation with syntax examples and a link, making it slightly cluttered. It avoids unnecessary fluff, but the structure could be improved for better readability.

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 7 parameters with 0% schema coverage, no annotations, and no output schema, the description is incomplete. It covers the core purpose and target parameter but misses details on other parameters, behavioral traits, and return values. For a tool with this complexity, more comprehensive information is needed.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It only mentions the 'target' parameter and its selector syntax, ignoring the other 6 parameters (session_id, width, height, full_page, quality, format). This leaves most parameters undocumented, failing to add sufficient meaning beyond the bare 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 clearly states the tool takes screenshots with structured results, specifying it can target elements or capture full page/viewport. It distinguishes from siblings like 'download_image' or 'generate_pdf' by focusing on screenshot capture rather than file downloads or PDF generation. However, it doesn't explicitly contrast with all siblings (e.g., 'get_element_info' might also involve elements).

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 by describing target behavior (element vs. page vs. viewport) and provides a link for selector syntax, but lacks explicit guidance on when to use this versus alternatives like 'download_image' or 'generate_pdf'. It mentions the conditional logic ('if target is not None...') which gives some context, but no clear 'when-not' scenarios or prerequisites are stated.

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

upload_fileC

Upload file to file input element

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
indexYes
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/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 uploading a file but fails to describe what happens (e.g., whether it triggers form submission, error handling, or file size limits). This leaves gaps in understanding the tool's behavior beyond the basic action.

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

Conciseness4/5

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

The description is a single, efficient sentence with no wasted words, making it easy to parse. However, it's under-specified rather than concise, as it lacks necessary details for a tool with three parameters and no annotations.

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

Completeness2/5

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

Given the tool has 3 parameters with 0% schema coverage, no annotations, and an output schema (which helps but isn't described), the description is incomplete. It doesn't cover parameter meanings, behavioral traits, or usage context, making it inadequate for effective tool selection and invocation.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate but adds no parameter information. It doesn't explain what 'session_id', 'index', or 'file_path' mean in context (e.g., browser session identifier, element index, local file path). This leaves all three parameters undocumented beyond their titles.

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 'Upload file to file input element' states a clear verb ('upload') and target ('file input element'), but it's vague about the context (browser automation) and doesn't distinguish from sibling tools like 'download_file' or 'set_element_value'. It specifies what it does but lacks precision about the browser session scope.

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 like 'set_element_value' or 'input_text', nor does it mention prerequisites such as needing an active browser session or a file input element. The description implies usage but offers no explicit context or exclusions.

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

waitB

Wait for specified number of seconds with progress

ParametersJSON Schema
NameRequiredDescriptionDefault
secondsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 'with progress,' hinting at some feedback mechanism, but doesn't detail what 'progress' entails (e.g., visual indicators, logs). It also omits behavioral aspects like whether the wait is blocking, if it can be interrupted, or error handling for invalid inputs.

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 and front-loaded: 'Wait for specified number of seconds with progress.' It uses minimal words to convey the core function without any redundant information, 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.

Completeness3/5

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

Given the tool's low complexity (one optional parameter) and the presence of an output schema, the description is somewhat complete but has gaps. It covers the basic action but lacks details on usage context and behavioral transparency. The output schema might handle return values, but the description doesn't explain what 'progress' means or operational constraints.

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 description adds meaningful context beyond the input schema. The schema only defines 'seconds' as an integer with a default of 3, with 0% coverage in descriptions. The description clarifies that this parameter specifies the 'number of seconds' to wait, which is crucial for understanding its purpose, compensating for the low 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 purpose: 'Wait for specified number of seconds with progress.' It includes a specific verb ('Wait') and resource ('seconds'), making the function unambiguous. However, it doesn't explicitly differentiate from sibling tools, which are all browser automation related, while this is a timing utility.

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 scenarios like pausing between browser actions, handling loading times, or coordinating with other tools. Without such context, users must infer usage from the tool's name and description alone.

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

TDQS

C2.9/5.0
Disambiguation3/5

Most tools have distinct purposes, but there is some overlap that could cause confusion. For example, 'click_element' and 'click_element_by_xpath' serve similar functions with different targeting methods, and 'get_element_info' and 'get_page_state' both retrieve element details, potentially leading to misselection. However, descriptions generally clarify differences, preventing major ambiguity.

Naming Consistency4/5

Tool names follow a consistent snake_case pattern throughout, with clear verb_noun structures like 'create_chrome_instance' and 'navigate_to'. Minor deviations exist, such as 'browser_tips' being more descriptive than action-oriented, but overall naming is predictable and readable across the set.

Tool Count2/5

With 35 tools, the count is excessive for a browser automation server, making it feel heavy and potentially overwhelming. While the domain is broad, many tools could be consolidated or omitted without losing functionality, indicating poor scoping and an over-engineered surface that may hinder agent usability.

Completeness5/5

The tool set provides comprehensive coverage for browser automation, including instance management, navigation, interaction, content extraction, and utilities like downloads and screenshots. It supports full CRUD-like operations for browser sessions and tabs, with no obvious gaps that would cause agent failures in typical web automation tasks.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    Not graded
    maintenance
    A MCP server that provides browser automation tools, allowing users to navigate websites, take screenshots, click elements, fill forms, and execute JavaScript through Playwright.
    8
    2
  • A
    license
    Not graded
    quality
    D
    maintenance
    A FastMCP server that enables browser automation through natural language commands, allowing Language Models to browse the web, fill out forms, click buttons, and perform other web-based tasks via a simple API.
    5
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that enables AI-powered browser automation, web scraping, and testing using Playwright across Chromium, Firefox, and WebKit. It allows users to perform actions like navigation, clicking, typing, and taking screenshots through natural language interfaces.
    15
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A browser automation MCP server providing 30 tools for navigation, interaction, page information, state checks, tab management, and more, enabling natural language control of browsers via MCP-compatible clients.

Latest Blog Posts

MCP directory API

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

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

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