antibrowser-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@antibrowser-mcpGo to example.com and read the main content."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 callsclick(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 synccloakbrowser 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 |
|
| Browser profile directory |
|
|
|
|
| Navigation timeout |
| unset | cloakbrowser license key (if required by your plan) |
| unset | Proxy URL |
|
|
|
Wiring into Claude Code
claude mcp add antibrowser -- uv --directory /path/to/anti-browser-mcp run anti-browser-mcpWiring 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.comA 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.comNow 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.comDevelopment
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 testsAll unit and integration tests are expected to pass locally.
Available Tools
12 toolsbackA
Go back one step in browser history.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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').
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| amount | No | ||
| direction | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| headed | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| humanize | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| viewport_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
12 tool updates
v0.1.0- First observed
back - First observed
click - First observed
close - First observed
fill - First observed
forward - First observed
get_text - First observed
navigate - First observed
press - First observed
scroll - First observed
set_headed - First observed
set_humanize - First observed
snapshot
TDQS
Scored across 12 tools
Each tool has a clearly distinct purpose: navigation, history, clicking, filling, text extraction, scrolling, snapshot, closing, and configuration. No two tools overlap in functionality.
All tool names use a consistent lowercase verb or verb_noun pattern (e.g., 'click', 'get_text', 'set_headed'). No mixed naming conventions.
12 tools is well-scoped for browser automation, covering navigation, interaction, history, scrolling, and configuration without unnecessary bloat.
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
Related MCP Connectors
Stealth web automation for AI agents. Login, signup, navigate, screenshot.
Stealth web automation for AI agents. Login, signup, navigate, screenshot.
Hosted browser for AI agents: screenshots, post-JS DOM, console, WCAG. No install, no API key.
Headless browser primitives for AI agents when sites need real JS rendering.
Related MCP Servers
- AlicenseBqualityBmaintenanceEnables LLMs to interact with web pages, take screenshots, and execute JavaScript in a real browser environment10246299MIT
- AlicenseNot gradedqualityDmaintenanceEnables 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,135Apache 2.0
- AlicenseNot gradedqualityDmaintenanceProvides 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.12Apache 2.0
- AlicenseNot gradedqualityDmaintenanceProvides 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