Skip to main content
Glama

spectra_mcp

An MCP server that gives AI agents a stateful anti-detect Firefox powered by invisible_playwright.

Agents can navigate, inspect accessible page snapshots, interact through stable element refs, fill forms, read text, and capture screenshots without managing raw Playwright state.

AI agent ── MCP/stdio ──► spectra_mcp ──► patched Firefox

Highlights

  • Agent-first snapshot → ref → action workflow

  • Automatic fingerprint profile, timezone, and locale selection

  • Humanized mouse movement and browser-level fingerprint patches

  • Typed MCP results and real isError=true failures

  • Secret redaction and environment-based proxy credentials

  • Compact default tool profile for Hermes, OpenClaw, and other agents

Related MCP server: browser-devtools-mcp

Install

Requires Python 3.11+.

git clone https://github.com/LowOrbitLab/spectra_mcp.git
cd spectra_mcp
pip install -e .
python -m invisible_playwright fetch

The patched Firefox download is approximately 100 MB and only needs to run once. The browser dependency is pinned to an exact upstream commit.

MCP configuration

{
  "mcpServers": {
    "spectra_mcp": {
      "command": "/absolute/path/to/venv/bin/spectra_mcp",
      "env": {
        "SPECTRA_MCP_TOOL_PROFILE": "agent"
      }
    }
  }
}

Use an absolute executable path when the client filters subprocess environment variables. Keep parallel tool calls disabled because operations within one browser session are serialized.

Client-specific examples:

Agent workflow

  1. Call binary_status; use binary_install if needed.

  2. Call browser_start.

  3. Navigate with browser_navigate.

  4. Inspect the page with browser_snapshot.

  5. Act through browser_click_ref, browser_set_value_ref, browser_type_text_ref, browser_select_option_ref, or browser_set_form_values.

  6. Use browser_list_tabs and browser_activate_tab when a popup or new tab opens.

  7. Use browser_wait_for for asynchronous text, URL, or element changes.

  8. Read targeted content with browser_find_text or paginated browser_get_text.

  9. Call browser_stop when finished.

Mutating ref actions return a compact refreshed snapshot by default; use observe="full" for structured element/frame arrays or observe="none" to skip observation. Agent tools automatically use the only live session, so models normally do not need to remember a session ID.

Documentation

License

MIT. Firefox remains MPL-2.0. This project downloads the patched browser from upstream releases and does not redistribute it.

Available Tools

19 tools
binary_installA

Download (and verify) the patched Firefox binary if not already cached.

One-time ~100 MB download, SHA256-verified. Set force=True to re-download even if a cached copy exists. Call this before session_start. Reports download progress (0-100%) when the server reports a size and the client supports progress tokens; phase changes (downloading/verifying/extracting) are always logged.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations at all, the description carries the full burden and does so well: it discloses size (~100 MB), integrity verification (SHA256), idempotent caching behavior, the force override, and observable side effects (progress tokens 0-100%, phase logging). It omits failure modes, network/permission prerequisites, and whether concurrent calls are safe.

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?

Front-loaded with the core action, then the cost/verification facts, then the parameter, then the sequencing advice and observable behavior. Every sentence adds information an agent needs and none restates the name or the schema.

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?

An output schema exists, so return values need not be explained, and the description covers prerequisites, cost, verification, and idempotency. The remaining gap is failure/error behavior and environment requirements, which matter for a ~100 MB network download.

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% and the single 'force' parameter is a bare boolean, so the description must supply meaning. It does: 'Set force=True to re-download even if a cached copy exists', which fully defines the parameter's effect beyond the schema's default value.

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

Purpose4/5

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

States a specific verb and resource: 'Download (and verify) the patched Firefox binary'. The 'if not already cached' clause also distinguishes it from the sibling binary_status, which merely reports state. It stops short of naming that sibling outright, but the action is unambiguous.

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

Usage Guidelines4/5

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

Gives an explicit ordering instruction ('Call this before session_start') and the condition under which the call is a no-op ('if not already cached'). It does not name binary_status as the alternative for checking cache state, so the agent must infer the routing; there are no explicit when-not conditions either.

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

binary_statusA

Report whether the patched Firefox binary is already cached locally.

Returns the cache path, version, and a ready flag. Does NOT download.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/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 behavioral burden. It discloses the key non-behavior ('Does NOT download') and the returned status fields (cache path, version, ready flag), making the read-only, no-side-effect nature of the tool clear without over-explaining.

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?

Three short sentences with no waste: purpose first, return contents second, and the critical exclusion last. It is front-loaded and appropriately sized for a simple status tool.

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?

For a zero-parameter status check with an output schema already present, the description gives everything needed: what is checked, what is returned, and that no download occurs. Nothing critical is missing for correct invocation.

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, so there are no parameter semantics for the description to add. Per the baseline for 0-param tools, a 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?

States a specific verb (Report) and resource (whether the patched Firefox binary is cached locally). The closing 'Does NOT download' distinguishes it from the sibling binary_install, so an agent can tell it apart without opening the schema.

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

Usage Guidelines3/5

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

The description implies usage as a pre-flight cache check and explicitly excludes downloading, but it does not name binary_install or state when to call this instead of that tool. The guidance is present but implied rather than explicit.

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

browser_activate_tabC

Switch the agent browser to an existing tab by page_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYes
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It does not state what happens on an invalid or closed page_id, how session_id affects targeting, whether the switch is idempotent, or what the resulting active-tab state is.

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 tight sentence with the selector front-loaded and no filler. Every word 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?

An output schema exists, so return values need not be explained, and the required-parameter contract is simple. However, the undocumented session_id and the absence of any failure or state-transition behavior leave gaps for a tool with no annotations.

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

Parameters2/5

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

Schema description coverage is 0% for two parameters. The description mentions page_id as the selector but adds no format, range, or source detail, and session_id is entirely absent from the description despite having a default value.

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

Purpose4/5

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

States a specific verb ('Switch') and resource ('agent browser tab') plus the identifier used ('by page_id'). It is reasonably distinguishable from browser_list_tabs, though it doesn't explicitly name siblings.

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 when-to-use or when-not-to-use guidance is given, and no alternative tools are named. Usage is only implied: an agent would have to infer that this follows browser_list_tabs and precedes interaction tools.

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

browser_click_refB

Click a ref from browser_snapshot and return the updated snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYes
observeNocompact
session_idNo
timeout_msNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/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, and it does disclose one real behavior: the call returns the updated snapshot, letting the agent plan a click-then-read loop in a single call. However, it says nothing about stale/invalid ref handling, whether it waits for navigation, or how timeout_ms failure surfaces — meaningful gaps for a click 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?

One sentence, zero filler, front-loaded with the action and followed by the dependency and return behavior. It is tight, though its brevity is partly under-specification rather than pure efficiency.

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?

An output schema exists so the returned snapshot need not be re-explained, which offsets some burden. But with no annotations, three undocumented parameters, and no error/staleness semantics, the definition is not complete enough for an agent to invoke this reliably in edge cases.

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

Parameters2/5

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

Schema description coverage is 0% across four parameters, so the description must compensate and largely does not. It clarifies only that ref comes from browser_snapshot; observe (enum none/compact/full), session_id, and timeout_ms are left entirely undocumented in both schema and description.

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

Purpose4/5

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

States a specific verb (click) plus the resource (an element ref) and names its upstream dependency, browser_snapshot, as the source of valid refs. That distinguishes it from sibling click-adjacent tools like browser_set_value_ref or browser_type_text_ref, though it never explicitly contrasts itself with them.

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

Usage Guidelines3/5

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

Usage is implied rather than stated: the agent learns it must obtain the ref from browser_snapshot first. There is no guidance on when to prefer this over browser_find_text, browser_wait_for, or the other ref-based setters, and no stated preconditions (e.g. an active session).

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

browser_find_textB

Find text in the active page and return short surrounding snippets.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
session_idNo
max_resultsNo
context_charsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose that the search is scoped to the active page and that results come back as short snippets rather than full matches, which adds real behavioral context beyond the schema. It omits case sensitivity, whether the page is scrolled or modified, and session/auth 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?

One sentence, front-loaded with the action and the resource, with no filler. Everything present earns its place.

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?

An output schema exists so return values need not be described, but the tool has four undocumented parameters, no annotations, and no usage context, which leaves an agent guessing about session handling, result limits, and when this tool is preferred over its many siblings.

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

Parameters2/5

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

Schema description coverage is 0% across 4 parameters, so the description must compensate and does not: 'query', 'max_results', 'context_chars' and 'session_id' are never explained, nor is the relationship between 'context_chars' and the 'short ... snippets' it returns. Only a loose implied link between 'query' and 'Find text' exists.

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 gives a specific verb ('Find text') and an explicit scope ('in the active page') plus the return shape ('short surrounding snippets'), which is enough to separate it from browser_get_text and browser_snapshot in intent. It stops short of naming any sibling directly.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus browser_get_text, browser_snapshot, or browser_wait_for, and no stated prerequisites (e.g., whether a session must be active or a navigation must have occurred). The only implied context is 'active page'.

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

browser_get_textC

Get paginated visible text from the single agent browser.

ParametersJSON Schema
NameRequiredDescriptionDefault
offsetNo
selectorNo
max_charsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It hints at pagination via 'paginated' but never explains how pagination works, offsets, default chunk size, or that max_chars truncates output. Read-only nature is implied but not stated. For a tool with zero annotation coverage, this is thin.

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 tight sentence with the resource and scope front-loaded. No waste. But brevity here comes at the cost of needed detail rather than from efficient phrasing of a complete idea.

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

Completeness2/5

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

With four parameters at 0% schema coverage, no annotations, and multiple reading siblings, the description is far too sparse. An output schema exists so return shape needn't be explained, but when-to-use, pagination mechanics, and parameter meanings are all missing.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for four undocumented parameters. It only weakly implies pagination (offset/max_chars) and says nothing about selector or session_id. The parameter semantics remain largely opaque.

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

Purpose3/5

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

States a verb+resource ('Get text from browser') and adds the qualifiers 'paginated' and 'visible', which give some specificity. However, it does not differentiate from siblings like browser_snapshot or browser_find_text, which also read page content. The scope hint ('visible text') is the only distinguishing signal.

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 instead of browser_snapshot, browser_find_text, or browser_screenshot, despite several text/content-reading siblings. The agent must infer the use case from the name alone.

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

browser_list_tabsB

List tabs in the agent browser and identify the active tab.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/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 does disclose a behavioral detail beyond the name — that the active tab is identified in the result — which is useful, but it says nothing about whether the call is side-effect free, whether it requires a live session, or how it behaves with no session.

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 filler. Every word contributes to the stated purpose.

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 list tool with an output schema handling return values, the core purpose is covered, but the omission of session_id semantics and any usage context leaves gaps. It is minimally adequate rather than complete.

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

Parameters2/5

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

Schema description coverage is 0%, and the description never mentions session_id or what happens when it is omitted (its default is an empty string). With one undocumented optional parameter, the description fails to compensate for the schema gap.

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

Purpose4/5

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

The description states a specific verb and resource (list tabs in the agent browser) plus an additional capability (identify the active tab). It is clearly distinguishable from sibling tools like browser_activate_tab or browser_status, though it does not explicitly name those siblings.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of prerequisites, and no routing to alternatives such as browser_status or browser_activate_tab. An agent can infer it is a discovery call, but nothing in the text confirms that.

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

browser_navigateC

Navigate and return no, compact, or full snapshot observation.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
observeNocompact
session_idNo
timeout_msNo
wait_untilNoload

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, and it does disclose that the call returns an observation whose detail depends on the observe setting. Beyond that it says nothing about navigation side effects, wait/timeout semantics, session reuse, error behavior, or whether state persists. For a browser-navigation tool with zero annotation coverage this is a substantial gap.

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?

It is a single short sentence with no padding, which is appropriately sized. The wording is awkward and back-loaded, describing output verbosity rather than front-loading the core action of navigating to a URL.

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?

An output schema exists, so return values need not be explained, but with 5 parameters at 0% schema coverage and no annotations the description should cover navigation and wait behavior. It leaves the agent without enough grounding to choose observe/wait_until/timeout values correctly.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for five parameters, but it only loosely gestures at the observe enum (and calls the 'none' value 'no'). url, session_id, timeout_ms, and wait_until are entirely undocumented, leaving the agent to infer their meaning and defaults from the schema alone.

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

Purpose3/5

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

The verb 'Navigate' plus the mention of a snapshot observation gives a recognizable action, and it is distinguishable from siblings like browser_reload or browser_snapshot. However the phrase 'return no, compact, or full snapshot observation' is garbled and never states the resource being navigated (a URL in a browser session), so the purpose is only loosely conveyed.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus browser_reload, browser_start, browser_snapshot, or browser_wait_for. The observe options hint that snapshot selection is a consideration, but no conditions or alternatives are named.

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

browser_reloadC

Reload and return no, compact, or full snapshot observation.

ParametersJSON Schema
NameRequiredDescriptionDefault
observeNocompact
session_idNo
timeout_msNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It hints that a snapshot is produced after reloading, but does not disclose that a reload discards page state, what session_id is needed, or how timeout_ms affects behavior.

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?

A single short sentence with no filler, which is good, but the phrasing 'return no, compact, or full snapshot observation' is grammatically garbled and slightly obscures the intent.

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?

An output schema exists so return values needn't be explained, but with zero annotations and zero schema descriptions the definition leaves the mutation semantics, session targeting, and observe-mode tradeoffs unaddressed.

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

Parameters2/5

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

Schema description coverage is 0% across 3 parameters. The description only restates the observe enum values ('no, compact, full') without explaining the tradeoff between them, and gives no meaning for session_id or timeout_ms.

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

Purpose3/5

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

States the verb 'reload' and mentions returning a snapshot observation, so the action is identifiable, but the wording 'return no, compact, or full snapshot observation' is awkward and the resource (the current page of a session) is only implied. No differentiation from siblings like browser_navigate or browser_snapshot.

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

Usage Guidelines2/5

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

There is no when-to-use guidance: nothing says when to reload versus navigate to a URL or call browser_snapshot instead. The relationship to the sibling observation tools is left entirely to inference.

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

browser_screenshotC

Capture the single agent browser; session_id is usually omitted.

ParametersJSON Schema
NameRequiredDescriptionDefault
qualityNo
full_pageNo
session_idNo
image_formatNojpeg

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden. It says nothing about what is returned (image bytes/encoding), whether the call is a safe read, or how the interaction with the active tab works. The only behavioral disclosure is the session_id default note.

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 short sentence with no filler and the key constraint front-loaded. Slightly too terse for a four-parameter tool, but structurally sound.

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

Completeness2/5

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

For a tool with four undocumented parameters, no annotations, and no output schema, the description is far too thin. It omits return-value behavior, the meaning of full_page/image_format/quality, and any precondition such as a running browser session.

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

Parameters2/5

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

Schema description coverage is 0%, so all four parameters (quality, full_page, session_id, image_format) depend on the description. The description only addresses session_id; quality, full_page, and image_format remain entirely undocumented in both description and schema.

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

Purpose4/5

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

States a verb+resource ('Capture the single agent browser') that, combined with the tool name, clearly identifies a screenshot operation on the single managed browser. It doesn't explicitly say it returns image data, so it falls short of the fully self-contained 5.

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?

'session_id is usually omitted' gives a genuine usage hint for that parameter, but there is no guidance on when to take a screenshot vs. the sibling browser_snapshot, browser_get_text, or browser_find_text, and no stated prerequisites (e.g., browser must be started).

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

browser_select_option_refC

Select an option by snapshot ref and return the updated snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYes
valueYes
observeNocompact
session_idNo
timeout_msNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations exist, so the description carries the full behavioral burden. It does disclose one trait — that an updated snapshot is returned as a side effect — but says nothing about session requirements, what happens when the ref is stale, whether change/input events fire, or how timeout_ms affects failure.

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 the action, the addressing key, and the result — no filler whatsoever.

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

Completeness2/5

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

For a 5-parameter browser action with no annotations and 0% param coverage, the description is far too thin; only the output side is covered, and even that is partly redundant with the existing output schema.

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

Parameters2/5

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

Schema description coverage is 0% for 5 parameters. The description accounts for ref and loosely for value, but observe (enum with compact/full/none), session_id, and timeout_ms are entirely undocumented in both schema and description.

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

Purpose4/5

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

States a specific verb (Select) and resource (option) plus the addressing mechanism (snapshot ref), which separates it from browser_click_ref and browser_set_value_ref. It stops short of explicitly naming those siblings or the element types it applies to.

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 when-to-use guidance, no prerequisites, and no mention of alternatives such as browser_set_value_ref or browser_set_form_values. The agent must infer from the name that this is for <select>/dropdown elements only.

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

browser_set_form_valuesC

Fill several snapshot refs in one call; each item has ref and value.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsYes
observeNocompact
session_idNo
timeout_msNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden yet discloses almost nothing: it does not say whether the fills are atomic (all-or-nothing vs partial), whether the page mutates, submits, or invalidates snapshot refs after filling, or what permissions/session requirements apply. Only the batching hint adds anything beyond the name.

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 with no filler. It is efficient, though the second clause partially restates the schema's FormField definition.

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?

An output schema exists, so return values need not be explained, but for a mutation tool with no annotations and 0% parameter coverage the description is far too thin. Key facts an agent needs — atomicity of the batch, post-fill state effects, and the role of observe/session_id/timeout_ms — are all absent.

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

Parameters2/5

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

Schema description coverage is 0%, and the description explains only the fields array ('each item has ref and value'), which the schema already conveys. It says nothing about the observe enum, session_id, or timeout_ms parameters, leaving three of four parameters undocumented in both places.

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?

States a specific verb ('Fill') and resource ('snapshot refs'/form values) plus the batch semantics ('several ... in one call'). It doesn't explicitly distinguish itself from the sibling browser_set_value_ref, so the singular-vs-batch scope must be inferred.

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 phrase 'several ... in one call' weakly implies a batch use case versus browser_set_value_ref, but there is no explicit when-to-use, when-not, or alternative routing. An agent is left to guess whether to call this once or the singular tool repeatedly.

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

browser_set_value_refC

Fill a snapshot ref without echoing the value into the tool result.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYes
valueYes
observeNocompact
session_idNo
timeout_msNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations provided, the description carries the full behavioral burden. It usefully discloses that the value is not echoed into the tool result, but it omits other important traits such as mutation side effects, event triggering, session requirements, timeout behavior, and whether the operation is reversible.

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 a single sentence with no wasted words and front-loads the action. However, it is too terse for a five-parameter browser automation tool with no schema descriptions or annotations, so conciseness comes at the cost of necessary detail.

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

Completeness2/5

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

Given the tool's complexity, lack of annotations, and 0% schema description coverage, the description is substantially incomplete. It covers one behavioral guarantee but leaves parameter semantics and most operational context undocumented, though the presence of an output schema reduces the need to explain return values.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for all five parameters. It loosely corresponds to the required ref and value parameters, but provides no format details and completely omits the observe, session_id, and timeout_ms parameters.

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

Purpose4/5

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

The description states a specific action ('Fill') and target ('snapshot ref'), making the basic purpose identifiable. However, it does not distinguish this tool from sibling tools like browser_type_text_ref or browser_set_form_values, so an agent must infer the difference.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, no prerequisites, and no mention of browser session requirements. The only implicit usage signal is that a snapshot ref is needed, which comes from the parameter name rather than the description.

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

browser_snapshotC

Return a page snapshot and optionally match controls by query and role.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNo
queryNo
session_idNo
max_resultsNo
max_elementsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries full behavioral burden. It implies a read operation by saying 'Return,' but does not disclose snapshot format, pagination/truncation behavior, whether matching filters the snapshot or just highlights controls, or any session requirements.

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

Conciseness4/5

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

The description is a single front-loaded sentence with no wasted words. It is appropriately concise in form, though that conciseness comes at the cost of missing necessary detail.

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?

Even with an output schema present, the description is not complete enough for a five-parameter browser tool with no annotations and no schema descriptions. It omits parameter semantics, usage context, and runtime behavior that an agent would need to invoke it correctly.

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

Parameters2/5

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

Schema description coverage is 0% across five parameters. The description mentions query and role, but only vaguely as optional matching criteria; it does not explain accepted role values, query matching behavior, or what session_id, max_results, and max_elements do.

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

Purpose4/5

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

The description states a specific verb and resource: returning a page snapshot and optionally matching controls by query and role. This is clear enough to distinguish from browser_screenshot and browser_get_text, though it does not explicitly name or compare against those siblings.

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 when-to-use guidance, prerequisites, or alternatives. It does not explain whether this should be preferred over browser_screenshot, browser_find_text, or browser_get_text, or under what circumstances one would want a snapshot.

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

browser_startB

Start the agent browser; proxy and geo settings come from server config.

ParametersJSON Schema
NameRequiredDescriptionDefault
seedNo
headlessNo
humanizeNo
fingerprint_profileNoauto

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses that proxy and geo configuration are inherited from server config (so the agent need not supply them), but says nothing about side effects, resource cost, idempotency if already started, or lifecycle semantics for a spawning operation.

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

Conciseness4/5

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

A single tight sentence with the primary action front-loaded and a useful secondary clause about config inheritance. No wasted words, though it is arguably under-specified rather than optimally 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 return-value explanation is correctly omitted. However, for a four-parameter launch tool with no annotations, the description leaves the parameters and lifecycle behavior (e.g. calling when a browser is already active) undocumented, which is a meaningful gap.

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

Parameters2/5

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

Schema description coverage is 0% across four parameters (seed, headless, humanize, fingerprint_profile), so the description must compensate and does not. It names none of them, and the enum options for fingerprint_profile ('auto', 'windows', 'linux_native') are never explained in prose.

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?

Specific verb ('Start') plus resource ('agent browser') clearly identifies the action and separates it from lifecycle siblings like browser_stop and browser_status. It stops short of explicitly naming which sibling to use in what order, but the purpose itself is unambiguous.

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 (start the browser before driving it) but gives no explicit when-to-use/when-not guidance, no ordering relative to browser_status/browser_navigate, and no note about what to do if the browser is already running. Usage is inferable from the name rather than stated.

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

browser_statusA

Return status for the single agent browser; session_id is usually omitted.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 burden. It discloses that the tool operates on a single browser and that the session parameter is typically unnecessary, but it does not say whether it reports absent browsers, errors, or resource state; the output schema presumably covers the returned shape.

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?

One short sentence, front-loaded with the verb and resource, with the optional-parameter note appended. 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 single-parameter read tool with an output schema and no annotations, the description covers purpose and the key parameter nuance. It stops short of mentioning error or unavailability behavior but is adequate for correct invocation.

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

Parameters4/5

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

Schema description coverage is 0% and the schema only gives an empty default for session_id. The description compensates by explaining that session_id is usually omitted, which is meaningful guidance absent from the schema.

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

Purpose4/5

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

States a specific verb (Return) and resource (status for the single agent browser), enough to distinguish from sibling status tools like binary_status and from action tools like browser_navigate. It is not fully self-contained but clear.

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 noting session_id is usually omitted, which tells the agent the default single-browser case, but does not state when to prefer this over browser_list_tabs or other state-retrieval siblings.

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

browser_stopB

Close the single agent browser; session_id is usually omitted.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, and it is thin. The word 'Close' implies a destructive terminal action, but the description does not say whether it destroys the session/tabs, whether it is idempotent when nothing is open, or whether it errors. Only the scope hint ('single agent browser') adds context.

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 compact sentence with the action front-loaded and the parameter caveat trailing. Nothing is wasted, though the extreme brevity leaves gaps that a slightly longer description could close.

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 output schema covers return values, so those need not be explained. Still, for a tool with no annotations and 0% parameter coverage, the definition is minimal: it omits the state-destroying effects of closing the browser and the behavior when no session exists.

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?

With 1 parameter and 0% schema description coverage, the description is the only source of parameter meaning, and it does supply the key fact: 'session_id is usually omitted,' signalling the parameter is optional and normally defaulted. It never explains what a non-empty session_id does or what values are valid.

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?

States a specific verb and resource: 'Close the single agent browser.' The word 'single' clarifies scope, and close is clearly the inverse of the sibling browser_start. It does not explicitly name siblings, but the operation is unambiguous.

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?

Usage is only implied: you call it when you want to shut the browser down. There is no statement of when not to call it, what happens if no browser is running, or how it relates to alternatives such as calling browser_start again.

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

browser_type_text_refC

Type into a snapshot ref without echoing the text into the result.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYes
textYes
observeNocompact
session_idNo
timeout_msNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose one useful trait: typed text is not echoed into the result. It says nothing about whether existing content is replaced or appended, focus requirements, or how timeout_ms/observe affect behavior.

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 with no filler; the informational clause about not echoing text is placed at the end where it reads as a qualifier rather than the main point. Efficient, though terse to the point of omission.

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

Completeness2/5

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

For a 5-parameter, unannotated mutation tool, this is well short of complete: three parameters and the session/timeout semantics are undocumented, and no prerequisites or side effects are stated. The output schema covers return values, but the input side is not covered.

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

Parameters2/5

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

Schema description coverage is 0% across five parameters, so the description would need to compensate, yet it mentions only ref and text implicitly. observe (enum), session_id, and timeout_ms are left entirely unexplained in both the schema and the description.

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

Purpose4/5

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

States a specific verb (type) and resource (snapshot ref), and the trailing clause clarifies a distinguishing behavior versus a plain set-value call. It is not fully differentiated from the close sibling browser_set_value_ref, but the action is unambiguous.

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

Usage Guidelines2/5

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

There is no guidance on when to use this instead of browser_set_value_ref, browser_set_form_values, or browser_click_ref, even though they are near-neighbors. Usage can only be inferred from the tool name.

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

browser_wait_forA

Wait until all supplied text, URL, and ref-state conditions are true.

text and url use case-insensitive substring matching. state is applied only when ref is supplied. At least one condition is required.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNo
urlNo
textNo
stateNovisible
session_idNo
timeout_msNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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

No annotations provided, so description carries the full behavioral burden. It discloses matching semantics (case-insensitive substring), conditional logic (state applies only with ref), the requirement of at least one condition, and implies a polling/wait behavior. However, it does not state blocking behavior, timeout default handling, or what happens on timeout failure.

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?

Front-loads the core action and required condition, then adds matching semantics. Four sentences, all relevant, no filler. Could be slightly more compact but the structure is clear and hierarchical.

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 return values need not be explained. But with 0% schema coverage and 6 parameters, the description leaves timeout_ms, session_id, and ref state behavior insufficiently documented for an agent to call parameters correctly without additional inference.

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

Parameters2/5

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

Schema coverage is 0%, meaning the description must compensate fully for parameter documentation but fails to explain most parameters. It adds meaning to text, url, ref, and state but ignores session_id and timeout_ms entirely, leaving 2 of 6 parameters undocumented anywhere.

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?

States a specific verb (Wait until) and the condition types (text/url/ref-state). Distinguishes itself from siblings like browser_screenshot or browser_click_ref by clearly being the synchronization/polling tool.

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?

Says 'At least one condition is required' which establishes the minimum usage, but does not state when to use this tool over alternatives like browser_status or browser_find_text. No explicit exclusions or comparative routing guidance.

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. 19 tool updatesv0.1.0
    • First observedbinary_install
    • First observedbinary_status
    • First observedbrowser_activate_tab
    • First observedbrowser_click_ref
    • First observedbrowser_find_text
    • First observedbrowser_get_text
    • First observedbrowser_list_tabs
    • First observedbrowser_navigate
    • First observedbrowser_reload
    • First observedbrowser_screenshot
    • First observedbrowser_select_option_ref
    • First observedbrowser_set_form_values
    • First observedbrowser_set_value_ref
    • First observedbrowser_snapshot
    • First observedbrowser_start
    • First observedbrowser_status
    • First observedbrowser_stop
    • First observedbrowser_type_text_ref
    • First observedbrowser_wait_for

TDQS

B3.2/5.0

Scored across 19 tools

Disambiguation4/5

Most tools map to a clearly distinct action on the browser or binary. Minor overlap exists among content-extraction tools (browser_snapshot, browser_get_text, browser_find_text) and among input tools (browser_set_value_ref, browser_type_text_ref, browser_set_form_values), but descriptions differentiate them well enough that misselection is unlikely.

Naming Consistency4/5

The set is dominated by a consistent browser_verb_noun pattern, with action-oriented suffixes (click_ref, set_value_ref). The only deviation is the two binary_* tools, which themselves share a coherent verb_noun pattern, so the naming remains predictable overall.

Tool Count4/5

19 tools is slightly heavy but justified by genuine browser-automation breadth (lifecycle, tabs, navigation, interaction, extraction, waiting) plus binary management. Almost every tool covers a distinct capability, with little redundancy.

Completeness4/5

Core lifecycle (start/stop/status/reload/navigate), tab handling, form interaction, content extraction, waiting, and binary install/verify are covered, giving a nearly complete surface. Gaps remain for close-tab, keyboard/hover/scroll or drag actions, and cookie/download control, but agents can largely work around these.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    Not graded
    maintenance
    A MCP server that provides browser automation tools, allowing users to navigate websites, take screenshots, click elements, fill forms, and execute JavaScript through Playwright.
    8
    2
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that enables AI-powered browser automation, web scraping, and testing using Playwright across Chromium, Firefox, and WebKit. It allows users to perform actions like navigation, clicking, typing, and taking screenshots through natural language interfaces.
    6 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that enables AI agents to automate browser interactions using Playwright and Cloudflare Workers, supporting tasks like navigation, clicking, typing, and screenshots.
    4,799 npm
    Apache 2.0