Skip to main content
Glama
codeiva11
by codeiva11

🦁 Real Browser MCP

npm version Node.js Version Build & Test License: ISC

A production-ready Model Context Protocol (MCP) server that equips AI agents with a reliable, controlled web browser for automation and testing. Built on Patchright (a hardened Playwright fork) and integrated with Ghostery Adblocker, Ghost Cursor (natural mouse dynamics), and an automation assistant for Cloudflare Turnstile challenges.

This server is 100% compatible with all major AI IDEs (Cursor, VS Code, Cline, Roo Code, Windsurf, PearAI, OpenCode, Kilo Code, and Claude Desktop) using standard STDIO communication.

πŸ“‹ See POLICY.md for acceptable use guidelines. This tool is intended for QA, testing, accessibility automation, and authorized research.


βš™οΈ Installation & Setup

Since this project is published on NPM, the easiest way to use it is via npx (which handles downloading and executing automatically).

⚑ Quick Start (Using npx)

Add the following to your MCP Configuration file (e.g. cline_mcp_settings.json or claude_desktop_config.json):

{
  "mcpServers": {
    "real-browser": {
      "command": "npx",
      "args": ["-y", "real-browser-mcp-server@latest", "mcp"]
    }
  }
}
{
  "mcpServers": {
    "real_browser_mcp_server": {
      "command": "node",
      "args": [
        "c:/Users/Admin/Desktop/Software/Real-Browser-Mcp/dist/src/index.js"
      ],
      "env": {
        "AI_HEALING": "true",
        "HEADLESS": "true"
      }
    }
  }
}

🌍 Global Installation

Install it globally on your system. The hardened browser (Patchright Chromium) is downloaded automatically during install β€” no extra steps needed:

# One command: installs the server AND auto-downloads Patchright Chromium
npm install -g real-browser-mcp-server

# Run the MCP server
real-browser-mcp mcp
NOTE

Thepostinstall step automatically runs patchright install chromium, which detects your OS and CPU architecture (Windows / Linux / macOS Γ— x64 / arm64 / arm) and fetches the correct binary. If auto-download is skipped (e.g. offline), run it manually:

npx patchright install chromium

Set PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 before npm install to skip the download (e.g. in CI that only builds).

πŸ› οΈ Local Development & Build (Git Clone)

If you want to clone the repository and run it locally, follow these exact steps:

# 1. Clone the repository
git clone https://github.com/codeiva11/Real-Browser-Mcp.git

# 2. Navigate to the project directory
cd Real-Browser-Mcp

# 3. Install dependencies (Patchright Chromium is auto-downloaded via postinstall)
npm install

# 4. Build the TypeScript files
npm run build

# 5. Start the MCP server
npm run mcp
NOTE

Why does npm run build not build the entire project alone? npm run build only compiles the TypeScript code into JavaScript (dist/). However, the hardened browser engine (patchright) requires the browser binaries, which are now fetched automatically by the postinstall hook (npx patchright install chromium). If you skipped it, run that command manually. Without Chromium, the server will crash trying to find it.

We automatically build and publish a production-ready Docker image to GitHub Container Registry (GHCR).

# Pull the latest image
docker pull ghcr.io/codeiva11/real-browser-mcp:latest

# Run the MCP Server (Interactive stdio mode for AI IDEs)
docker run -i --rm ghcr.io/codeiva11/real-browser-mcp:latest

(Note: When running via Docker, it automatically runs in headless mode.)


Related MCP server: cloakbrowser-mcp

πŸš€ Key Automation & Reliability Features

  • Reliable Browser Engine: Powered by Patchright Chromium, a hardened Playwright fork that reduces false-positives in automation environments (does not expose automation indicators or Webdriver/BiDi flags).

  • Integrated Ad & Tracker Blocker: Utilizes @ghostery/adblocker-playwright with in-memory prebuilt filter lists (no disk cache), blocking ads and speed-bumps.

  • Natural Interactions: Integrates ghost-cursor-patchright (BΓ©zier curves) to simulate natural mouse movements, velocity, and hover-before-click behaviors. Features Physics-based Smooth Scrolling (page.realScroll) utilizing real mouse-wheel events and Cubic Ease-Out deceleration to mimic manual trackpad/mouse flicks for reliable interaction with dynamic UIs.

  • Human-like Browsing: see_page lets the AI agent plan an entire multi-step task from one view and execute all actions in a single continuous flow via its unified steps workflow β€” no screenshot pause after every micro-step, just like a human. (The previously separate browse_task tool is now merged into see_page to avoid agent confusion.)

  • Rich Single-Shot Vision: see_page now returns a screenshot plus full page text, all interactive elements with selectors, and an iframe inventory in one call β€” eliminating the need to re-capture the same page repeatedly.

  • Turnstile Assist: Detects and assists with Cloudflare Turnstile challenges on pages you are authorized to access.

  • Anti-Race Condition Guards: Robust state-guards ensure popup blockers, shims, and adblockers attach exactly once per page, preventing context destruction.

  • TypeScript: Entire codebase is written in TypeScript with strict: true for type safety and maintainability.


πŸ› οΈ AI IDE Compatibility & Configuration Guide

Since this server adheres strictly to the official Model Context Protocol (MCP) specification over STDIO (with all informational logging directed safely to stderr to avoid JSON-RPC corruption), it is fully compatible with every modern AI editor.

1. Claude Desktop

Add the following to your claude_desktop_config.json:

{
  "mcpServers": {
    "real-browser-mcp-server": {
      "command": "npx",
      "args": ["-y", "real-browser-mcp-server@latest", "mcp"],
      "env": {
        "HEADLESS": "false",
        "AI_HEALING": "true"
      }
    }
  }
}

2. Cursor IDE

  1. Open Cursor Settings βž” Features βž” MCP.

  2. Click + Add New MCP Server.

  3. Configure as follows:

    • Name: real-browser-mcp-server

    • Type: command

    • Command: npx -y real-browser-mcp-server@latest mcp

  4. Click Save.

3. Cline / Roo Code (VS Code)

Add the server entry to your global MCP settings file (typically found at %APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json):

{
  "mcpServers": {
    "real-browser-mcp-server": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "real-browser-mcp-server@latest", "mcp"],
      "env": {
        "HEADLESS": "false",
        "AI_HEALING": "true"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

4. Kilo Code (VS Code)

Add the server entry to your kilo.jsonc:

{
  "mcp": {
    "real_browser_mcp_server": {
      "type": "local",
      "command": ["npx", "-y", "real-browser-mcp-server@latest", "mcp"],
      "environment": {
        "HEADLESS": "false",
        "AI_HEALING": "true"
      },
      "enabled": true
    }
  }
}

5. Windsurf IDE

Configure the server in your ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "real-browser-mcp-server": {
      "command": "npx",
      "args": ["-y", "real-browser-mcp-server@latest", "mcp"],
      "env": {
        "HEADLESS": "false",
        "AI_HEALING": "true"
      }
    }
  }
}

6. PearAI

Add the configuration via PearAI Settings βž” MCP Servers using the standard command setup:

{
  "mcpServers": {
    "real-browser-mcp-server": {
      "command": "npx",
      "args": ["-y", "real-browser-mcp-server@latest", "mcp"],
      "env": { "HEADLESS": "false" }
    }
  }
}

7. OpenCode AI IDE

Configure the server in your opencode.jsonc or standard MCP settings configuration:

{
  "mcpServers": {
    "real-browser-mcp-server": {
      "command": "npx",
      "args": ["-y", "real-browser-mcp-server@latest", "mcp"],
      "env": {
        "HEADLESS": "false",
        "AI_HEALING": "true"
      }
    }
  }
}

βš™οΈ Environment Variables

You can configure browser_init defaults directly from the MCP client env block, without passing parameters on every call. Explicit parameters passed to browser_init always override these environment variables.

Variable

Values

Default

Controls

HEADLESS

true / false / 1 / 0 / yes / no

auto (CI + no-display detection)

Run browser headless (no visible window)

AI_HEALING

true / false / 1 / 0 / yes / no / on / off

true

Auto-repair broken CSS selectors in click/type

ENABLE_BLOCKER

true / false / 1 / 0 / yes / no / on / off

true

Block ads and trackers

TURNSTILE

true / false / 1 / 0 / yes / no / on / off

false

Assist with Cloudflare Turnstile challenges

REAL_BROWSER_ALLOW_PRIVATE_NETWORK

true / 1 / yes

off

Allow navigate/replay_request/redirect_tracer to target localhost/private IPs (off by default β€” SSRF guard)

CHROME_NO_SANDBOX

true / 1 / yes / false / 0

auto (CI/root detection)

Force-disable or force-enable the Chromium OS sandbox

REAL_BROWSER_TOOL_TIMEOUT_MS

integer

120000

Hard watchdog budget per tool call (avoids client "Request timed out")

REAL_BROWSER_LOG_LEVEL

debug / info / warn / error

info

Structured JSON log verbosity (stdout stays clean for MCP)

REAL_BROWSER_SEND_PROGRESS

true / 1

off

Emit notifications/progress JSON-RPC messages to the MCP client

REAL_BROWSER_VIDEO_DIR

path

$TMPDIR/real-browser-mcp/videos

Where recordVideo writes .webm recordings

REAL_BROWSER_USER_AGENT

UA string or comma-separated list

auto (built from Chromium version)

Override/rotate the browser User-Agent. A list (ua1,ua2) rotates one entry per browser_init call

REAL_BROWSER_ALLOW_DECRYPT

true / 1 / yes

off

Opt-in for extract_data's auto key-discovery AES conversion. Off by default because it can strip content protection (and it also trips AI-provider safety classifiers). Basic format conversion (URL/base64/hex) always works

Values are case-insensitive. Priority for each option is: explicit browser_init param > environment variable > built-in default.

⚠️ Tool-result content safety: some AI providers (e.g. Anthropic) run safety classifiers on tool results, not just tool definitions. Tool payloads in this server are written content-neutral on purpose β€” do not patch instructions into tool results telling the model to "read the verification image and type the answer", or you will get [400]: content-blocked.

πŸ›‘οΈ Input caps (hard limits): press_key.count ≀ 100, click.clickCount ≀ 50, see_page.steps ≀ 100, media_extractor batch_extract.urls ≀ 50, execute_js.code ≀ 200k chars. Values beyond these are clamped with a warning β€” a runaway agent can never lock the server for hours.


🌐 Complete MCP Tool Reference (21 Tools)

The server exposes 21 tools categorized into functional units:

🌐 Browser & Session

Tool Name

Description

Key Parameters

browser_init

Initialize Patchright browser with ad blocker, AI healing, embedded-widget assist, WebGL/hardware spoofing, and WebRTC leak protection.

headless, proxy, widgetAssist, enableBlocker, aiHealing, spoofFingerprint, blockWebRTCLeaks

browser_close

Close browser with cleanup.

force

🧭 Navigation & Tab Management

Tool Name

Description

Key Parameters

navigate

Navigate to URL or manage browser tabs (list, switch, new, close) with auto-switch for popups and smart retry.

url, tabAction, tabIndex, autoSwitchNewTab, waitUntil, timeout

πŸ‘† Natural Interaction

Tool Name

Description

Key Parameters

click

Natural click or drag-and-drop (dragTo) using ghost cursor with slider friction, iframe, hover, and video player support.

selector, annotationId, dragTo, humanLike, hoverFirst, iframe, autoDetectPlayer

type

Type text with natural speed variation, smart clearing, and iframe support.

selector, annotationId, text, clear, pressEnter, iframe

solve_captcha

Form filling and embedded widget completion for pages you are testing (JS widgets, text/image input recognition). Externally hosted services are not supported.

type, captchaSelector, formData, submit

random_scroll

Natural scrolling with lazy-load detection.

direction, amount, smooth, aiDetectLazyLoad

press_key

Press keyboard keys with modifier key support (Ctrl/Shift/Alt).

key, modifiers, count

execute_js

Run custom JavaScript inside a page or iframe. ⚠️ Use with trusted input only.

code, async, iframe, timeout

πŸ“„ Extraction & Decoding

Tool Name

Description

Key Parameters

get_content

Retrieve page content in html, text, markdown, rawHttp, or elements mode.

format, selector, xpath, saveAs

extract_data

Advanced extractor: regex, JSON, meta, structured, auto, API discovery, string conversion, links.

type, pattern, source, transformKey

media_extractor

Extract HLS/DASH/MP4, control player APIs, convert string formats.

action, types, quality, playerAction

πŸ“‘ Network & Utilities

Tool Name

Description

Key Parameters

redirect_tracer

Trace full redirect chains (HTTP 301/302, JS, meta refresh).

url, maxRedirects, decodeURLs

network_recorder

Capture requests, responses, intercepted APIs, GraphQL, WebSockets, media URLs, block unwanted resource URLs (3x faster loads), and mock API routes. Export HAR.

action, patterns, mock, captureXhrBody

deep_analysis

DOM structure, scripts, page components, tech stack, SEO, and recommendations.

types, detailed, detectAccessControls

wait

Smart delay for selectors, navigation events, or fixed timeout.

type, value, timeout

progress_tracker

Track automation progress with AI-estimated remaining time.

action, taskName, progress

storage_inspector

Inspect & manage client-side storage, cookies, and session state persistence (cookies, save_session, load_session, clear_cookies, indexeddb, service_workers).

action, sessionPath

replay_request

Replay a captured API request in browser context.

url, method, headers, body

api_analyzer

Generate JSON schemas, diff two JSONs, or create SDK boilerplates (Python/TypeScript).

action, data, lang

πŸ‘οΈ AI Vision & Human-like Workflow

Tool Name

Description

Key Parameters

see_page

Unified vision + human-like task runner: screenshot + page text + all interactive elements + iframe inventory in ONE call. Optionally pass a steps[] array (click, type, drag, hover, double_click, triple_click, idle, scroll, wait, extract, see) to execute the whole multi-step task back-to-back in a single continuous flow β€” no screenshot pause between steps, with automatic before + after screenshots and a per-step report.

fullPage, annotate, includePageText, scanIframes, maxElements, format, quality, steps[], captureBefore, captureAfter, stopOnError

Human-like Workflow Pattern:

OLD (repetitive): see_page β†’ click β†’ see_page β†’ type β†’ see_page β†’ click ...
NEW (human-like): see_page (once, fullPage) β†’ steps:[click, type, scroll, extract] β†’ see_page (only on page change)
IMPORTANT

[!IMPORTANT] The verification-widget tool is namedsolve_captcha and its captchaSelector parameter targets the input image or widget element. It only assists with widgets on pages you are testing; externally hosted services (reCAPTCHA/hCaptcha) are not supported β€” descriptions stay neutral.

If the current model cannot consume images, see_page still returns a full text + JSON summary, and solve_captcha can return text-only fallback guidance when called with preferTextFallback: true.


πŸ“ˆ Reliability & Test Coverage

Our test suites cover several real-world pages. Results depend on environment, third-party site changes, and network conditions.

Target Test Platform

Detection Type

Status

Sannysoft WebDriver

WebDriver/navigator properties check

βœ… Pass

Cloudflare WAF

Web Application Firewall challenge

βœ… Pass

Cloudflare Turnstile

CAPTCHA widget assist

βœ… Pass

FingerprintJS Bot Detector

Fingerprint-based bot detection

βœ… Pass

reCAPTCHA v3 Score

Google Trust Score test

βœ… Environment-dependent

Pixelscan Fingerprint

Canvas fingerprint check

βœ… Pass (No Masking Detected)

Rebrowser Bot Detector

Advanced bot signal detection

βœ… Pass

πŸ§ͺ Local Test Suite

Test Suite

Test Case

Status

CJS + ESM

Sannysoft WebDriver Detector

βœ… Passed

CJS + ESM

Cloudflare WAF

βœ… Passed

CJS + ESM

Cloudflare Turnstile

βœ… Passed

CJS + ESM

Fingerprint JS Bot Detector

βœ… Passed

CJS + ESM

Recaptcha V3 Score

βœ… Passed

CJS + ESM

Pixelscan Fingerprint Check

βœ… Passed


πŸ’» Programmatic Usage (Node.js SDK)

You can also use the core browser connector directly in your custom Node.js scripts.

CommonJS

const { connect } = require('real-browser-mcp-server');

(async () => {
  const { browser, page } = await connect({
    headless: false,
    turnstile: true
  });

  await page.goto('https://example.com');

  // Natural mouse movement and click
  await page.realClick('#my-button');

  // Natural smooth scrolling (60FPS Cubic Ease-Out physics)
  await page.realScroll(400); // scrolls down 400px smoothly

  await browser.close();
})();

ESM (ECMAScript Modules)

import { connect } from 'real-browser-mcp-server';

const { browser, page } = await connect({
  headless: false,
  turnstile: true
});

await page.goto('https://example.com');
await page.realClick('#my-button');

// Natural smooth scrolling (60FPS Cubic Ease-Out physics)
await page.realScroll(400); // scrolls down 400px smoothly

await browser.close();

⌨️ NPM Script Commands

Run these scripts from the project root directory:

Command

Description

npm start

Start the MCP server using standard STDIO transport.

npm run dev

Build and start the MCP server.

npm run mcp

Start the MCP server.

npm run mcp:verbose

Start the MCP server with verbose tool listing on stderr.

npm run list

List all 21 registered MCP tools with categories.

npm run build

Compile TypeScript into the dist/ folder.

npm test

Build, then run the live anti-bot test suite (test/test.mjs) for both CJS and ESM. ⚠️ Launches a real browser and hits live third-party sites β€” network- and IP-dependent. Every check is strict; a failing check fails the run, nothing is skipped.

npm run cjs_test

Run CommonJS test scripts.

npm run esm_test

Run ECMAScript Module test scripts.

Every check in the live-site suite is strict: a failing check (e.g. reCAPTCHA v3 score below 0.9) fails the run. Nothing is ever skipped.


πŸ—οΈ Architecture Notes

Design

  • MCP-first: every tool is defined in src/shared/tools.ts and dispatched through a single executeTool() router.

  • Handler modules: src/mcp/handlers/ contains focused files β€” network-recorder.ts, network-extractors.ts, vision-captcha.ts, vision-see-page.ts, media-handlers.ts β€” with thin wrappers (network.ts, vision.ts, index.ts) for the tool-facing API.

  • Browser state: a single global state object in src/mcp/handlers/state.ts holds the current browser/page instance and network recorder data. requireBrowser() / getState() provide typed accessors for handlers.

  • Human-like workflow: the unified see_page steps[] workflow orchestrates the existing click/type/scroll/press_key/wait/extract handlers in a continuous sequence β€” no extra LLM or API key required. The AI agent (LLM client) plans the steps; see_page executes them without pausing.

  • No project pollution: runtime caches (User-Agent detection, saved sessions) are written to the OS temp directory (os.tmpdir()/real-browser-mcp), never inside the project or working directory. The server does not create a .cache folder in your project tree.

  • execute_js caveat: the execute_js tool runs arbitrary JavaScript inside the controlled browser page context (a sandboxed browser tab). Only invoke it with trusted input.

Known Limitations

  • Single-session model: the MCP server manages one browser instance at a time. Concurrent multi-session isolation is not supported.

  • reCAPTCHA / hCaptcha: detected honestly but not solved automatically. Use a third-party service for these.

  • Vision tools require image-capable models: see_page and solve_captcha return images. Non-vision models get a full text + JSON summary fallback.

  • TypeScript strict mode: the project compiles with strict: true across all source files, and noEmitOnError: true makes a type error fail the build outright (tsc --noEmit passes cleanly).


πŸ›‘οΈ License

This project is licensed under the ISC License. Created and maintained by codeiva11.

Available Tools

21 tools
api_analyzerB

Generate JSON schemas from API responses, diff two JSON objects, or create SDK boilerplate code in Python or TypeScript.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesJSON string (for schema/diff) or URL (for sdk)
langNots
data2NoSecond JSON string for diff comparison
actionYesschema

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 must carry the full burden of behavioral disclosure. It only states the high-level operations and does not mention side effects, network requests (e.g., when data is a URL), output format, error conditions, or reversibility. For a tool that can generate code and fetch remote responses, this is a significant transparency gap.

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

Conciseness5/5

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

The description is a single sentence with no filler words. Each clause corresponds to a distinct action and adds concrete information. It is front-loaded with the primary capability and remains easy to scan.

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 four parameters, two required, no output schema, and no annotations, the one-line description is insufficient. It does not explain that data2 is only for diff, that data must be a URL for sdk, what the generated output looks like, or what side effects may occur. An agent would need to infer too much to use the tool reliably across all three actions.

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 covers data and data2 with descriptions, but action and lang lack descriptions. The description partially compensates by explaining the three actions and the Python/TypeScript language options, mapping to action and lang. However, it does not clarify parameter relationships such as data2 being needed for diff or that action defaults to schema. The addition of meaning over the schema is moderate, not outstanding.

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 states specific verbs and resources for each mode: generate schemas, diff objects, create SDK boilerplate. It clearly communicates the three distinct capabilities of the tool and leaves no ambiguity about what it does. It is not a tautology and stands apart from the unrelated sibling 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 lists what the tool can do but gives no guidance on when to use it, when not to use it, or which mode to choose in which situation. There are no explicit alternatives or exclusions. The agent must infer usage entirely from the action enum values.

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

browser_closeA

Close the browser session and release all browser resources.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoForce-kill the browser process

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description must carry behavioral transparency on its own. It does state the core behaviorβ€”closing the session and releasing resourcesβ€”which is meaningful. However, it does not disclose potential side effects such as losing page state, pending actions becoming invalid, or the implications of force-killing beyond what the schema parameter description already says.

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, grammatically complete sentence that communicates the essential action and consequence without filler. It is appropriately sized for a simple one-parameter tool and front-loads the primary action clearly.

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

Completeness3/5

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

For a simple, zero-required-parameter tool with no output schema, the description is mostly adequate, but it lacks usage context and side-effect warnings. The tool is destructive in nature, and an agent would benefit from knowing that closing the session is irreversible and that force is only needed when normal close fails. Overall completeness is acceptable but has clear gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so the 'force' parameter is already documented as 'Force-kill the browser process.' The description adds no extra meaning about when force should be true or what the default behavior implies. This meets the baseline for a fully schema-documented parameter but does not exceed it.

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

Purpose5/5

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

The description uses a specific verb ('Close') and identifies the resource ('browser session'), making the tool's function unmistakable. It also clearly differentiates from siblings like browser_init and navigate by stating this terminates the entire session. No ambiguity remains about what operation this tool performs.

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 call this tool versus alternatives, such as using it only at the end of a browser session or not for closing individual tabs. Nothing distinguishes appropriate usage scenarios or warns against misuse. The only implied context is the tool's name and sibling relationships, which is not explicit enough.

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

browser_initA

Initialize a browser session with configurable options: headless mode, proxy, viewport, video recording, resource filtering, biometric anti-detection hardware spoofing (WebGL, Canvas, AudioContext), and WebRTC leak protection. Automatically recovers stale sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault
proxyNo
headlessNo
aiHealingNoEnable selector fallback when a selector does not match
recordVideoNoRecord continuous video of the session
widgetAssistNoAutomatically interact with embedded page widgets and challenge elements when present
enableBlockerNoFilter auxiliary scripts, telemetry, and background tracking requests
contextOptionsNoPlaywright BrowserContext options (viewport, userAgent, geolocation, permissions, httpCredentials, extraHTTPHeaders, etc.)
blockWebRTCLeaksNoPrevent local IP leaks via WebRTC when using proxies
spoofFingerprintNoSpoof WebGL vendor/renderer, Canvas noise, and AudioContext to defeat bot fingerprinting

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden and does add some behavioral context: it mentions automatic recovery of stale sessions and exposes anti-detection/WebRTC protections. But it does not disclose consequences such as browser process lifetime, resource consumption, or the need to later call browser_close.

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

Conciseness5/5

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

Two sentences with no filler: the first states the core action and enumerates capabilities, the second adds an important recovery behavior. The most important verb ('Initialize') is front-loaded.

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 9-parameter tool with no output schema and no annotations, the description is too thin: it never states what the tool returns or how the agent knows initialization succeeded. It also omits setup details like proxy formatting or how contextOptions interact with defaults, leaving the agent to infer success criteria.

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

Parameters4/5

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

Schema documentation already covers 7 of 9 parameters, and the description adds useful semantic grouping (e.g., 'biometric anti-detection hardware spoofing (WebGL, Canvas, AudioContext)' for spoofFingerprint, 'resource filtering' for enableBlocker, 'WebRTC leak protection' for blockWebRTCLeaks). This goes beyond the bare schema labels without being redundant.

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 opens with the specific verb 'Initialize' and a clear resource ('a browser session'), and the enumerated configuration options make its scope explicit. Among sibling tools like navigate, browser_close, and wait, this is unambiguously the session-start 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 implies it should be used to start a browser session but never states when to call it, such as before navigation actions, or when not to use it. It also does not mention alternatives or warn against re-initializing an existing session, beyond the vague recovery behavior.

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

clickB

Click or drag a page element by CSS selector or annotation ID. Supports drag-and-drop / slider manipulation via dragTo, iframe context, hover before click, video player API, and automatic retry with fallback selectors.

ParametersJSON Schema
NameRequiredDescriptionDefault
delayNo
aiHealNoTry alternative selector if primary fails
dragToNoDrag and drop the source element to target selector or coordinates with biological friction and overshoot correction
iframeNoTarget a specific iframe by index (use media_extractor list_iframes to get index)
retriesNoRetry count on failure
timeoutNoMax time to wait for element to appear (ms)
selectorNoCSS selector for the element to click
hoverOnlyNoHover only, do not click (to reveal hidden controls)
humanLikeNoSmooth cursor movement before click
clickCountNo
forceClickNoClick via JavaScript even if element is not visible
hoverFirstNoHover over element before clicking (for dynamic controls)
waitForPlayNoWait until the video starts playing after click
annotationIdNoAnnotation number from see_page(annotate:true) β€” use instead of selector
usePlayerAPINoControl video player via its JavaScript API instead of DOM click
hoverDurationNoWait time after hover before clicking (ms)
playerTimeoutNoMax time to wait for video playback to start (ms)
iframeSelectorNoTarget a specific iframe by CSS selector
scrollIntoViewNoScroll element into view before clicking
autoDetectPlayerNoDetect and target embedded video player iframes automatically
autoAcceptDialogsNoAuto-dismiss browser dialogs (alerts, confirms)

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral disclosure burden. It does reveal several behaviors: drag simulation with biological friction, iframe targeting, hover-before-click, video player API control, and automatic retry with fallback selectors. However, it omits side effects like auto-dismissing dialogs, force-click via JavaScript, and potential navigation outcomes from clicking.

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 dense sentence that front-loads the core action and then lists supported capabilities. It is efficient with no filler, though the feature list is somewhat packed and could benefit from slight structural separation.

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

Completeness3/5

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

For a tool with 21 parameters, nested objects, and no output schema, the description gives a useful high-level summary but relies heavily on the schema for invocation details. It does not address return behavior or clarify which combinations of options are mutually exclusive or complementary, leaving moderate gaps for an agent selecting parameters.

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 90%, so the input schema already documents most parameter meanings. The description only names feature areas like dragTo and iframe handling without adding semantic detail beyond the schema, matching the baseline for high coverage.

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 opens with a specific verb and resource: 'Click or drag a page element by CSS selector or annotation ID.' It clearly states what the tool does and how elements are targeted, and the click/drag scope distinguishes it from sibling input tools like type and press_key.

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 gives no explicit guidance on when to prefer this tool over alternatives such as type, press_key, or see_page. Usage context is only implied by the tool name and the action verb, with no exclusions or routing recommendations.

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

deep_analysisA

Inspect the current page in depth: DOM structure, scripts, stylesheets, accessibility, performance metrics, SEO tags, response headers, loaded technologies, and content-loading strategy recommendations.

ParametersJSON Schema
NameRequiredDescriptionDefault
detailedNo
aiInsightsNoInclude loading strategy recommendations
detectAccessControlsNoIdentify embedded widgets and page components

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden and does identify the tool as an inspection ('Inspect') that covers many read-oriented aspects of a page. However, it does not disclose whether the operation is truly read-only, whether it triggers network requests, how long it may take, or how results are returned. The listed coverage areas provide useful transparency, but side effects and output behavior remain unclear.

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 dense sentence that front-loads the main purpose ('Inspect the current page in depth') before listing coverage areas. It is compact and free of filler, though the long enumerate list is slightly run-on and could be structured with separators or short phrases for easier scanning.

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

Completeness3/5

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

For a broad analysis tool with no output schema and no annotations, the description lists what is inspected but not what the agent should expect in return, whether results are aggregated, or how the optional boolean parameters alter the output. It is adequate for a first-order understanding but leaves operational detail unexplained.

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 only 67%, and the tool description adds no parameter-level meaning. The 'detailed' boolean is left undocumented, and the 'detectAccessControls' schema description ('Identify embedded widgets and page components') appears mismatched with the parameter name. The tool description echoes 'content-loading strategy recommendations' which maps to aiInsights, but that is redundant with the schema rather than additive.

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

Purpose5/5

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

The description uses a specific verb ('Inspect') and a concrete resource ('the current page'), and then enumerates a distinctive set of inspection areas (DOM, scripts, stylesheets, accessibility, performance, SEO, response headers, technologies, loading strategies). This makes it clearly distinguishable from sibling tools like see_page or get_content, which are narrower content/visual viewers.

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

Usage Guidelines3/5

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

The description implies the tool is for comprehensive, multi-faceted page analysis, but it does not explicitly state when to use it over siblings such as see_page, get_content, extract_data, or api_analyzer. There are no when-not-to-use conditions or alternative routing hints, leaving the agent to infer the intended use case.

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

execute_jsB

Execute custom JavaScript in the page context with async support, return value capture, and iframe targeting.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesJavaScript code to execute in the page context
asyncNoWrap code in an async function
iframeNoExecute inside a specific iframe (0 = main frame, 1+ = iframe by index)
timeoutNo
returnValueNoReturn the result of the expression
waitForIframeNoWait for the iframe to finish loading before executing
iframeSelectorNoExecute inside iframe matched by CSS selector

TDQS

B3.4/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 disclosing behavior. It does mention several key traits: async execution, return value capture, and iframe targeting. However, it is silent on side effects of arbitrary JS execution, error handling, page-state impact, or limitations, which is a notable gap for a high-privilege execution 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 filler. It front-loads the core purpose and then lists the key capabilities compactly, making it easy for an agent to parse quickly.

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

Completeness2/5

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

For a complex, potentially side-effect-heavy tool with 7 parameters and no annotations or output schema, the description is too sparse. It does not explain how return values are serialized, how iframe selection behaves in edge cases, what happens on timeout or JS errors, or what side effects may occur in the page.

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 high (86%), so the schema already documents most parameters. The description adds context around code, async, return value, and iframe targeting, but it does not clarify timeout, waitForIframe behavior, or the relationship between iframe and iframeSelector beyond what the schema provides.

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

Purpose5/5

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

The description clearly states a specific action ('Execute'), a resource ('custom JavaScript in the page context'), and includes differentiators: async support, return value capture, and iframe targeting. This makes it immediately distinct from sibling tools like click, type, or navigate.

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 explicit guidance on when to use this tool versus alternatives, nor does it mention exclusions or conditions where built-in browser actions should be preferred. Usage is only implicitly inferable from the phrase 'custom JavaScript'.

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

extract_dataB

Extract structured data from the current page in multiple modes: regex, json, meta, structured, auto, apiDiscovery, parse (string conversion), transform (data format conversion), or links (all links including nested iframes).

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoauto
flagsNoRegex flagsgi
typesNoFor meta mode: which tag groups to include (all, meta, og, twitter)
sourceNoall
patternNoFor regex mode: the regular expression pattern
jsonPathNoFor json mode: JSONPath expression
selectorNoFor structured/links mode: CSS selector to scope the extraction
inputDataNoFor transform mode: the string to convert
keyOffsetNoFor transform mode: offset value (optional)
autoDecodeNoAutomatically process Base64 or percent-encoded values in results
transformKeyNoFor transform mode: optional conversion parameter
autoDetectKeyNoFor transform mode: locate the conversion parameter from page scripts automatically
includeHiddenNoFor links mode: include hidden/non-visible links
searchIframesNoFor links mode: search inside embedded frames

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 the full burden of behavioral disclosure. It does add useful scope information: extraction is from the current page, and links mode includes nested iframes. However, it does not disclose return behavior, auto-mode behavior, potential side effects, or whether any network/API calls are triggered by modes like apiDiscovery.

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, dense sentence with the core action front-loaded and the mode list following. It is efficient and contains no filler, though the long comma-separated list is somewhat heavy and could benefit from clearer grouping or line breaks.

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

Completeness2/5

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

This is a complex 14-parameter tool with no output schema and no annotations, so the description must compensate. It provides a useful mode inventory but does not explain mode-to-parameter mapping, default behavior, return values, or failure modes. An agent would likely need to inspect the schema carefully and still be uncertain about how modes like apiDiscovery or transform behave end-to-end.

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

Parameters4/5

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

Schema description coverage is high at 86%, so the baseline is 3. The description adds value beyond the schema by defining ambiguous mode names: parse is 'string conversion,' transform is 'data format conversion,' and links mode explicitly covers nested iframes. This helps an agent understand the enumeration beyond raw parameter metadata.

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 states a clear verb and resource: 'Extract structured data from the current page,' and enumerates distinct extraction modes (regex, json, meta, structured, etc.). It does not explicitly differentiate from sibling tools like get_content or deep_analysis, but the mode list gives enough specificity that the purpose is not ambiguous.

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 gives no guidance on when to use this tool versus alternatives like get_content, api_analyzer, or media_extractor. It does not mention prerequisites, recommended modes for common scenarios, or exclusions. The only implicit usage signal is that it operates on the current page.

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

get_contentB

Get page content in multiple formats: html, text, markdown, rawHttp, or elements. Extracts text, attributes, or bounding box coordinates. Can save directly to a file.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoFind elements containing this text
xpathNoXPath selector
formatNotext
saveAsNoAbsolute file path to save extracted content to disk
timeoutNo
multipleNoReturn multiple matching elements (for format=elements)
selectorNoCSS selector
waitForJSNoWait for JavaScript to finish rendering
rawHttpUrlNoURL to fetch raw HTTP without JS rendering. Defaults to current page URL.
includeMetaNoInclude page title and URL at the top
extractAttributesNoExtract all element attributes

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral disclosure burden. It does add meaningful context: content can be returned in multiple formats, text/attributes/bounding boxes can be extracted, and results can be saved to a file. However, it does not disclose what is returned when saveAs is used, the effect of waitForJS, or whether rawHttp bypasses the browser rendering, leaving some behavioral 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 only two sentences, front-loads the core purpose and format options, and avoids filler. Every sentence adds useful information about what the tool does or supports.

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 11 parameters, no annotations, and no output schema, the description is adequate but not complete. It explains the core operation and parameter-backed capabilities, but it does not describe the return contract, especially the behavior when saveAs is used, nor does it clarify how this tool relates to extract_data and see_page.

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 high at 82%, so the baseline for this dimension is 3. The description adds a little extra meaning by mentioning bounding box coordinates and file saving, which map to format=elements and saveAs, but it does not meaningfully clarify undocumented params like timeout or format beyond what the schema already 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 'Get' and the resource 'page content', then names the available formats (html, text, markdown, rawHttp, elements) and types of extraction (text, attributes, bounding box coordinates). It does not explicitly differentiate this from sibling tools like extract_data or see_page, so it falls just short of a 5.

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

Usage Guidelines2/5

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

No guidance is given about when to prefer get_content over nearby sibling tools such as extract_data, see_page, or navigate. The description implies format-based use cases, but there are no exclusions, prerequisites, or explicit alternative-selection cues.

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

media_extractorB

Extract and control media from the current page. Supports 6 actions: extract (find video/audio/HLS/DASH/download URLs including nested iframes), list_iframes, switch_iframe, player_control (play/pause/seek/sources via player API), decode_url (inspect converted string and token formats), batch_extract.

ParametersJSON Schema
NameRequiredDescriptionDefault
deepNoAlso scan inline scripts and data attributes
urlsNoList of URLs for batch_extract action
indexNoiframe index number
typesNoMedia types to find: video, audio, hls, dash, download, iframes
actionNoextract
qualityNobest
selectorNoiframe CSS selector
decoderIVNoOptional secondary parameter (for custom conversion)
aiOptimizeNoSelect extraction strategy automatically
decoderKeyNoOptional transformation parameter (for custom conversion)
decoderTypeNoConversion type: auto-detect, url, base64, or customauto
encodedDataNoString data to convert (for decode_url action)
playerActionNoinfo
searchIframesNo

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 must carry the behavioral disclosure burden. It does disclose some behavior: extraction includes nested iframes, player_control operates 'via player API', and decode_url 'inspect[s] converted string and token formats.' However, it does not explain important behavioral aspects such as return values, side effects of switching iframes, what batch_extract returns, or how aiOptimize changes behavior. It is minimally adequate but not rich.

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 dense sentence that front-loads the core purpose and then compactly lists the six actions with brief parenthetical explanations. There is no filler or redundancy. It is concise and easy to scan, though a bulleted structure could have improved readability given the multi-action nature.

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

Completeness2/5

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

This is a 14-parameter, 6-action tool with no output schema and no annotations, so the description carries a heavy completeness burden. It outlines the actions but omits critical invocation context: which parameters are required for each action, what the output shape is, how iframe switching is resolved, and how decode_url parameters should be supplied. The description is a useful summary but not complete enough for an agent to confidently invoke many of the actions.

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 71%, so the description is expected to add meaning for the remaining gaps and for cross-parameter relationships. It names actions like batch_extract, decode_url, and player_control but does not clarify which parameters apply to which actions, how decoderKey/decoderIV/encodedData interact, or how index/selector relate to iframe actions. The action names mostly repeat the schema enum, adding little parameter-level value.

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

Purpose5/5

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

The description starts with a specific verb-resource pairing: 'Extract and control media from the current page.' It then enumerates six concrete actions, which clearly differentiates this tool from the sibling set (e.g., get_content, network_recorder, extract_data). The purpose is immediately understandable and not a mere restatement of the tool name.

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

Usage Guidelines2/5

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

The description lists supported actions but provides no guidance on when to use this tool instead of sibling alternatives like network_recorder, extract_data, or execute_js. There are no explicit conditions, exclusions, or routing hints. Usage context is only implied by the phrase 'from the current page' and the action list.

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

network_recorderC

Record, inspect, and control network activity. Supports 14 actions: start, stop, get, clear, get_media, get_navigations, get_api_calls, get_intercepted_apis, get_websockets, get_graphql, export_har, block_urls (block images/trackers to boost speed 3x-5x), mock_route (intercept & mock API responses), clear_routes.

ParametersJSON Schema
NameRequiredDescriptionDefault
mockNoConfiguration for mock_route action
actionNoget
filterNo
patternsNoURL patterns or glob filters for block_urls action (e.g. ["*.png", "*.jpg", "*google-analytics*"])
captureXhrBodyNoCapture fetch/XHR response bodies (JSON or form-urlencoded)
aiDetectStreamsNoIdentify video and audio stream URLs in recorded requests

TDQS

C2.9/5.0
Behavior2/5

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

With zero annotations, the description carries the full disclosure burden, but it only adds two behavioral hints: the 3x-5x speed-boost claim for block_urls and the intercept/mock behavior of mock_route. It says nothing about side effects of start/stop/clear/clear_routes, whether recorded data persists, whether blocking or mocking survives navigation, or what the get actions return.

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 main purpose is front-loaded in the first clause, and the action enumeration is dense but information-bearing β€” the parentheticals on block_urls and mock_route earn their place. It is a long single sentence, which slightly hurts scannability, but there is no wasted wording.

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

Completeness2/5

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

This is a high-complexity tool: 14 actions, 6 parameters including nested objects, no output schema, and no annotations. The description answers 'what actions exist' but not 'when to use them', 'what happens when invoked', or 'what the recorded data looks like'. For an umbrella tool of this size, the description is a catalog, not a usable guide.

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

Parameters3/5

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

Schema coverage is 67% (4 of 6 params documented), with the nested filter object and the action enum lacking schema descriptions. The description partly compensates by spelling out all 14 action values with parenthetical meaning for the two least obvious ones (block_urls and mock_route). However, filter's subfields (type, mediaOnly, urlPattern, resourceType) remain unexplained in both schema and description.

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 opens with a clear verb+resource statement ('Record, inspect, and control network activity') and then enumerates 14 concrete actions, giving an agent a precise map of the tool's scope. It differentiates from browser-interaction siblings like click/type/navigate through the network focus, though it does blur slightly against api_analyzer and media_extractor given the overlapping get_api_calls/get_media 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?

No guidance is given on when to pick this tool over network-adjacent siblings. The description never names api_analyzer, media_extractor, or redirect_tracer as alternatives, nor does it explain which of the 14 actions fits which scenario. An agent must infer usage entirely from action names.

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

press_keyB

Press keyboard keys with configurable modifier keys, repeat count, and keystroke delay.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesKey name (e.g. Enter, Tab, ArrowDown, a)
countNoNumber of times to press the key
modifiersNoModifier keys (Alt, Control, Meta, Shift)
humanDelayNoAdd natural delay between repeated presses

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are present, so the description carries the full burden of behavioral disclosure. It mostly paraphrases the schema parameters and does not explain focus requirements, potential global or browser-level effects, or any side effects of pressing keys. This is minimal disclosure for a tool that simulates input.

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

Conciseness5/5

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

The description is a single, concise sentence that front-loads the action and resource. Every phrase earns its place, with no redundant or vague filler.

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

Completeness3/5

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

For a relatively simple tool with fully documented parameters, the description is minimally adequate. However, it omits important context such as when to use this tool versus type, and whether the key press targets the page or the browser UI, which an agent would need to call it correctly in the right situation.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameters are already well documented. The description adds no new semantic detail beyond summarizing modifier keys, repeat count, and keystroke delay, which is already visible 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 states a specific verb ('Press') and resource ('keyboard keys'), and lists configurable aspects such as modifiers, repeat count, and delay. It is clear enough to be distinguished from sibling tools like click, though it does not explicitly differentiate itself from type.

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 when to use the tool β€” any time keyboard keys need to be pressed with modifiers or repetition β€” but it does not explicitly state when to prefer it over alternatives like type or click. No exclusions or comparison to sibling tools are provided.

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

progress_trackerC

Track multi-step task progress with estimated time remaining.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNoget
progressNoProgress value from 0 to 100
taskNameNo
aiEstimateNoEstimate remaining time from current progress rate

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description must disclose side effects, but it says only that progress is tracked and time is estimated. It fails to mention that start/update/complete/clear mutate internal state, that updates are incremental, or how estimates are calculated beyond the schema hint on aiEstimate.

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 one-sentence description is tight and front-loaded, with no filler. It is appropriately concise but so short that it sacrifices informative content, though that tradeoff is accounted for in other dimensions.

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

Completeness2/5

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

For a multi-action stateful tool with no annotations and no output schema, the description is incomplete. It doesn't explain the action lifecycle, how taskName scopes state, what 'get' returns, or what 'clear' resets. An agent would need to inspect the schema and infer usage from enum names.

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

Parameters2/5

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

Schema coverage is only 50%, and the description compensates poorly: it adds context for progress and aiEstimate but says nothing about the required action enum semantics or what taskName identifies. The action parameter with five enum values is left entirely unexplained, which is a significant gap for a stateful tool.

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 states a clear verb ('track') and resource ('multi-step task progress') and adds the differentiator of estimated time remaining. It separates the tool from its browser-automation siblings, though it does not mention the action state machine or specific operations.

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?

There is no guidance on when to use this tool versus alternatives, nor any conditionals like 'use start before update' or 'use get to retrieve current progress'. The description gives a general purpose but no practical direction for the agent on selecting or sequencing calls.

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

random_scrollB

Scroll the page with configurable direction, amount, and automatic lazy-load triggering.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountNoPixels to scroll. 0 = auto-decide based on page content height
smoothNo
directionNosmart
aiDetectLazyLoadNoDetect and trigger lazy-loaded content

TDQS

B3.1/5.0
Behavior2/5

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

No annotations exist, so the description carries the full burden of behavioral disclosure. It mentions lazy-load triggering but does not explain side effects, the meaning of 'smart' or 'random' direction, what happens with amount=0, or whether scrolling may trigger network requests or wait for content. This is under-disclosed for an interaction 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, front-loaded sentence with no wasted words. It efficiently conveys the core action and key options before the schema details are needed.

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?

With no annotations and no output schema, the description is too short to fully equip an agent. It lacks guidance on direction semantics, default behavior, when to invoke this tool, and what observable effects or return value to expect.

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 only 50%, so the description should compensate. It restates that direction, amount, and lazy-loading are configurable, but adds no new meaning beyond the parameter names and existing schema descriptions. It omits the 'smooth' parameter entirely and does not clarify the ambiguous 'smart' direction value.

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

Purpose5/5

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

The description names a specific verb ('Scroll'), a specific resource ('the page'), and the configurable aspects (direction, amount, lazy-load triggering). Among the sibling tools, none other is a scrolling tool, so this is clearly differentiated.

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 gives no guidance on when to use this tool versus alternatives. It does not mention conditions such as 'use when content is below the fold' or 'use for lazy-loaded pages', nor does it suggest a sibling tool for other cases.

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

redirect_tracerA

Trace the complete redirect chain of a URL. Tracks HTTP 301/302, JavaScript navigation (window.location, setTimeout), and meta refresh tags. Returns the full path with status codes and headers.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
timeoutNoNavigation timeout in ms
followJSNoTrack JavaScript-triggered navigations
decodeURLsNoAutomatically decode percent-encoded URLs in the chain
followMetaNoTrack meta refresh redirects
maxRedirectsNo
includeHeadersNo

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral disclosure burden and does name the redirect mechanisms it follows and the return data. However, the claim that the result includes headers is at odds with the schema's includeHeaders default false, and it does not clarify whether tracing performs a live browser navigation that could affect the current session 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?

Two sentences with no filler. The core action is front-loaded, and each clause adds useful information: which redirect mechanisms are tracked and what the tool returns.

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

Completeness3/5

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

The core behavior and return summary are present, but because there is no output schema and no annotations, important context is missing: whether the path is a list of hop objects, how headers depend on includeHeaders, and whether the trace mutates the current browser page. The schema defaults help, but they do not fully compensate for these gaps.

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

Parameters2/5

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

Schema coverage is only 57%, yet the description adds no parameter-specific guidance for the undocumented url, maxRedirects, or includeHeaders fields. The mention of returned headers conflicts with the includeHeaders default, and the redirect-type details do not explain how the followJS and followMeta booleans affect the output.

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 states a clear action ('Trace the complete redirect chain'), the concrete resource (a URL), and the exact tracking scope (HTTP 301/302, JavaScript navigation, meta refresh). It also states the return value, which makes it easy to distinguish this tool from browser-navigation or network-capture siblings.

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 behavior implies the use case: analyze why a URL ends up where it does. However, the description never explicitly says when to choose this tool over alternatives such as replay_request or network_recorder, nor does it mention any exclusions or conditions.

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

replay_requestB

Re-send a network request inside the page context, reusing the current session headers.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
bodyNo
methodNoGET
headersNo

TDQS

B3.1/5.0
Behavior3/5

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

There are no annotations, so the description carries the full burden of behavioral disclosure. It discloses two meaningful behaviors: execution happens inside the page context and session headers are reused. However, it does not state whether the request triggers navigation, whether the response is returned, or that re-sending a request may have side effects on the server.

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

Conciseness5/5

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

The description is a single, focused sentence with no wasted words. The core scoping constraints, 'inside the page context' and 'reusing the current session headers', are front-loaded and immediately useful to an agent.

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 four parameters, no annotations, and no output schema, the description omits significant contextual details: what the tool returns, whether it performs a page navigation, how body and headers interact with the original request, and whether replaying is safe. It gives a good one-line summary but is not complete enough for an agent to invoke it confidently in varied situations.

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%, and the description mentions none of the four parameters (url, body, method, headers). It does not clarify how the headers parameter interacts with the reused session headers, what format body expects, or how the method default works. The description adds no parameter-level meaning beyond the schema.

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

Purpose4/5

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

The description uses a specific verb ('Re-send') and a clear resource ('network request inside the page context'), and notes that it reuses the current session headers. It is distinct enough from siblings like navigate or execute_js, though it does not explicitly name an alternative.

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 phrase 'inside the page context, reusing the current session headers' implies when to use the tool: when the agent needs to replay a request with existing session/auth state. However, it gives no explicit guidance about when not to use it, nor does it identify alternatives among the many sibling tools.

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

see_pageA

Capture a snapshot of the current page. Returns a screenshot image together with optional full-page text, an interactive element map (buttons, links, inputs with position and selector), and an iframe inventory β€” all in a single call.

Workflow: Call once with fullPage:true and annotate:true. From that snapshot, run all planned actions (click, type, scroll, wait, extract) as a steps array without re-capturing the page. Call see_page again only when the page genuinely changes (new navigation, modal, or dynamic content load).

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoFile path to also save the screenshot image
stepsNoActions to run sequentially right after capturing the page, without re-capturing between steps. Supported: click, type, press_key, scroll, wait, extract, see, drag, hover, double_click, triple_click, idle.
formatNojpeg
qualityNoJPEG quality 0-100
annotateNoDraw numbered bounding boxes over interactive elements for precise targeting
fullPageNoCapture the full scrollable page instead of only the visible viewport
autoHoverNoHover over navigation menus before capturing to reveal dropdowns
maxElementsNoMaximum number of interactive elements to map
scanIframesNoList embedded iframes with their index and URL
stopOnErrorNoStop step execution on first failure
captureAfterNoTake a screenshot after the steps array completes
captureBeforeNoTake a screenshot before running the steps array
includeDomTextNoInclude the full DOM text content
watchMutationsNoReport DOM mutations (popups, alerts) since the last capture
includeElementsNoInclude the interactive element map in the response
includePageTextNoInclude cleaned page text

TDQS

A3.9/5.0
Behavior4/5

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

No annotations are provided, so the description carries the burden of explaining behavior. It discloses the composite response, the ability to execute a steps array of actions without re-capturing, and the expected re-capture cadence. It does not explicitly warn that actions like click or type can mutate the live page, but this is strongly implied by the workflow.

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 compact and front-loaded: the first sentence states exactly what is returned, and the second sentence gives actionable workflow guidance. There is no filler or repetition of schema details, every sentence earns its place.

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

Completeness3/5

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

The tool has 16 parameters, a complex nested steps array, and no output schema. The description gives a high-level return description and workflow, but it does not specify how the screenshot is returned, how the element map is structured, or how captureBefore/captureAfter defaults affect the response. These gaps are meaningful for an agent trying to consume the result correctly.

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 94%, so the schema already documents most parameters. The description adds useful workflow-level meaning by recommending fullPage:true and annotate:true and explaining how the steps array should be used, but it does not add substantial per-parameter semantics beyond what the schema already states.

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 opens with a specific verb and resource: 'Capture a snapshot of the current page.' It then enumerates a concrete composite return value: screenshot, optional full-page text, interactive element map, and iframe inventory. This clearly separates it from navigation or isolated action tools, though it does not explicitly name a sibling it is not.

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 workflow paragraph is strong: it tells the agent to call once with fullPage:true and annotate:true, run all planned actions as a steps array, and not call see_page again until the page genuinely changes. This provides clear when-to-use and when-not-to-use guidance, though it does not explicitly contrast with sibling tools like click or type.

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

solve_captchaC

Automate form completion and interactive widget verification on web pages. Supports JavaScript-based challenge widgets, image text transcription, and intelligent form field mapping for QA and automated browsing workflows.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoText recognition language code: eng, hin, or eng+hineng
typeNoWidget type: js_widget (JavaScript-based embedded challenge widget), text (text transcription verification), image (image-based input), auto (detect automatically).auto
iframeNoTarget a specific iframe by index
submitNoSubmit the form after filling all fields
aiMatchNoMatch form fields by semantic similarity even if names differ
timeoutNo
formDataNoKey-value pairs of form fields to fill (field names matched automatically to page inputs)
humanLikeNoType with variable keystroke delays
maxRetriesNoMaximum refresh attempts before giving up
allowedCharsNoCharacter set allowed in the answer
analyzeFirstNoInspect page structure before filling fields
formSelectorNoCSS selector for the form element (auto-detected if not provided)
inputSelectorNoCSS selector for the answer input field
expectedLengthNoExpected character length of the answer
iframeSelectorNoTarget a specific iframe by CSS selector
widgetSelectorNoAlias for captchaSelector
captchaSelectorNoCSS selector targeting the verification element, canvas, image, or interactive widget container
refreshSelectorNoCSS selector for the reload/refresh button
preferTextFallbackNoReturn text-only guidance instead of an image when the model cannot process images

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It states that the tool automates form completion and widget verification, but it doesn't disclose side effects like form submission, page interaction, retries, or the risk of triggering anti-bot protections. Key behavioral parameters such as submit, maxRetries, and humanLike are left to the schema rather than explained in the description.

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 short and structured as two sentences without filler. It loses a point because 'interactive widget verification' is vague euphemism for captcha solving and the first sentence could more directly state the tool's unique purpose.

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

Completeness2/5

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

This is a complex tool with 19 parameters, no annotations, and no output schema, so the description must carry substantial context. It provides an overview of capabilities but omits return behavior, failure modes, and how it composes with the other browser automation siblings. An agent would need to infer important invocation context from the schema alone.

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 high (95%), so the baseline is 3. The description adds no parameter-level detail, but nearly every parameter already has a clear schema description, including the enum for type and selectors for captcha-specific targeting.

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 identifies the tool's verb (automate) and resources (form completion, interactive widget verification on web pages), and lists concrete supported capabilities like JavaScript challenge widgets and image text transcription. However, it doesn't explicitly differentiate itself from sibling tools like type or click, relying on the tool name and higher-level scope to set it apart.

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?

There is no guidance about when to use this tool versus alternatives such as type, click, or execute_js. The mention of 'for QA and automated browsing workflows' provides a general audience but not conditions, exclusions, or alternative tool routing.

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

storage_inspectorC

Inspect and manage client-side storage & sessions. Supports 6 actions: cookies (get all current cookies), save_session (persist cookies & storage state to file), load_session (restore state from file without re-logging), clear_cookies, indexeddb, service_workers.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNocookies
sessionPathNoFile path to save or load session state (cookies & localStorage) from disk

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It does reveal that save_session persists state and load_session restores it, but it omits important behaviors: what clear_cookies, indexeddb, and service_workers do beyond their names, whether load_session overwrites current state, whether save_session prompts or overwrites files, and any side effects on the active session. The mutating nature and potential side effects are not sufficiently disclosed.

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 compact and well-organized as an action list. The opening sentence front-loads the core purpose, and the parenthetical explanations are short. It is efficient, though the last few actions receive no detail, making the list slightly uneven in clarity.

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 six-action tool with no output schema, the description is incomplete. It does not specify return values, required arguments per action, error cases, or the behavior of undocumented actions. An agent would need to guess what indexeddb and service_workers return or how they affect the browser. The tool is complex enough that more detail is necessary for correct invocation.

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 50% (sessionPath has a description). The description adds meaning for three of the six action enum values (cookies, save_session, load_session), but leaves clear_cookies, indexeddb, and service_workers as bare names with no explanation. It does not clarify that sessionPath is only relevant for save_session/load_session, leaving the agent to infer parameter applicability. Partial compensation for schema gaps.

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: 'Inspect and manage client-side storage & sessions' and lists six specific action names with brief explanations for most. It identifies a unique domain (storage/sessions) that is distinct from sibling browser-automation tools, though it does not explicitly contrast itself with any sibling.

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 is given about when to use this tool versus alternatives. The action descriptions imply some use cases (e.g., 'restore state from file without re-logging'), but there is no direct statement of when to prefer storage_inspector over other tools or when not to use it. Context is left entirely to the agent's inference.

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

typeB

Type text into an input field with configurable keystroke delay, field clearing, and iframe support.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
clearNoClear the field before typing
delayNoDelay between keystrokes in ms
aiHealNoTry alternative selector if primary fails
iframeNoTarget a specific iframe by index
selectorNoCSS selector for the input field
pressEnterNoPress Enter after typing
annotationIdNoAnnotation number from see_page(annotate:true) β€” use instead of selector
iframeSelectorNoTarget a specific iframe by CSS selector
waitForSelectorNoWait for the element to appear before typing

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden and does disclose configurable keystroke delay, field clearing, and iframe targeting. However, it omits other significant default behaviors such as waiting for the selector, AI-based selector healing, the option to press Enter, and the fact that clearing defaults to true.

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?

A single front-loaded sentence communicates the core action and key capabilities with no filler or repetition. Every phrase earns its place.

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

Completeness3/5

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

For a 10-parameter tool with no annotations and no output schema, the one-sentence description is minimally adequate: it orients the agent and the schema fills the parameter details. Still, it leaves important contextual gaps around selector versus annotationId targeting, iframe selector/index options, and default wait/heal behavior.

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

Parameters3/5

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

Schema description coverage is 90%, so the schema already documents nearly all parameters. The description adds only a loose mapping to delay, clear, and iframe options and does not clarify the selector-versus-annotationId choice, but it does not need to compensate for missing 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 uses a specific verb-resource pairing, 'Type text into an input field', which clearly distinguishes it from navigation or clicking tools. It also names several option classes (delay, clearing, iframe support) that make the tool's scope evident, though it does not explicitly contrast it with siblings like press_key.

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?

There is no guidance on when to choose this tool over alternatives such as press_key or click, nor any conditions or exclusions. The intended context is implied by 'input field' but never stated as a selection rule.

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

waitA

Wait for a selector, navigation event, networkidle state, or a fixed timeout before continuing.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNotimeout
valueNoSelector string or timeout value in ms
timeoutNo

TDQS

A3.7/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 does disclose the four wait modes, which is substantive, but it omits meaningful behaviors: what happens when the selector is not found or the timeout elapses (error vs. continue), whether selector waits for appearance or visibility, and what 'networkidle' actually waits for. These are real unknowns for a tool that controls execution flow.

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?

A single, front-loaded sentence with zero wasted words. It opens with the verb, immediately enumerates all four wait targets, and communicates the purpose in one pass β€” an agent can grasp the full scope at a glance.

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

Completeness3/5

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

The tool is simple with zero required parameters, and the schema defaults (type='timeout', timeout=30000) plus the description's type list cover basic invocation. However, the per-type parameter interplay, default behavior when only 'type' is supplied, and failure/error semantics are left unstated, which matters for a tool whose purpose is controlling the flow of a browsing session.

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 only 33% β€” only 'value' is documented in the schema, while 'type' and 'timeout' lack descriptions. The tool description adds value by enumerating the wait types and clarifying that the timeout value is in milliseconds, but it does not explain which parameters are required per type or how the 'value' field relates to the numeric 'timeout' parameter beyond the phrase 'timeout value in ms.'

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 states a specific verb ('wait for') and a clear resource scope: 'a selector, navigation event, networkidle state, or a fixed timeout before continuing.' These four wait targets map exactly to the schema enum, and no sibling tool performs a wait-like operation, so it is easily distinguished from navigate, click, and get_content without opening the schema.

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

Usage Guidelines3/5

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

The phrase 'before continuing' implies a synchronization use case between page interactions, which gives some contextual guidance. However, there is no explicit when-to-use explanation, no conditions for choosing one wait type over another, and no named alternatives β€” though no sibling provides a comparable wait capability, so the exclusion guidance is largely unnecessary.

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

Tool Schema Changelog

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

  1. 21 tool updatesv3.2.13
    • First observedapi_analyzer
    • First observedbrowser_close
    • First observedbrowser_init
    • First observedclick
    • First observeddeep_analysis
    • First observedexecute_js
    • First observedextract_data
    • First observedget_content
    • First observedmedia_extractor
    • First observednavigate
    • First observednetwork_recorder
    • First observedpress_key
    • First observedprogress_tracker
    • First observedrandom_scroll
    • First observedredirect_tracer
    • First observedreplay_request
    • First observedsee_page
    • First observedsolve_captcha
    • First observedstorage_inspector
    • First observedtype
    • First observedwait

TDQS

B3.2/5.0
Disambiguation3/5

Most tools have distinct purposes, but there is meaningful overlap among get_content, extract_data, see_page, and deep_analysis, all of which can be used to access page content or structure. Network_recorder and api_analyzer also overlap somewhat around API inspection. The detailed descriptions help, but an agent could still hesitate when choosing between them.

Naming Consistency3/5

All names are lowercase snake_case, which helps, but conventions are mixed: some are bare verbs (wait, navigate, click, type), some are verb_noun (extract_data, press_key), and several are noun-style tool names (network_recorder, media_extractor, storage_inspector, api_analyzer). This is readable but not a consistent verb_noun pattern.

Tool Count3/5

At 21 tools, the server sits in the heavy range for an MCP surface. The broad browser-automation domain justifies many capabilities, but several tools are niche and could be consolidated, making the overall count feel sprawling rather than tightly scoped.

Completeness4/5

The core browser lifecycle is well covered: init, navigate, click, type, scroll, wait, extract, and close, plus network, storage, media, and session persistence. Minor gaps remain, such as no dedicated file upload/download or explicit select/assert tool, but these can generally be worked around via execute_js or existing interactions.

Maintenance

ActivityActive
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
    Not graded
    quality
    A
    maintenance
    Enables AI agents to perform undetectable browser automation that bypasses Cloudflare, antibots, and social media blocks. Provides 105 tools for element extraction, network debugging, and real-world web scraping with a 98.7% success rate on protected sites.
    1,883
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Stealth browser automation for AI agents, using source-patched Chromium to bypass bot detection systems like Cloudflare, reCAPTCHA, and FingerprintJS.
    28
    Apache 2.0

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/codeiva11/Real-Browser-Mcp'

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