Skip to main content
Glama

An AI agent with a browser is powerful. An AI agent that understands what it sees in the browser is unstoppable.

Brocogni is an open-source MCP server that sits between your AI agent and Playwright. Instead of dumping raw HTML into your agent's context (noisy, fragile, token-wasting), it compiles pages into a structured semantic map the agent can navigate, reason about, and act on in real time.

Two modes:

  • Agentic browsing loop -- The agent calls Brocogni tools directly: navigate, observe, click, extract, diff. Each step feeds back into reasoning. The browser is the environment, the agent is the brain.

  • Self-healing script generation -- The agent observes a page and generates vanilla Playwright code with automatic fallback selectors that survive frontend rebuilds.

No SaaS. No data leaves your machine. MIT.

▶️ Watch the 15-second demo


Before / After

Before -- fragile selectors that break on every deploy:

await page.click('.btn-primary');
await page.fill('.css-x83kf2 > input', 'hello');

Works today. Fails tomorrow when Tailwind classes rebuild.

After -- semantic selectors with self-healing fallbacks:

await page.click('role=button[name="Sign in"]');
await page.fill('role=textbox[name="Email"]', 'hello');

If the primary selector breaks, the fallback chain handles it:

role=button[name='Sign in']
  -> button:has-text('Sign in')
  -> xpath=//button[contains(text(),'Sign in')]
  -> css=div:has(> button) + button

The engine anchors unnamed elements to named siblings using relational XPath and CSS adjacent selectors. If a button has no accessible name but sits next to a labeled input, Brocogni finds it anyway.


Related MCP server: WeaveTab-MCP

How it works

AI Agent
   |
   | MCP protocol (stdio)
   v
Brocogni MCP Server
   |
   | Playwright + CDP
   v
 AX Tree  -->  DOM Geometry  -->  Selector Engine
                                       |
                                       v
                         Self-healing selectors
                         (ARIA / CSS / XPath / relational)

The agent calls MCP tools in a loop: navigate to a URL, observe the page as structured semantic nodes, find targets by role or name, click to trigger new states, diff before/after to catch dynamic content. Actionable nodes carry role, name, bounding box, visibility, enabled state, and ranked selectors with fallback chains. The agent never sees raw HTML.


Benchmark

Brocogni is 81% cheaper than @playwright/mcp for the full workflow: observe → act → export a working Playwright script.

The ref iteration problem

@playwright/mcp returns a raw AX tree with temporary refs (e5, e10). Refs work inside the MCP session. When the LLM wants to export a persistent script, they expire.

@playwright/mcp                          Brocogni
──────────────                            ────────
Try 1: write ref-based script             Try 1: copy pre-computed selectors
       → refs expire, script broken              → #search-input works
Try 2: re-observe, guess getByRole               → One shot. Done.
       → 75% correct
Try 3: debug failed selectors
       → script finally works

Cost: $0.04 per script                    Cost: $0.01 per script
(3 attempts, trial & error)               (1 attempt, one-shot)

Cost at scale

Scripts/mo

@playwright/mcp

Brocogni

50

$1.78

$0.33

200

$7.11

$1.33

1,000

$35.53

$6.64

Pricing based on Claude Sonnet 4 ($3/M input, $15/M output).

Signal density

What the LLM must parse

@playwright/mcp

Brocogni

Elements returned

62–93 AX nodes

9 semantic nodes

Actionable

mixed

9 of 9 (100%)

LLM must filter

yes

no

Pre-computed selectors

no (refs)

yes (CSS/XPath/ARIA)

Bounding boxes

no

yes

Purpose inference

no

yes

Fallback chains

no

yes

Confidence scores

no

yes

@playwright/mcp gives the LLM raw data and says "figure it out." Brocogni gives the LLM understanding and says "here's what to do."


Install

npx playwright install chromium
npx browser-cognition-mcp

Then connect your agent:

Claude Code

claude mcp add brocogni -- npx -y browser-cognition-mcp

Cursor

Settings -> Features -> MCP -> Add New
Name: brocogni  |  Type: stdio  |  Command: npx -y browser-cognition-mcp

Claude Desktop

npx browser-cognition-mcp install

OpenCode Zero setup -- reads opencode.json automatically.


MCP Tools

Tool

What it does

browser_navigate

Open a URL

browser_observe

Compile page into semantic node map

browser_find_targets

Search by role, name, or purpose

browser_get_selector_plan

Get primary + fallback selectors

browser_act

Click, fill, or hover

browser_verify

Preflight: visible, enabled, compatible

browser_delta

Diff two page states

browser_screenshot

Capture viewport as PNG

browser_evaluate

Run JS in page context

browser_save_cookies

Persist session cookies

browser_info

Page URL, title, iframe count

Also exposes a write-robust-playwright-script prompt that teaches agents how to use these tools effectively.


Tests

npm test

Deterministic, no browser required. Covers semantic extraction, DOM fusion, selector ranking, relational fallbacks, delta computation, and action verification.


FAQ

Does it need API keys? No. Every observation runs locally. No accounts, no telemetry, no data leaves your machine.

Which agents does it work with? Any MCP-compatible agent: Claude Code, Claude Desktop, Cursor, OpenCode, and others.

Does it add runtime bloat to my project? No. Brocogni is a dev-time MCP server. It generates vanilla Playwright code -- no runtime dependencies introduced.

What happens when a selector fails? The fallback chain activates automatically. ARIA -> text -> XPath -> relational sibling. The agent tries each one in order.


Contributing

Bug reports, feature requests, and PRs welcome. See CONTRIBUTING.md. Security issues? SECURITY.md.


License

MIT. Go build something.

Available Tools

12 tools
browser_actA

Execute an action (click, fill, hover) on a node using its ID. Optional: pass 'state' if querying offline; otherwise defaults to last observed state.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoThe text value to fill (required if action is 'fill').
stateNoThe current SemanticPageState (optional, falls back to server-side cache).
actionYesThe action to execute.
nodeIdYesThe ID of the semantic node.

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so description bears full burden. It states the action and optional state but does not disclose side effects, return values, or error handling. Minimal behavioral context.

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: first states purpose, second adds optional parameter context. No extraneous information; well 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?

Despite clear purpose, the description lacks details about post-action behavior (e.g., page state changes, waiting, return values). No output schema, so more context is needed for complete understanding.

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 100%, and the description adds value by explaining the state parameter's optionality and default behavior. Also implies text is required for fill action, reinforcing schema constraints.

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?

Clearly states the tool executes actions (click, fill, hover) on a node by ID. This distinguishes it from sibling tools like browser_navigate and browser_observe, 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 Guidelines4/5

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

Provides guidance on when to pass the state parameter (if querying offline) and defaults to last observed state. Does not explicitly mention when not to use this tool, but purpose is clear enough.

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

browser_deltaA

Compute the difference between two semantic states. Optional: pass parameters if querying offline; otherwise defaults to comparing the last two observed page states in memory.

ParametersJSON Schema
NameRequiredDescriptionDefault
newStateNoThe current SemanticPageState (optional, falls back to server-side cache).
oldStateNoThe previous SemanticPageState (optional, falls back to server-side cache).

TDQS

A4.1/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It explains default behavior and offline mode, but lacks disclosure of other traits like side effects or return type.

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 redundancy, every phrase contributes meaning. Front-loaded with purpose, then usage context.

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?

No output schema, and description does not mention return value or structure of the difference. Also 'semantic states' could be better defined. Somewhat adequate but leaves gaps.

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 100% (both parameters described), so baseline is 3. Description adds situational context ('if querying offline; otherwise defaults...') which adds value beyond 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 uses a specific verb ('Compute') and resource ('difference between two semantic states'), clearly distinguishing it from sibling tools like browser_act or browser_evaluate.

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?

Provides context on when to pass parameters (offline queries) and default behavior (comparing last two observed states), but does not explicitly mention when not to use this tool.

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

browser_evaluateB

Execute arbitrary JavaScript code in the page context and return the result. Fast and direct.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesJavaScript function body to execute in the page context.

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description bears full responsibility for behavioral disclosure. It only adds 'Fast and direct', but fails to mention limitations, error handling, execution context (e.g., sandboxing), or return format. Minimal transparency.

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

Conciseness5/5

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

The description is extremely concise with two sentences, no fluff, and the core action is front-loaded. Every word contributes meaning.

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 tool with one parameter and no output schema, the description is mostly adequate. However, it does not clarify whether the code must be a function body (as per schema) or any code, potentially causing confusion. Also missing details on error handling and return types.

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 description adds limited value beyond the parameter description. The description reiterates 'arbitrary JavaScript code', which is similar to the schema's 'JavaScript function body'. Baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly specifies the verb 'execute', the resource 'arbitrary JavaScript code in the page context', and the outcome 'return the result'. It is distinct from sibling tools like browser_act or browser_verify, which perform 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 Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as browser_act or browser_verify. The description does not mention any exclusions or preferred contexts.

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

browser_find_targetsA

Search the last observed page state for nodes matching specific criteria (role, name content, enabled state). Extremely fast and token-efficient.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNoFilter by accessibility role (e.g. 'button', 'textbox').
onlyEnabledNoFilter to only enabled/interactable elements.
nameIncludesNoFilter by substring in the accessible name.

TDQS

A3.6/5.0
Behavior3/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 searches the 'last observed page state' (not live) and implies no side effects, but does not explicitly state that it is read-only or mention any limitations. The claim of speed and efficiency adds some context, but more behavioral details would be helpful.

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

Conciseness5/5

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

The description is extremely concise: one sentence stating the purpose followed by a short phrase highlighting performance. It is front-loaded with the core function 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?

For a simple search tool with three parameters and a clear purpose, the description covers the essential functionality. However, it does not describe the return format or what the caller can expect (e.g., list of node identifiers). Minor gap given no output schema.

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

Parameters3/5

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

Schema coverage is 100% with each parameter having a description. The description lists the criteria (role, name content, enabled state) matching the parameters, but adds no new meaning or formatting details beyond what the schema already provides.

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

Purpose5/5

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

The description clearly states the verb 'Search' and the resource 'the last observed page state for nodes matching specific criteria', and lists the three criteria (role, name content, enabled state). It effectively distinguishes from sibling tools like browser_observe (which observes general state) and browser_act (which performs actions).

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like browser_observe or browser_get_selector_plan. It mentions being 'extremely fast and token-efficient' but does not explicitly compare to siblings or state 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.

browser_get_selector_planA

Retrieve the pre-computed selector plan (primary + healed fallback locators) for a specific semantic node. Optional: pass 'state' if querying offline; otherwise defaults to last observed state.

ParametersJSON Schema
NameRequiredDescriptionDefault
stateNoThe current SemanticPageState (optional, falls back to server-side cache).
nodeIdYesThe ID of the semantic node.

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It discloses the tool retrieves pre-computed data and mentions server-side caching and state fallback. However, it does not explicitly confirm read-only behavior or discuss side effects, permissions, or error 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?

The description is concise with two sentences, no filler, and directly front-loads the primary purpose. Every sentence adds meaningful information.

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 no output schema, the description should explain return structure. It only mentions 'primary + healed fallback locators,' which is vague. It does not cover what happens when the node is missing or the plan is empty, leaving gaps for an AI agent.

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?

Both parameters are documented in the schema (100% coverage), so baseline is 3. The description adds value by explaining when to use the state parameter ('if querying offline' and 'defaults to last observed state'), which supplements the schema's description.

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 retrieves a pre-computed selector plan for a semantic node, specifying it includes primary and healed fallback locators. This distinctively differentiates it from sibling tools like browser_act or browser_observe.

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

Usage Guidelines3/5

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

The description provides guidance on using the state parameter for offline queries, but does not explicitly state when to use this tool versus alternatives like browser_find_targets or browser_observe. There is no when-not or exclusion criteria.

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

browser_list_pagesA

List all open tabs/pages in the browser session. Returns index, title, and URL for each.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

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

No annotations provided; description only states basic functionality. No disclosure of side effects, limitations, or behavioral traits beyond reading.

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 with front-loaded purpose. No redundancy.

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 no output schema; description adequately explains what is returned (index, title, URL) and suffices for its simplicity.

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?

Zero parameters; schema coverage is 100% implicitly. Baseline 4 applies because no param info needed, and description adds no additional 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?

Clear verb 'List', resource 'open tabs/pages', and specifies return fields (index, title, URL). Distinguishes from sibling tools like browser_navigate or browser_act.

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. Does not explain context or exclusions.

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

browser_navigateB

Launch the browser and navigate to a URL, or navigate the active tab to a new URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to navigate to.

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided, so description should disclose side effects. It mentions 'launch' and 'navigate' but omits details like page load waiting, error handling, or permission requirements.

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, no wasted words. Front-loaded with the action and resource.

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 navigation tool with no output schema, the description is adequate. It covers the main action but lacks mention of return values or error conditions.

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 100% for the single parameter. Description ('URL') adds no new meaning beyond the schema's 'The URL to navigate to.' Baseline 3 is appropriate.

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

Purpose4/5

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

Description clearly states the verb (launch/navigate) and resource (browser, URL), and distinguishes two cases: starting browser vs. navigating active tab. However, it doesn't differentiate from siblings like browser_use_page.

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. No exclusions or prerequisites mentioned, leaving the agent to infer context.

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

browser_observeA

Observe and extract the structured semantic state of the current active page, filtering out DOM noise. Note: If you see dropdowns/menus with expanded: false, you must hover them to reveal contents, then observe again.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoContext compilation mode.
budgetNoMaximum node budget for token optimization.

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description must fully cover behavioral traits. It mentions DOM noise filtering and a specific interaction pattern, but lacks details on side effects, permissions, or rate limits. Adequate but not exhaustive.

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 succinct sentences: one functional statement and one useful usage note. No fluff; 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 description is adequate for a simple observation tool, but given no output schema, it could clarify what 'structured semantic state' means or hint at return format. Still, the usage note adds practical value.

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% – both parameters (mode, budget) are described in the schema. The description adds no additional meaning beyond the schema, so baseline 3 is appropriate.

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

Purpose5/5

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

The description specifies 'observe and extract the structured semantic state of the current active page, filtering out DOM noise' – a clear verb+resource. It distinguishes from sibling tools like browser_screenshot (visual) and browser_evaluate (JS execution).

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

Usage Guidelines3/5

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

The description provides a practical note about dropdowns with expanded:false, hinting at when to re-observe. However, it does not explicitly state when not to use this tool or compare with alternatives among the 11 siblings.

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

browser_save_cookiesB

Save page cookies to a file for session persistence.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoFile path to save cookies to (default: session_cookies.json).

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It fails to disclose whether the file is overwritten, if a page must be loaded, or what happens if no cookies exist. Minimal transparency.

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?

Single sentence is concise and front-loaded with verb and resource. No wasted words, but brevity limits informativeness. Appropriate for a simple tool.

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

Completeness3/5

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

Given no output schema and minimal behavioral context, the description misses details like return value and preconditions. Adequate but with notable gaps for a straightforward tool.

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

Parameters3/5

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

Schema description coverage is 100% for the single 'path' parameter, including default value. Description adds no new parameter meaning beyond schema, earning baseline 3.

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 uses specific verb 'Save' with resource 'page cookies to a file', clearly distinguishing from sibling tools like browser_navigate or browser_observe. No ambiguity.

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 such as browser_verify for cookies or browser_navigate for sessions. No exclusion or context provided.

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

browser_screenshotA

Take a screenshot of the current page viewport and return it as a base64 encoded PNG string (useful for visual validation).

ParametersJSON Schema
NameRequiredDescriptionDefault
fullPageNoTake a screenshot of the full scrollable page.

TDQS

A3.6/5.0
Behavior3/5

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

No annotations exist, so the description bears full burden. It discloses the return format (base64 PNG) but doesn't mention whether the page is scrolled or if any side effects occur. The behavior is inferred but not fully explicit.

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 sentence that is clear, front-loaded, and contains no superfluous information. Every part earns its place.

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 optional boolean and no output schema, the description covers the main intent and output format. Could optionally mention that it only captures the current tab's viewport.

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 100% for the single parameter (fullPage). The description adds no extra meaning beyond 'useful for visual validation', so baseline 3 is appropriate.

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

Purpose4/5

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

The description clearly states the tool takes a screenshot of the current page viewport and returns it as a base64 PNG. It mentions 'visual validation' which hints at differentiation from siblings like browser_observe, but doesn't explicitly distinguish.

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 use for visual validation but does not specify when to prefer this over alternatives like browser_observe or browser_verify. No exclusions or prerequisites are mentioned.

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

browser_use_pageA

Switch the active page context to a specific tab by its index (from browser_list_pages).

ParametersJSON Schema
NameRequiredDescriptionDefault
indexYesThe index of the page to switch to (from browser_list_pages).

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. 'Switch' implies active context change but doesn't disclose error handling (e.g., out-of-bounds index) or if state is preserved. Adequate for a simple action.

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

Conciseness5/5

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

Single sentence, no unnecessary words. Efficiently conveys purpose and required input.

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?

Tool is simple with one parameter, no output schema, and clear reference to sibling tool. Could benefit from mentioning that it sets active context for subsequent browser operations, but overall sufficient.

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% (parameter 'index' fully described). Description does not add extra semantics beyond what schema provides. Baseline score of 3.

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 verb 'Switch', resource 'active page context', and specifies source 'index from browser_list_pages', distinguishing it from sibling tools like browser_navigate and browser_list_pages.

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?

Description explicitly tells when to use (after browser_list_pages to switch context). It lacks explicit when-not-to-use or alternatives, but the context makes usage clear.

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

browser_verifyB

Run safety action verification on a semantic node to confirm if it supports click/fill/hover and is interactable. Optional: pass 'state' if querying offline; otherwise defaults to last observed state.

ParametersJSON Schema
NameRequiredDescriptionDefault
stateNoThe current SemanticPageState (optional, falls back to server-side cache).
actionYesThe action intent.
nodeIdYesThe ID of the semantic node to verify.

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 full burden. It reveals that the tool performs a verification (likely non-destructive) and defaults to a cached state. However, it does not explicitly state side effects (e.g., read-only), nor does it describe what happens on failure (error or return value). This partial disclosure warrants a 3.

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 two sentences long, efficiently front-loading the core purpose and adding one optional detail. Every word is necessary, with no redundancy or 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?

The description covers purpose and a parameter nuance but lacks information about return values (no output schema) and error conditions. For a tool with 3 parameters and no output schema, the description should at least hint at the return type. This gap prevents a higher score, but the core functionality is adequately explained.

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 100%, so baseline is 3. The description adds value by explaining the 'state' parameter's purpose ('pass if querying offline; otherwise defaults to last observed state'), which exceeds the schema's generic description. It also reinforces the 'action' parameter's meaning. This justifies a 4.

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: running safety action verification on a semantic node to confirm interactability and support for click/fill/hover. It uses specific verbs and resources, distinguishing it from sibling tools like browser_act (which performs actions) and browser_evaluate (which evaluates expressions). However, it does not explicitly differentiate itself, so a 4 is appropriate.

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

Usage Guidelines2/5

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

The description provides minimal usage guidance: it mentions optional 'state' for offline querying, but lacks explicit instructions on when to use this tool versus alternatives (e.g., 'Use this before browser_act to verify safety'). No exclusions or prerequisites are given, leaving the agent to infer the context.

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 updatesv1.1.0
    • First observedbrowser_act
    • First observedbrowser_delta
    • First observedbrowser_evaluate
    • First observedbrowser_find_targets
    • First observedbrowser_get_selector_plan
    • First observedbrowser_list_pages
    • First observedbrowser_navigate
    • First observedbrowser_observe
    • First observedbrowser_save_cookies
    • First observedbrowser_screenshot
    • First observedbrowser_use_page
    • First observedbrowser_verify

TDQS

A3.8/5.0

Scored across 12 tools

Disambiguation5/5

Each tool targets a distinct browser automation task: navigation, state observation, interaction, JS execution, etc. There is no overlap; even similar tools like browser_verify and browser_find_targets serve different purposes.

Naming Consistency5/5

All tools follow a consistent 'browser_verb_noun' pattern, making it predictable which action applies to which resource. No mixed conventions or vague verbs.

Tool Count5/5

12 tools cover the essential browser automation capabilities without being excessive. The count is appropriate for the domain, providing a focused set that avoids bloat.

Completeness4/5

The tool surface covers core workflows (navigation, interaction, state extraction, screenshots, cookies) but lacks explicit tab creation or closure tools, which are minor gaps for a complete browsing session manager.

Maintenance

ActivitySlowing
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
    D
    maintenance
    An extension-based MCP server that enables AI assistants to control your browser, leveraging existing sessions and login states for automation and content analysis. It provides over 20 tools for semantic tab search, interactive element manipulation, and network monitoring directly within your daily Chrome environment.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Semantic browser automation MCP server that lets AI agents control a browser using natural language, handling navigation, form filling, data extraction, and more without CSS selectors.
    698
    1
    MIT
  • F
    license
    A
    quality
    B
    maintenance
    A local stdio MCP server that exposes compact semantic observations from UI elements annotated with data-agent-* hints, designed to work alongside the official Playwright MCP for browser automation.
    2
    -