Skip to main content
Glama
ORCHORDS

orchords-web-pilot

Official
by ORCHORDS

Orchords Web Pilot

Main verification Daily build CodeQL Dependency audit License: Apache-2.0

⭐ If you like Orchords Web Pilot or find it useful, please consider starring this repository. It helps more people discover the project.

Interested in sponsoring ORCHORDS? Sponsorships start at US$1,000. Depending on the sponsorship level, sponsors may receive public recognition, logo and website placement, sponsor updates and early previews, roadmap-feedback briefings, priority issue triage, and engineering or integration discussions. Sponsorship does not buy control of the roadmap or guarantee feature implementation. Contact crm@orchords.com.

Independent software studio founded in 2025.

A Model Context Protocol server that gives coding agents a real browser — navigate, observe, interact, and capture proof on any web page through one transport-agnostic surface.

Orchords Web Pilot is a Model Context Protocol server that exposes a Playwright-backed browser session as a set of agent-friendly tools. Point your agent at it and it can navigate, observe, interact, and capture proof on any web page — same model across local and hosted browsers, same surface across stdio and Streamable HTTP transports.

Start here

If you need…

Start with

Install and first run

Install

Wire it into a desktop agent

stdio (default)

Run it as a hosted service

Streamable HTTP

Use a remote browser grid

Local or remote browser

Available tools and parameters

Tools · Configuration

Security guidance

Security · SECURITY.md

Contributing process

Contributing

Related MCP server: browser-devtools-mcp

Capabilities

  • Real Chromium session — local via Playwright or remote via any WebSocket endpoint (Browserless, hosted Chrome, your own grid)

  • Small, well-typed tool surface — navigate, snapshot, click, type, screenshot, drag, press-key, hover, evaluate JS, capture console + network, fill forms, manage tabs

  • One transport for everything — stdio for desktop agents, Streamable HTTP for hosted and multi-user setups

  • Auto-detection — set BROWSER_WS_ENDPOINT to flip to a remote browser; everything else stays the same

  • Accessibility-first — every interaction accepts an element target from the agent's snapshot, not raw pixel coordinates

Install

npm install -g orchords-web-pilot

Or run it straight from a checkout:

git clone https://github.com/ORCHORDS/OrchordsBrowserPilot.git
cd OrchordsBrowserPilot
npm install
npm run build
npm start

Compatibility

  • Node.js: >=20.10.

  • Playwright: >=1.59.1 <2.0.0. Web Pilot uses the AI-mode accessibility snapshot APIs introduced in the Playwright 1.59 line; startup fails with an actionable error if package-manager overrides force an older or unsupported major version.

  • Browser binaries: Playwright browser revisions are coupled to the installed Playwright package. After changing Playwright versions, install the matching browser with npx playwright install chromium (or npx playwright install --with-deps chromium on a fresh Linux runner).

  • Verification policy: every main push exercises the declared minimum Playwright 1.59.1 with a real browser and also installs the packed npm artifact into a clean fixture. The scheduled Daily Build deliberately overrides the lockfile with the current stable playwright@latest to detect upstream compatibility drift before the supported range is changed.

Web Pilot does not claim support for arbitrary older Playwright installations just because npm can be forced to resolve them. The declared dependency range, runtime guard, package smoke test, and CI compatibility lanes are the support contract.

Usage

stdio (default — desktop agents)

Add to your MCP client config (Claude Desktop, ZCode, etc.):

{
  "mcpServers": {
    "orchords-web-pilot": {
      "command": "orchords-web-pilot",
      "env": {
        "PILOT_HEADLESS": "true"
      }
    }
  }
}

Streamable HTTP (hosted / shared)

PILOT_TRANSPORT=http \
PILOT_HTTP_HOST=0.0.0.0 \
PILOT_HTTP_PORT=8788 \
PILOT_HTTP_PATH=/mcp \
npm start

Then point your client at http://<host>:8788/mcp.

Local or remote browser

By default Web Pilot launches a local Chromium via Playwright. To use a remote browser (Browserless, hosted Chrome, your own grid), set:

export BROWSER_WS_ENDPOINT="wss://chrome.browserless.io?token=..."

The server auto-detects: if BROWSER_WS_ENDPOINT is set it connects to that; otherwise it spins up a local browser.

Tools

Tool

What it does

browser_navigate

Open a URL.

browser_snapshot

Return an accessibility tree (preferred for agent planning).

browser_click

Click by ref (from snapshot), selector, or coordinate.

browser_type

Type into the focused element.

browser_fill

Set an input value directly.

browser_press

Press a key (Enter, Tab, Escape, arrow keys…).

browser_hover

Hover an element.

browser_drag

Drag from one element to another.

browser_select

Choose an <option> in a <select>.

browser_screenshot

Capture PNG (returns base64 or saves to disk).

browser_evaluate

Run a JS expression in the page context.

browser_console

Read console messages captured for this session.

browser_network

List network requests captured for this session.

browser_wait

Wait for text, selector, or a fixed duration.

browser_captcha_solve

Plug into an external captcha-solving service.

Snapshot refs

browser_snapshot returns an accessibility tree in which every interactive node carries a ref token, e.g.:

- generic [active] [ref=e1]:
  - heading "Settings" [level=1] [ref=e2]
  - button "Save" [ref=e3]
  - textbox "Email" [ref=e4]

Pass the token back into any interaction tool: browser_click({ "ref": "e3" }). Refs are resolved to scoped Playwright locators (role + accessible name + occurrence index), so they work even when CSS selectors would be brittle.

Ref lifetime. Refs are valid from the moment browser_snapshot returns until the next navigation (or another snapshot replaces them). After a browser_navigate, all previous refs are invalidated. Using an invalidated ref returns a structured error (Ref 'eN' is no longer valid…) rather than clicking the wrong element — take a fresh browser_snapshot and retry.

Fallback. Every interaction tool also accepts a raw CSS selector (and browser_click accepts x/y coordinates). Prefer refs for agent flows; use selectors only when you already know the DOM.

Sessions. Each MCP session owns its own page, console buffer, and network buffer. On the HTTP transport, sessions are keyed by the Mcp-Session-Id header; on stdio there is a single session for the process lifetime. Console and network diagnostics never leak across sessions.

The captcha-solver tool is a hook: it reads PILOT_CAPTCHA_SOLVER_URL and PILOT_CAPTCHA_SOLVER_TOKEN and forwards the challenge. Wire in your own provider (2Captcha, AntiCaptcha, your own microservice) — the MVP does not ship a default to keep the licensing surface clean.

HTTP transport security

The HTTP endpoint is hardened by default (#43):

  • Origin validation — any request carrying an Origin header must match the allowlist (loopback variants by default) or it is rejected with 403. This blocks malicious websites from driving your local browser via fetch against localhost:8788, including sandboxed null origins.

  • Host validationHost must match the bound host or the allowlist, defeating DNS-rebinding attacks.

  • Public-bind refusal — binding to a non-loopback address (including 0.0.0.0) fails at startup unless PILOT_HTTP_ALLOW_PUBLIC_BIND=true is set. There is no authentication yet (#42); expose the server only through an authenticating reverse proxy.

  • Rate limiting — fixed-window per client IP (default 120/min) with 429 + Retry-After.

  • Body cap + timeouts — requests above the body cap get 413; each request has a hard timeout (504).

  • Security headersX-Content-Type-Options: nosniff, Cache-Control: no-store, X-Frame-Options: DENY.

Configuration

All config is via environment variables. See .env.example.

Variable

Default

Notes

PILOT_TRANSPORT

stdio

stdio or http.

PILOT_HTTP_HOST

127.0.0.1

HTTP transport only.

PILOT_HTTP_PORT

8788

HTTP transport only.

PILOT_HTTP_PATH

/mcp

HTTP transport only.

PILOT_HTTP_ALLOWED_ORIGINS

loopback

Comma-separated Origin allowlist.

PILOT_HTTP_ALLOWED_HOSTS

bind host

Comma-separated Host allowlist.

PILOT_HTTP_RATE_LIMIT

120

Requests/minute per client IP.

PILOT_HTTP_MAX_BODY_KB

1024

Max JSON body size.

PILOT_HTTP_REQUEST_TIMEOUT_SEC

60

Hard per-request timeout.

PILOT_HTTP_TRUST_PROXY

false

Honor X-Forwarded-For (trusted proxies only).

PILOT_HTTP_ALLOW_PUBLIC_BIND

false

Required to bind beyond loopback.

PILOT_HEADLESS

true

Set false to watch the agent work.

BROWSER_WS_ENDPOINT

(unset)

Set to use a remote browser.

PILOT_CAPTCHA_SOLVER_URL

(unset)

Captcha solver endpoint.

PILOT_CAPTCHA_SOLVER_TOKEN

(unset)

Captcha solver bearer token.

Development

npm install
npm run dev      # tsx watch
npm run lint
npm test

Security

Web Pilot is opt-in remote-capable. The HTTP transport binds to 127.0.0.1 by default; change to 0.0.0.0 only behind auth. Never expose it on the public internet without putting a reverse proxy + auth in front.

See SECURITY.md.

Documentation boundary

Product-specific engineering guidance lives in this repository. Company-wide public engineering, security, governance, and operational documentation is maintained in ORCHORDS/docs.

Contributing

Issues and PRs welcome. See CONTRIBUTING.md.

Brand

ORCHORDS — BUILD DIFFERENT.

License

Licensed under the Apache License 2.0.

Available Tools

15 tools
browser_captcha_solveB

Forward a captcha challenge to the configured solver (PILOT_CAPTCHA_SOLVER_URL).

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNorecaptcha-v2
pageUrlYes
siteKeyYes

TDQS

B3.1/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 burden of behavioral disclosure. It does reveal one important behavioral trait: the challenge is forwarded to an external configured solver at PILOT_CAPTCHA_SOLVER_URL. However, it does not state whether the tool waits for a solution, returns a token, mutates the page, fails if no solver is configured, or performs any network/authorization side effects.

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 element—verb, resource, and solver configuration—earns its place, and the parenthetical configuration reference is compact yet informative.

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 that there are no annotations, no output schema, and three parameters to understand, the description is incomplete. It does not explain what happens after forwarding, what a successful or failed solve looks like, or which captcha types are accepted beyond the schema enum. An agent would still need substantial inference to call this tool confidently.

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

Parameters1/5

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

Schema description coverage is 0%, so the description must compensate for explaining siteKey, pageUrl, and type. It does not mention any parameter names or explain how each field contributes to the forwarded captcha challenge. The phrase 'captcha challenge' hints at the domain but adds no meaningful parameter-level semantics beyond the schema's field names and enum.

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

Purpose5/5

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

The description states a specific verb ('Forward') and a specific resource ('a captcha challenge to the configured solver'), making the tool's function immediately clear. It also differentiates itself from the sibling browser tools by naming the captcha-solving delegation behavior rather than navigation, clicking, or typing.

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?

There is no explicit statement about when to use this tool versus alternatives. The name and sibling list imply it should be used when a captcha challenge is encountered, but no exclusions or alternatives are mentioned, leaving usage to inference.

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

browser_clickB

Click an element identified by a snapshot ref, CSS selector, or x+y coordinates. Prefer ref from browser_snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNo
yNo
refNo
selectorNo

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description carries full responsibility for behavioral disclosure. It states only that a click is performed, but omits any side effects such as page navigation, waiting for elements, scrolling into view, or failure behavior. It also does not indicate whether the click is synchronous or whether it returns any confirmation. This is a significant gap for a browser automation tool.

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

Conciseness5/5

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

The description is a single sentence that front-loads the action and identification methods, immediately followed by the recommendation to prefer `ref`. There is no filler or redundancy; every word earns its place. It is concise without sacrificing essential 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?

For a browser interaction tool, the description is too thin. It does not mention post-click behavior (e.g., page load waiting, need to refresh snapshot), error handling, or whether the click is relative to the viewport. Given the absence of an output schema and annotations, the description leaves the agent guessing about important execution details. It is adequate for a trivial click but incomplete for real-world automation scenarios.

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 schema lists four parameters with no descriptions (schema coverage 0%), so the description must compensate. It does so by clarifying that `ref`, `selector`, and (x, y) are alternative ways to identify the element, and explicitly recommends `ref` from browser_snapshot. This adds meaning beyond the raw schema by explaining the relationship between parameters and providing a priority hierarchy.

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

Purpose5/5

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

The description clearly states the action (click) and the resource (an element), and specifies three distinct identification methods (snapshot ref, CSS selector, coordinates). It is unambiguous about what the tool does and naturally distinguishes from sibling tools like hover or type. The mention of preferring `ref` from browser_snapshot adds operational clarity.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as browser_hover or browser_type. The only usage hint is the preference for `ref` over other identifiers, but that is a parameter-selection hint, not a tool-selection criterion. There is no mention of scenarios where coordinates or selector might be preferable, nor any exclusions.

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

browser_consoleB

Read console messages captured for the current session.

ParametersJSON Schema
NameRequiredDescriptionDefault
levelNolog
limitNo

TDQS

B3.1/5.0
Behavior3/5

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

There are no annotations, so the description must carry the behavioral burden. 'Read' implies a non-mutating operation and 'captured' indicates that messages are pre-recorded from the session, but the description does not say whether the console buffer persists across navigations, how stale the captured messages are, or what the tool returns when the console is empty.

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

Conciseness5/5

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

The description is a single sentence that states action, object, and scope with no filler. It is appropriately sized for the tool's simplicity.

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 read-only console reader with optional filter parameters, this is a workable description, but it omits usage context, output format, and behavioral expectations such as message retention. It is adequate but leaves an agent to infer several things before calling.

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 does not mention level or limit. The parameter names and the level enum are reasonably self-evident, but the description adds no meaning to the filters or bounds, so an agent must infer semantics from names and defaults alone.

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 uses a specific verb ('read') with a clear resource ('console messages') and a scoping qualifier ('current session'). It is meaningfully distinct from siblings like browser_network or browser_evaluate, though it does not explicitly name or contrast them.

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 browser_evaluate or browser_network, and no mention of prerequisites such as having navigated first. The only contextual hint is 'current session,' which implies scope but not selection criteria.

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

browser_dragC

Drag from one element to another. Accepts snapshot refs or selectors.

ParametersJSON Schema
NameRequiredDescriptionDefault
toRefNo
fromRefNo
toSelectorNo
fromSelectorNo

TDQS

C2.7/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden of behavioral disclosure. 'Drag from one element to another' implies an interaction, but it does not describe side effects, whether events are triggered, whether the action is reversible, or what the tool returns. This is comparable to a mutation tool that states its action without explaining consequences.

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 very concise and front-loaded, with no filler. Both clauses earn their place by stating the action and the accepted input modes. It is efficient, though slightly underspecified.

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 no annotations, no output schema, and four undocumented optional parameters, this description is not complete. An agent would need to infer prerequisites such as needing a snapshot first, the effect of the drag, and what happens on success or failure.

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?

With 0% schema description coverage, the description must compensate. 'Accepts snapshot refs or selectors' adds useful meaning by explaining the two addressing modes, but it does not map these to fromRef/toRef and fromSelector/toSelector, clarify whether the modes are exclusive, or describe how the from/to pairs relate.

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 ('Drag') and resource ('from one element to another'), which clearly identifies the tool's core action and distinguishes it from siblings like browser_click and browser_hover. However, it does not explicitly differentiate itself from alternatives or state what makes it unique beyond the drag action.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus browser_click, browser_hover, or browser_select. The description mentions that it accepts snapshot refs or selectors, but does not explain when one addressing mode is preferred or whether both are required.

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

browser_evaluateB

Run a JS expression in the page context and return its JSON-serializable result.

ParametersJSON Schema
NameRequiredDescriptionDefault
expressionYes

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 burden of behavioral disclosure. It mentions the page context and the JSON-serializable result, but it does not warn that arbitrary JS may mutate page state, trigger navigation or network requests, or fail on non-serializable values.

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 zero filler: it states the action, the target context, and the return behavior. Every word contributes.

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 no annotations and no output schema, the description should explain side effects, error behavior, and return-value limitations. It only covers the happy path, leaving an agent without enough information to use the tool safely and correctly.

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?

The schema only defines 'expression' as a string, so the description adds meaning by identifying it as a JS expression. However, it does not clarify expected syntax, async handling, or how return values are serialized, so it only partially compensates for the 0% schema coverage.

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, 'Run', and a specific resource, 'a JS expression in the page context', while also describing the return behavior. This clearly distinguishes it from sibling tools like browser_click and 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?

The description does not say when to prefer this over browser_console, browser_snapshot, or other siblings, and it gives no exclusions. The intended use is only implied by the phrase 'JS expression', not stated.

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

browser_fillC

Replace an input value via Playwright's fill() — accepts a selector or a snapshot ref.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNo
valueYes
selectorNo

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 behavioral transparency burden. It does disclose that the tool uses Playwright's fill() and accepts a selector or snapshot ref, but it omits side effects, actionability requirements, error behavior, or return value. This is thin for an unannotated mutation tool.

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

Conciseness5/5

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

The description is one sentence with no filler, and the core mechanism and locator options are front-loaded. Every phrase adds information.

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 an unannotated tool with no output schema and 0% schema coverage, this description is incomplete. It does not warn agents that calling with only 'value' is accepted by the schema but likely useless, nor does it describe what happens on success or failure.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It usefully explains that selector and ref are alternative locator strategies, but it does not clarify whether one is required, whether they are mutually exclusive, or what constraints apply to the required 'value' parameter.

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 identifies a specific verb ('replace'), a clear resource ('an input value'), and the underlying mechanism (Playwright's fill()). It does not explicitly distinguish itself from siblings such as browser_type, but 'replace' and 'fill()' convey whole-value overwrite semantics clearly.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool versus alternatives like browser_type or browser_click. The only clue is the word 'replace', which implies usage but never states exclusions, prerequisites, or when to prefer a different browser tool.

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

browser_hoverB

Hover an element. Accepts a snapshot ref or a selector.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNo
selectorNo

TDQS

B3.3/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 of behavioral disclosure. It only says 'Hover an element' without explaining side effects, prerequisite visibility, scroll-into-view behavior, timing, or how failures are reported. The action type is obvious from the name, but the behavioral consequences are undisclosed.

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

Conciseness5/5

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

The description is two short sentences with no filler. The core action and the two targeting mechanisms are front-loaded, making it easy to scan. 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?

For a tool with two optional string parameters and no output schema, this is minimally adequate but has clear gaps. The description tells the agent what action to perform and how to specify the element, but not when to prefer one parameter over the other or what observable behavior to expect. The lack of annotations and schema descriptions leaves important context uncovered.

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

Parameters3/5

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

Schema description coverage is 0%, and the two parameters have no descriptions. The description partially compensates by saying the tool accepts 'a snapshot ref or a selector,' which clarifies that ref and selector are alternative ways to target an element. However, it does not define what a snapshot ref looks like, how to format a selector, or what happens if both are provided.

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

Purpose5/5

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

The description states the specific verb 'hover' with the resource 'element,' which clearly differentiates it from sibling tools like browser_click, browser_type, and browser_drag. Adding that it accepts a snapshot ref or selector further disambiguates its purpose. This is a one-sentence, fully clear purpose statement.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool versus browser_click or other interaction tools, nor are any exclusions or prerequisites mentioned. The phrase 'Accepts a snapshot ref or a selector' is input guidance, not usage-direction. The agent is left to infer appropriate hover scenarios.

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

browser_navigateC

Open a URL in the browser.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

TDQS

C2.7/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden of behavioral disclosure. It states only that a URL is opened, but does not mention whether the tool waits for page load, how it handles redirects or failures, or what state changes occur in the browser session.

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 short, front-loaded sentence with no wasted words. It is appropriately concise for such a simple tool, though some behavioral detail would justify more length.

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 low complexity and single parameter, the description captures the basic action, but it omits important operational context such as whether navigation blocks until loading completes and whether the current page context is replaced. With no annotations and no output schema, these gaps leave the agent without enough information to predict downstream behavior.

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 merely repeats the word 'URL' without adding guidance about required format, whether schemes must be present, or how the URL is interpreted. The schema's format: uri already conveys most of the parameter semantics.

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 ('open') and resource ('a URL in the browser'), which clearly identifies the tool's core function among the browser operation siblings. However, it does not explicitly clarify whether navigation happens in the current tab or a new tab/window, leaving some ambiguity about the exact behavior.

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

Usage Guidelines2/5

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

No guidance is provided about when to use browser_navigate versus sibling tools such as browser_evaluate or browser_wait. The usage context must be inferred entirely from the tool name and the sibling list.

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

browser_networkB

List network requests captured for the current session.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
staticNo

TDQS

B3.1/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 adds that requests are 'captured' and scoped to the 'current session,' but does not disclose what types of requests are included, whether static resources are captured, or any side effects or return behavior. The read-only nature of 'list' helps, but critical behavioral details are missing.

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 zero filler. It conveys the action, resource, and scope efficiently, earning every word.

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

Completeness2/5

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

Despite being a relatively simple read tool, there is no output schema, no annotations, and an ambiguous 'static' parameter. The description does not explain what the returned data looks like or what 'static' filters, leaving an agent without enough information to use the tool confidently.

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

Parameters1/5

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

Schema description coverage is 0% and the description mentions neither 'limit' nor 'static.' The schema only provides names and defaults; 'static' in particular is left completely ambiguous. The description adds no meaning beyond the schema and fails to compensate for the lack of parameter documentation.

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 ('List') and resource ('network requests'), and narrows scope to 'captured for the current session.' This clearly distinguishes it from the action-oriented sibling tools like browser_navigate and browser_click.

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?

Implied usage is clear: use when you need to inspect network requests from the current session. However, there is no explicit when-to-use guidance, exclusions, or mention of alternatives, so an agent must infer the appropriate context from the tool name and siblings.

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

browser_pressA

Press a non-text key (Enter, Tab, Escape, arrows, etc.).

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes

TDQS

A3.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 the full behavioral burden. It only states that a key is pressed, without disclosing whether the action targets the focused element, whether it can trigger page navigation or form submission, or how the key event is delivered. This is a meaningful gap for a tool that sends input to a browser.

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

Conciseness5/5

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

The description is a single compact sentence that conveys the essential operation and examples. It is front-loaded with the action and resource, and no words are wasted.

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 one-parameter tool with no output schema, this is minimally adequate: an agent knows what to call and roughly which keys are valid. However, the lack of annotations and the absence of exact key syntax or behavior side effects leave some ambiguity for correct invocation, especially for less obvious keys or modifier combinations.

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?

With 0% schema description coverage, the description must compensate for the bare 'key' string parameter. It does so by clarifying that the key must be non-text and by listing valid examples. It stops short of specifying exact key-name syntax or all supported special keys, but it adds substantial meaning beyond the schema.

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

Purpose5/5

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

The description clearly states the action ('Press'), the resource ('a non-text key'), and gives concrete examples (Enter, Tab, Escape, arrows). The phrase 'non-text' implicitly distinguishes this from sibling browser_type, making it easy for an agent to identify the tool's role.

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 usage context is implied by 'non-text key' and the examples, so an agent can infer this is for keys that insert no text. However, the description does not explicitly mention alternatives such as browser_type for text input, nor does it state when not to use this tool.

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

browser_screenshotB

Capture a PNG screenshot. Returns base64 or saves to disk if savePath is set.

ParametersJSON Schema
NameRequiredDescriptionDefault
elementNo
fullPageNo
savePathNo

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 behavioral burden; it at least discloses that output is base64 or a file written to savePath, and that the image is PNG. It does not mention whether the tool scrolls, waits, or changes page state, nor explain the default capture region or full-page behavior.

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 short front-loaded sentence conveys the core action and output mode with no filler. It is concise, though the completeness trade-off is substantial.

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 no output schema and bare string/boolean parameters, the description leaves key invocation details unexplained: element selector semantics, fullPage effect, default viewport behavior, and interaction consequences. It is adequate only as a minimal stub.

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 the bare schema. It only mentions savePath ('if savePath is set') and leaves element and fullPage completely undeclared, forcing the agent to guess their formats and behavior.

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: 'Capture a PNG screenshot', and reports the output format. However, it does not explicitly differentiate from the sibling browser_snapshot, whose name could imply a similar visual-capture role, so clarity is strong but not maximal.

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 only guidance is the conditional 'saves to disk if savePath is set', which is parameter behavior rather than a usage policy. There is no statement of when to choose this over browser_snapshot, browser_evaluate, or other siblings, and no exclusions.

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

browser_selectB

Select an by value or label. Accepts a snapshot ref or a selector.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNo
labelNo
valueNo
selectorNo

TDQS

B3.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 reveals the selection mechanism (value/label, snapshot ref/selector) but does not disclose side effects such as event dispatch, state changes, failure behavior, or whether selection replaces or requires existing page state.

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

Conciseness5/5

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

Two concise sentences with the core action front-loaded. Every phrase earns its place, and there is no filler or redundant restating of parameter names.

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 optional, undocumented parameters and no annotations or output schema, the description is too thin. Missing guidance on parameter relationships, required conditions, and expected behavior leaves an agent to guess how to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It adds meaning by mapping label/value to selection criteria and ref/selector to target location, but it does not explain whether the parameters are mutually exclusive, optional in combination, or how precedence works when both are supplied.

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 action and resource: 'Select an <option> by value or label.' This distinguishes it from sibling interaction tools like browser_click or browser_fill, since selecting a dropdown option is a distinct operation.

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 by mentioning targeting via 'a snapshot ref or a selector,' but it does not explicitly say when to prefer this tool over browser_click or other siblings, nor does it mention exclusions or prerequisites such as needing a navigated page or a rendered select element.

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

browser_snapshotA

Return the AI-oriented accessibility snapshot for the current page. Each node carries a ref token (e.g. [ref=e23]) that can be passed back into browser_click/browser_type/etc. Refs are invalidated on navigation.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the burden of behavioral disclosure. It adds key life-cycle information: each node carries a ref token, and refs are invalidated on navigation. This is important, non-obvious behavior beyond the bare 'return snapshot' statement. It does not mention output size or format, but the essentials for safe usage are covered.

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

Conciseness5/5

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

Two sentences, both information-dense and front-loaded: the first states the core action, the second adds the ref workflow and invalidation caveat. No filler or redundancy exists.

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 zero-parameter, no-output-schema tool, this description is nearly complete: it names the resource, explains ref tokens, and warns about invalidation across navigation. A minor gap is that it doesn't describe the snapshot's internal structure (e.g. tree with roles/text), which would help an agent parse the result, but the core calling convention is fully specified.

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

Parameters4/5

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

The tool has zero parameters and schema coverage is trivially 100%, so the baseline of 4 applies. The description adds value by explaining the ref token format, which is the output-side analog to parameters, but this is not required for parameter clarity.

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 ('Return') and resource ('AI-oriented accessibility snapshot for the current page'), which clearly separates it from sibling tools like browser_click or browser_navigate. The distinction from the visual snapshot presumably offered by browser_screenshot is implicit but the resource is precisely named.

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?

Explains that refs are passed into browser_click/browser_type/etc., which tells an agent when to use this tool: to obtain element references for subsequent actions. It does not explicitly exclude alternatives like browser_evaluate or browser_screenshot for inspecting the page, but the primary workflow is clear.

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

browser_typeB

Type text into the focused, matched, or ref-targeted element.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNo
textYes
slowlyNo
submitNo
selectorNo

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 of disclosure. It does reveal key behavior: text is entered and the target is resolved via focus, a matched selector, or a ref. However, it omits details like whether typing is simulated keystrokes, whether the element is auto-waited or focused first, and what the submit and slowly flags change.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no filler or repetition. Every word adds meaning, and the core behavior appears first.

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 five parameters, zero schema coverage, no annotations, and no output schema, this description is too sparse for an agent to call the tool reliably. It needs usage guidance, clearer parameter semantics, and some behavioral notes to be 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%, so the description is the only documentation for all five parameters. It loosely explains ref ('ref-targeted') and selector ('matched') but is silent on slowly and submit, and it does not clarify how the targeting modes interact with one another or with the required text parameter.

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 concrete action (type text) and a resource (the focused, matched, or ref-targeted element), so the basic purpose is clear. It does not explicitly contrast browser_type with the similarly text-oriented sibling browser_fill, so it stops short of differentiating the tools.

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 about when to choose browser_type over browser_fill, browser_press, or browser_click. The only hint is the word 'type' already present in the tool name, which provides no decision criteria.

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

browser_waitB

Wait for a selector/text or a fixed duration.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNo
timeNo
selectorNo
textGoneNo

TDQS

B3/5.0
Behavior2/5

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

There are no annotations, so the description must carry the full behavioral burden. It states the core waiting behavior but omits critical traits: what happens if the selector/text never appears, whether a timeout exists, whether the wait is a single check or polling, and the effect of combining parameters. It also fails to mention the textGone mode entirely.

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

Conciseness5/5

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

The description is one concise sentence with no filler. It front-loads the core behavior and earns its place, though additional behavioral details would be needed elsewhere.

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 4 undocumented parameters, no annotations, and no output schema, the description is too thin for fully reliable invocation. An agent cannot confidently know duration units, error/timeout behavior, or how textGone works, making the tool under-specified for its actual complexity.

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. It adds some meaning by mapping selector, text, and time to waiting modes, but it does not define parameter semantics precisely: no units for time, no selector syntax, no behavior for textGone, and no guidance on which parameters are exclusive or combinable.

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 uses a specific verb ('Wait') with clear resources ('selector/text' or 'fixed duration'), making the tool's role understandable. It does not explicitly contrast with siblings, but none of the sibling tools overlap with waiting, so the purpose 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 usage context is implied: use this tool when you need to wait for a selector, for text, or for a fixed amount of time. However, there is no explicit guidance about when not to use it, no prerequisites, and no mention of how to choose among the wait modes.

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

TDQS

A3.5/5.0
Disambiguation5/5

Each browser_ tool serves a distinct, well-defined action—navigation, snapshot, click, type, fill, press, hover, drag, select, screenshot, evaluate, wait, console, network, and captcha solving. Even the text-entry tools (type vs. fill) are clearly differentiated by their descriptions, eliminating ambiguity.

Naming Consistency5/5

All tools consistently use the 'browser_' prefix followed by a descriptive verb (or verb+noun) in lowercase snake_case, such as browser_navigate, browser_screenshot, browser_captcha_solve. This uniform pattern makes the tool names predictable and easy to learn.

Tool Count5/5

With 15 tools, the set is appropriately scoped for a comprehensive browser automation server. Each tool covers a specific aspect of web interaction without being redundant or overwhelming, staying within the ideal range for a focused purpose.

Completeness4/5

The tool surface covers the full lifecycle of browser interactions: navigation, inspection, element actions, waiting, screenshotting, JavaScript execution, and special handling like captchas. Minor gaps like tab/multi-page management or dialog handling exist, but they are non-essential for most web-pilot tasks.

Maintenance

ActivityMaintained
ResponsivenessResponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ORCHORDS/OrchordsBrowserPilot'

If you have feedback or need assistance with the MCP directory API, please join our Discord server