Skip to main content
Glama
reacerland

antibrowser-mcp

by reacerland

Antibrowser MCP

A stdio MCP server built on cloakbrowser (stealth Chromium) that lets LLM agents open web pages and interact with them via a browser-use-style accessibility tree with numeric indices — keeping token usage low.

Features

  • Persistent user profile at $HOME/.antibrowser/data-dir (cookies, localStorage, cache survive restarts).

  • Accessibility-tree snapshot: LLM receives an indexed text like [1] button "Submit" and calls click(1).

  • Default headless; flip to headed at runtime via set_headed(true) for debugging — profile state survives.

  • 12 tools: navigate, snapshot, click, fill, press, scroll, get_text, back, forward, set_headed, set_humanize, close.

Related MCP server: Playwright MCP

Installation

git clone <this-repo>
cd anti-browser-mcp
uv sync

cloakbrowser downloads its patched Chromium on first launch; if that fails, run:

uv run python -c "import cloakbrowser; cloakbrowser.ensure_binary()"

Configuration

Env var

Default

Meaning

ANTIBROWSER_DATA_DIR

~/.antibrowser/data-dir

Browser profile directory

ANTIBROWSER_HEADLESS

1

0 launches headed by default

ANTIBROWSER_NAV_TIMEOUT_MS

30000

Navigation timeout

ANTIBROWSER_LICENSE_KEY

unset

cloakbrowser license key (if required by your plan)

ANTIBROWSER_PROXY

unset

Proxy URL

ANTIBROWSER_HUMANIZE

0

1 enables cloakbrowser's human-like mouse/keyboard/scroll layer by default

Wiring into Claude Code

claude mcp add antibrowser -- uv --directory /path/to/anti-browser-mcp run anti-browser-mcp

Wiring into Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "antibrowser": {
      "command": "uv",
      "args": ["--directory", "/path/to/anti-browser-mcp", "run", "anti-browser-mcp"]
    }
  }
}

Usage example (in Claude)

Open example.com and tell me the main heading.

Claude will call navigate, then snapshot, then get_text(1) (or whichever index the heading got) and reply.

Manual login CLI

Before letting the LLM drive the browser, you usually need to log in to sites once. The antibrowser open command launches cloakbrowser in headed mode against the same profile the MCP server uses.

uv run antibrowser open https://github.com https://mail.google.com

A browser window opens. Log in to each site. When done, return to the terminal and press Enter — the browser closes and cookies/localStorage are persisted to your profile at ~/.antibrowser/data-dir (or $ANTIBROWSER_DATA_DIR).

Pass --humanize to enable cloakbrowser's human-like input layer (slower, randomized mouse/keyboard) — useful for sites with strict bot detection:

uv run antibrowser open --humanize https://github.com

Now when the LLM (via the MCP server) calls navigate https://github.com, the session is already authenticated.

Profile is locked

If you see:

Error: profile at ... is locked. Is the antibrowser MCP server or another 'antibrowser open' running? Close it first.

it means another process is using the profile. Chromium only allows one process per profile directory. Stop the MCP server (or close the other antibrowser open session) and retry.

Installed script

After uv sync, the entry antibrowser is installed into the venv. On Windows call it directly:

D:\path\to\anti-browser-mcp\.venv\Scripts\antibrowser.exe open https://github.com

Development

uv run pytest -q                          # all tests
uv run pytest tests/test_config.py -v     # unit only
uv run pytest -k "not persistence" -v     # skip slow persistence tests

All unit and integration tests are expected to pass locally.

Available Tools

12 tools
backA

Go back one step in browser history.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden. It states it goes back one step, which is transparent for a simple tool, though it doesn't mention edge cases like empty history.

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

Conciseness5/5

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

One sentence, front-loaded, zero wasted words. Every part earns its place.

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

Completeness5/5

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

Given zero parameters, an existing sibling forward, and the action's simplicity, the description is fully adequate.

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?

No parameters exist, and the empty schema is fully covered (100%). The description adds no parameter info but doesn't need to; baseline 4 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Go back' and the resource 'browser history', distinguishing it from sibling tools 'forward' and 'navigate'.

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

Usage Guidelines3/5

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

The description implies usage when wanting to go back in history, but provides no explicit guidance on when to use this vs. forward or navigate, nor any exclusions.

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

clickA

Click the element at snapshot index N. May trigger navigation.

ParametersJSON Schema
NameRequiredDescriptionDefault
indexYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

Discloses that clicking may trigger navigation, which is important behavioral context. However, no annotations are provided, and the description does not mention other potential behaviors like form submission or waiting conditions.

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 concise sentences that front-load the core action and include a critical behavioral note. No wasted words.

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

Completeness4/5

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

For a simple tool with one parameter and an output schema, the description covers the purpose and a key behavioral aspect. It is nearly complete, lacking only minor details like whether the tool waits for navigation.

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

Parameters4/5

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

The description explains that the 'index' parameter refers to a snapshot index, adding meaning beyond the schema's bare integer type. Schema coverage is 0%, so the description compensates well.

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 specifies the verb 'click' and the resource 'element at snapshot index N', making the action clear. It distinguishes from sibling tools like 'navigate' or 'press'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'press' or when not to use it. The description only states the action without context.

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

closeA

Close the browser. Next tool call lazy-launches again against the persistent profile.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

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

With no annotations provided, the description carries full burden. It discloses the persistent profile behavior, but does not mention potential side effects like data loss or whether the operation is reversible, leaving some behavioral ambiguity.

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

Conciseness5/5

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

The description is a single sentence that immediately conveys the core action and a key behavioral nuance. No wasted words.

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

Completeness5/5

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

Given the tool's simplicity (zero parameters, a single action), the description covers the essential use case and even hints at the next step. An output schema exists but is not needed to understand the tool's behavior.

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

Parameters4/5

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

The tool has zero parameters, and schema coverage is 100% (trivially). According to the baseline rule, 0 parameters warrants a score of 4. The description adds no parameter info, which is acceptable.

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

Purpose5/5

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

The description clearly states the tool closes the browser, distinguishing it from sibling tools that perform navigation or interaction actions. The additional context about lazy-launching with a persistent profile reinforces the purpose.

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

Usage Guidelines4/5

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

The description implies the tool is used to terminate the browser session, and mentions the next call can relaunch it. However, it does not explicitly state when to use it versus alternatives, though no clear alternatives exist among siblings.

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

fillC

Replace the value of an input at snapshot index N with the given text.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
indexYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided. The description indicates mutation ('replace') but does not disclose potential side effects, error conditions (e.g., index out of bounds), or required permissions. This is a significant gap for a mutation tool.

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

Conciseness4/5

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

A single, front-loaded sentence that efficiently conveys the core purpose. No unnecessary words. Slight improvement possible by specifying 'text input field' for clarity, but overall concise.

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?

An output schema exists, so description need not detail return values. However, for a mutation operation, it should mention error handling (e.g., invalid index). Leaves out important behavioral context that cannot be inferred from schema or annotations.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must clarify parameter meanings. It does: 'index' is the snapshot index, 'text' is the value. However, it does not provide constraints like allowed text formats or that index must be valid. Adds basic semantics but not comprehensive.

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

Purpose4/5

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

The description clearly states the action: 'Replace the value of an input at snapshot index N with the given text.' It specifies the verb 'Replace' and the resource 'input at a snapshot index', distinguishing it from navigational tools or text retrieval tools like get_text.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives like 'click' or 'press'. No mention of prerequisites (e.g., snapshot must exist) or when not to use it.

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

forwardA

Go forward one step in browser history.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

The description discloses the basic action but does not mention what happens when there is no forward history, any side effects, or error conditions. No annotations are provided to supplement this.

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 short sentence, front-loaded with the action, and contains no unnecessary words.

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

Completeness4/5

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

Given the tool's simplicity (no parameters, annotations missing), the description adequately conveys the core functionality. However, it does not mention the output or potential edge cases, which would be helpful.

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

Parameters4/5

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

The tool has no parameters, so the schema coverage is 100%. With 0 parameters, baseline is 4; the description adds no parameter info but none is needed.

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 'Go forward one step in browser history' uses a specific verb ('go forward') and resource ('browser history'), clearly distinguishing it from siblings like 'back' and 'navigate'.

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?

No explicit when-to-use or when-not-to-use guidance is provided. The context is implied given the simple action and sibling tools, but the description lacks explicit usage context.

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

get_textA

Get text content of element at index N, or the whole page body if index is omitted.

ParametersJSON Schema
NameRequiredDescriptionDefault
indexNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/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 full burden. It discloses that the tool reads text content, implying a non-destructive read operation. Additional behavioral context (e.g., element visibility) is not needed for this simple 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?

A single, front-loaded sentence with no wasted words. Every part earns its place.

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

Completeness5/5

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

Given the tool's simplicity (one optional parameter) and the presence of an output schema, the description is complete. It covers what the tool does and when to use it.

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

Parameters5/5

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

Schema coverage is 0%, but the description adds meaning: 'index N' explains the purpose of the parameter, and 'if index is omitted' clarifies the default behavior. This fully compensates for the lack of schema descriptions.

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

Purpose5/5

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

The description clearly states the verb 'get' and the resource 'text content', and specifies the two modes (with index or whole page). This distinguishes it from siblings like click or fill.

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

Usage Guidelines4/5

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

The description implicitly tells when to use the tool: to retrieve text from a specific element or the entire page. While it doesn't explicitly list when-not or alternatives, the context makes it clear given sibling tools.

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

pressA

Press a keyboard key (Playwright key name, e.g. 'Enter', 'ArrowDown', 'Control+a').

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior2/5

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

No annotations provided. Description only covers the action and key format, but does not disclose behavior like whether it acts on focused element, supports chords, or is asynchronous.

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?

Single sentence front-loading the verb and purpose, with examples. No wasted words.

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

Completeness4/5

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

Simple tool with one parameter and an output schema. Description adequately covers the key aspect, though could mention it operates on the current page.

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 coverage is 0%, so description must add meaning. It explains the parameter expects a Playwright key name with examples, which significantly clarifies the string format.

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?

Description clearly states the action 'press a keyboard key' with specific examples of Playwright key names. Distinguishes from siblings like click, fill, navigate which are different actions.

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?

Implies usage by specifying Playwright key names, but does not explicitly state when to use versus alternatives like fill or click. No guidance on when not to use.

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

scrollA

Scroll the page. direction in {up, down, left, right}; amount is wheel ticks (default 3).

ParametersJSON Schema
NameRequiredDescriptionDefault
amountNo
directionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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

The description explains that direction is limited to specified values and amount is in wheel ticks with a default. However, it does not describe behavior at scroll boundaries, whether the scroll is smooth or instant, or any side effects. With no annotations, the description carries the full burden but is minimal.

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

Conciseness5/5

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

The description is a single sentence that is front-loaded with the tool's purpose and efficiently conveys all necessary parameter details without extraneous words.

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

Completeness4/5

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

Given the simplicity of the tool and the existence of an output schema, the description covers the core functionality and parameter details. Minor gaps include lack of error handling or prerequisites like page load, but these are not critical for a basic scroll action.

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

Parameters5/5

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

The input schema lacks parameter descriptions (0% coverage). The description adds crucial meaning: direction values are explicitly listed as {up, down, left, right} and amount is defined as wheel ticks with a default of 3, which fully clarifies the parameter semantics.

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

Purpose5/5

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

The description clearly states the tool scrolls the page and specifies the directions (up, down, left, right). It distinguishes itself from sibling tools like navigate, click, fill, etc., which have different purposes.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, nor does it mention any prerequisites or limitations. Sibling tools are listed but no comparative context is given.

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

set_headedA

Restart the browser in headed (headed=True) or headless (headed=False) mode. Profile state persists across restart.

ParametersJSON Schema
NameRequiredDescriptionDefault
headedYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It adds value by noting that profile state persists across restart, a key behavioral trait. No contradictions. Could mention other side effects, but sufficient.

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 (20 words) convey all necessary information with zero waste. Information is front-loaded with the action and parameter mapping.

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

Completeness4/5

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

For a simple one-parameter tool, the description is complete. It doesn't mention the output schema, but for a restart command, return value is likely trivial. Slight gap but acceptable.

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 coverage is 0%, so description must compensate. It explains that 'headed' parameter controls headed (true) or headless (false) mode, adding meaning beyond the boolean type.

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 it restarts the browser in headed or headless mode, which is a specific verb+resource combination. It is easily distinguishable from sibling tools like click, navigate, etc.

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

Usage Guidelines4/5

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

The description implies usage for toggling browser visibility, but does not explicitly state when to use vs alternatives or provide exclusion criteria. Still, the context is clear.

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

set_humanizeA

Restart the browser with humanize on (humanize=True) or off (humanize=False). Useful when a site's bot detection needs more human-like input. Profile state persists across restart.

ParametersJSON Schema
NameRequiredDescriptionDefault
humanizeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. Describes that the browser restarts and profile state persists, which are key behavioral traits. Does not mention potential side effects like losing current session state, but 'profile persists' mitigates that.

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, no wasted words. Purpose and usage are front-loaded, making it easy for an agent to parse quickly.

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

Completeness5/5

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

Given the tool's simplicity (one boolean parameter, output schema exists), the description covers purpose, usage, and behavior adequately. No need for return value details.

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

Parameters5/5

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

Schema coverage is 0%, but description adds full meaning by mapping boolean values to 'on' and 'off' and explaining their effect. Completely compensates for lack of schema descriptions.

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 specifies the action 'Restart the browser' with the specific resource 'humanize' and its boolean values. It distinguishes from sibling tools (e.g., set_headed) by focusing on human-like input vs. headed mode.

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?

Explicitly states when to use: when a site's bot detection needs more human-like input. Does not explicitly mention when not to use or alternatives, but the context is clear.

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

snapshotC

Capture an indexed accessibility tree snapshot of the current page. Indices are valid until the next navigation or snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewport_onlyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It notes that indices are valid only until next navigation or snapshot, which is a key side effect, but omits other behaviors such as whether the snapshot is read-only, performance implications, or impact on page state.

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

Conciseness3/5

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

The description is brief (two sentences) and front-loaded with the action, but the omission of parameter details means it sacrifices completeness for brevity. A concise description should still cover essential usage details.

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

Completeness2/5

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

Despite the tool having only one parameter and an output schema, the description is incomplete: it lacks parameter explanation, usage context, and when-not-to-use guidance. The validity note adds some value, but overall the description falls short of what an agent needs for proper invocation.

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?

The input schema has one parameter (viewport_only) with schema coverage at 0%, yet the description fails to explain its semantics or default behavior. Without any mention of the parameter, the agent cannot make informed choices about its usage.

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 defines the tool's purpose: capturing an indexed accessibility tree snapshot of the current page. It uses a specific verb ('Capture') and resource ('indexed accessibility tree snapshot'), and the explicit temporal constraint on index validity (until next navigation or snapshot) differentiates it from sibling tools like click 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 guidance on when to use this tool versus alternatives, nor does it mention prerequisites or contraindications. An agent would lack context for deciding between snapshot and other tools like get_text or scroll.

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

Tool Schema Changelog

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

  1. 12 tool updatesv0.1.0
    • First observedback
    • First observedclick
    • First observedclose
    • First observedfill
    • First observedforward
    • First observedget_text
    • First observednavigate
    • First observedpress
    • First observedscroll
    • First observedset_headed
    • First observedset_humanize
    • First observedsnapshot

TDQS

A3.7/5.0

Scored across 12 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: navigation, history, clicking, filling, text extraction, scrolling, snapshot, closing, and configuration. No two tools overlap in functionality.

Naming Consistency5/5

All tool names use a consistent lowercase verb or verb_noun pattern (e.g., 'click', 'get_text', 'set_headed'). No mixed naming conventions.

Tool Count5/5

12 tools is well-scoped for browser automation, covering navigation, interaction, history, scrolling, and configuration without unnecessary bloat.

Completeness4/5

The set covers core browser interactions (navigate, click, fill, scroll, snapshot, history, close) and adds useful configuration (headed, humanize). Missing explicit operations like wait or element selection by CSS selector, but snapshot indexing covers interaction well.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables browser automation and web page interaction through Playwright's accessibility tree, allowing LLMs to navigate, fill forms, click elements, and extract content without requiring vision models or screenshots.
    4,633,135
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides browser automation capabilities for LLMs using Playwright, leveraging structured accessibility snapshots to interact with web pages without needing vision models. It enables tasks like web navigation, data extraction, and automated testing through a lightweight and deterministic toolset.
    12
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides browser automation capabilities using Playwright's accessibility tree, enabling LLMs to interact with web pages through structured data without screenshots or vision models. It's designed for specialized agentic loops that benefit from persistent state and iterative reasoning over page structure.
    Apache 2.0