spectra-mcp
Provides tools for AI agents to control a patched Firefox browser with anti-detect features, including navigation, page snapshot inspection, element interaction (click, type, select), form filling, text extraction, tab management, and screenshot capture.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@spectra-mcpNavigate to google.com and search for 'MCP servers'."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 FirefoxHighlights
Agent-first
snapshot → ref → actionworkflowAutomatic fingerprint profile, timezone, and locale selection
Humanized mouse movement and browser-level fingerprint patches
Typed MCP results and real
isError=truefailuresSecret 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 fetchThe 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
Call
binary_status; usebinary_installif needed.Call
browser_start.Navigate with
browser_navigate.Inspect the page with
browser_snapshot.Act through
browser_click_ref,browser_set_value_ref,browser_type_text_ref,browser_select_option_ref, orbrowser_set_form_values.Use
browser_list_tabsandbrowser_activate_tabwhen a popup or new tab opens.Use
browser_wait_forfor asynchronous text, URL, or element changes.Read targeted content with
browser_find_textor paginatedbrowser_get_text.Call
browser_stopwhen 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 toolsbinary_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.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page_id | Yes | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | ||
| observe | No | compact | |
| session_id | No | ||
| timeout_ms | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| session_id | No | ||
| max_results | No | ||
| context_chars | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | ||
| selector | No | ||
| max_chars | No | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It 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.
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.
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.
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.
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.
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_reloadC
Reload and return no, compact, or full snapshot observation.
| Name | Required | Description | Default |
|---|---|---|---|
| observe | No | compact | |
| session_id | No | ||
| timeout_ms | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| quality | No | ||
| full_page | No | ||
| session_id | No | ||
| image_format | No | jpeg |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | ||
| value | Yes | ||
| observe | No | compact | |
| session_id | No | ||
| timeout_ms | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | ||
| observe | No | compact | |
| session_id | No | ||
| timeout_ms | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | ||
| value | Yes | ||
| observe | No | compact | |
| session_id | No | ||
| timeout_ms | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | ||
| query | No | ||
| session_id | No | ||
| max_results | No | ||
| max_elements | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| headless | No | ||
| humanize | No | ||
| fingerprint_profile | No | auto |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | ||
| text | Yes | ||
| observe | No | compact | |
| session_id | No | ||
| timeout_ms | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | ||
| url | No | ||
| text | No | ||
| state | No | visible | |
| session_id | No | ||
| timeout_ms | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
19 tool updates
v0.1.0- First observed
binary_install - First observed
binary_status - First observed
browser_activate_tab - First observed
browser_click_ref - First observed
browser_find_text - First observed
browser_get_text - First observed
browser_list_tabs - First observed
browser_navigate - First observed
browser_reload - First observed
browser_screenshot - First observed
browser_select_option_ref - First observed
browser_set_form_values - First observed
browser_set_value_ref - First observed
browser_snapshot - First observed
browser_start - First observed
browser_status - First observed
browser_stop - First observed
browser_type_text_ref - First observed
browser_wait_for
TDQS
Scored across 19 tools
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.
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.
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.
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
Related MCP Connectors
Stealth web browser for agents: search, fetch, click, download and type in persistent MCP sessions.
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Related MCP Servers
- AlicenseBqualityNot gradedmaintenanceA MCP server that provides browser automation tools, allowing users to navigate websites, take screenshots, click elements, fill forms, and execute JavaScript through Playwright.82Apache 2.0
- AlicenseNot gradedqualityNot gradedmaintenanceA Playwright-based MCP server that exposes a live browser as a traceable, inspectable, debuggable and controllable execution environment for AI agents.3,661 npm57-
- AlicenseNot gradedqualityDmaintenanceAn 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 npmMIT
- AlicenseNot gradedqualityCmaintenanceAn 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 npmApache 2.0