Skip to main content
Glama
hashan-lakshitha

Antigravity Browser Operator

Antigravity Browser Operator โšก

Connects your live Google Chrome browser directly to Antigravity AI Agent (and other MCP clients) without restarting Chrome, bypassing the need for guest profiles or remote debugging flags.

Built with Manifest V3 Chrome Extension (chrome.tabs, chrome.scripting, chrome.debugger) and a local Model Context Protocol (MCP) Server communicating over an authenticated local WebSocket bridge (ws://127.0.0.1:8765).


๐ŸŒŸ How it Works

graph LR
  A["Antigravity AI Agent"] -->|MCP stdio| B["Local MCP Server (Node.js)"]
  B <-->|Authenticated WS ws://127.0.0.1:8765| C["Chrome Extension (Manifest V3)"]
  C <-->|chrome.tabs & scripting API| D["Your Live Chrome (Any Website / Web App)"]

Unlike traditional debugging flags (--remote-debugging-port), this architecture works seamlessly inside your existing Chrome instance with:

  • โœ… No Chrome restarts required

  • โœ… Works across ANY website & web application (Gmail, LinkedIn, GitHub, AWS, ChatGPT, etc.)

  • โœ… All active logins & sessions preserved

  • โœ… Full session cookies & 2FA intact

  • โœ… Instant tab switching, clicking, typing, scrolling, and DOM extraction


Related MCP server: Wbrowser

๐Ÿ”’ Security Architecture

To protect your browser against unauthorized local access and malicious websites, the bridge implements multi-layered security controls:

  1. Cryptographic Token Authentication (Shared Secret):

    • All connections to the local WebSocket bridge require a 256-bit entropy token.

    • Automatically generated and securely stored at ~/.antigravity-browser-operator/token.

    • Unauthenticated or invalid connections are dropped immediately (4001 Unauthorized).

    • Run npm run token to view your security token.

  2. Cross-Site WebSocket Hijacking (CSWSH) Prevention:

    • Web browsers do not enforce Same-Origin Policy on WebSockets by default. To prevent malicious websites visited in your browser from attempting to connect to 127.0.0.1:8765, the bridge inspects the Origin header.

    • Any connection originating from a web page (http:// or https://) is immediately terminated (4003 Forbidden).

    • Only the trusted Chrome Extension origin (chrome-extension://) and local Node.js backend processes are permitted.


๐Ÿš€ Quick Setup (1 Minute)

1. Load the Chrome Extension:

  1. Open Google Chrome and go to chrome://extensions.

  2. Toggle on Developer mode (top right corner).

  3. Click Load unpacked (top left).

  4. Select the extension folder from this project:

    C:\Users\r123t\Documents\www\antigravity-browser-operator\extension
  5. You'll see the โšก Antigravity Browser Operator icon appear in your Chrome toolbar.

2. Pair with Security Token:

  1. Get your security token by running:

    npm run token

    (or copy it from ~/.antigravity-browser-operator/token)

  2. Click the Antigravity Browser Operator icon in Chrome.

  3. Paste the token into the Security Token field and click Save Token.

  4. The status badge will turn green: Connected and Authenticated.


๐Ÿ› ๏ธ MCP Tools Provided

Tool Name

Description

browser_list_tabs

Returns all open tabs across your Chrome windows (ID, title, URL, active state).

browser_select_tab

Focuses / switches to a specific tab by ID.

browser_navigate

Navigates the current tab to any URL and waits for page load.

browser_click

Clicks elements using CSS selectors or visible text.

browser_type

Types into input / text fields with optional Enter keypress.

browser_get_dom

Extracts title, URL, visible text, and HTML snippet.

browser_screenshot

Captures visible screenshot of any tab.

browser_scroll

Scrolls tab up or down smoothly.

browser_evaluate

Executes arbitrary JavaScript inside the page context.

browser_new_tab

Opens a new tab with a given URL.

browser_close_tab

Closes any specific tab.


๐Ÿ“„ License

MIT ยฉ Hashan Walauwatta

Available Tools

11 tools
browser_clickC

Clicks an element on the active or specified tab using a CSS selector or visible text.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoVisible text inside element to click.
tabIdNoOptional tab ID.
selectorNoCSS selector of element to click.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It does not disclose what happens after a click (navigation, form submission, errors), whether the tool waits for the element, or any side effects or permissions required. Only the input mechanism is described.

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 zero filler. Every word contributes to defining the action and its inputs.

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 action tool with no annotations and no output schema, the description omits critical behavioral context: post-click behavior, error handling, waiting, and return value. It is sufficient to identify the tool but not to invoke it robustly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters. The description adds a light restatement ('CSS selector or visible text') that mirrors the schema but does not extend it with format, priority, or interaction rules between selector and text.

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 (clicks), resource (element), scope (active or specified tab), and input methods (CSS selector or visible text). It is clear enough to distinguish from siblings like browser_type or browser_scroll, though it does not explicitly name alternatives or exclusions.

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 explicit guidance on when to use this tool versus alternatives such as browser_type or browser_evaluate. The phrase 'active or specified tab' hints at context but does not state prerequisites or selection criteria.

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

browser_close_tabB

Closes a specific tab in the userโ€™s Chrome browser by tab ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdYesThe numeric ID of the tab to close.

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the operation but omits important context for a destructive action: whether the tab is permanently removed, what happens to unsaved state, how errors are handled, or whether permissions are required.

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 wasted words. It states the action, target, environment, and mechanism efficiently.

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

Completeness3/5

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

For a simple one-parameter tool with full schema coverage, the description covers the basic operation. However, it omits usage context and any behavioral details, which would be more important given the absence of annotations and output schema.

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

Parameters3/5

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

Schema description coverage is 100%, and the single tabId parameter is already documented in the schema as 'The numeric ID of the tab to close.' The description's phrase 'by tab ID' merely repeats that information, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb and resource: 'Closes a specific tab.' The action 'close' is clearly distinct from sibling operations like browser_list_tabs, browser_select_tab, and browser_new_tab, so an agent can identify the tool's role without opening the schema.

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

Usage Guidelines2/5

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

The description gives no explicit when-to-use or when-not-to-use guidance. It does not mention alternatives such as browser_select_tab or browser_list_tabs, nor does it explain when closing a tab is appropriate versus switching to or listing tabs.

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

browser_evaluateB

Executes arbitrary JavaScript in the context of the active or specified tab and returns the result.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdNoOptional tab ID.
scriptYesJavaScript code to execute.

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It notes that a result is returned, but for an arbitrary-code-execution tool it omits critical traits: that the script can mutate page state, what happens on error/timeout, how results are serialized, and any security or sandbox constraints.

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 waste; the action and scope come first and nothing is padded.

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?

Adequate for a two-parameter tool with full schema coverage and a documented script parameter, but no output schema and no annotations means the risky, error-prone aspects of arbitrary JS execution go undisclosed.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description adds minimal meaning by clarifying that tabId targets the active tab by default and a specified tab otherwise, but offers no syntax or format detail 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?

States a specific verb (executes), resource (arbitrary JavaScript), and scope (context of the active or specified tab), plus the return behavior. This clearly distinguishes it from sibling interaction tools like browser_get_dom, browser_click, and browser_type.

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 never says when to use this tool versus alternatives such as browser_get_dom for DOM extraction or browser_click for interaction. No prerequisites, exclusions, or routing guidance are provided.

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

browser_get_domB

Extracts the page title, URL, visible text content, and HTML snippet of the specified or active tab.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdNoOptional tab ID.

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden, and it does disclose that four distinct pieces of data are returned. However, it omits whether the HTML snippet is truncated, how large the text extraction can be, and any permission/context requirements โ€” all relevant for a no-annotation read 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?

A single front-loaded sentence that names the verb and the returned payload with zero filler; every clause 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 simple no-annotation read tool with no output schema, telling the agent the four return fields is the minimum viable content. It nonetheless leaves open the size/truncation behavior of the HTML snippet and how it differs from browser_evaluate, so it is adequate but not fully complete.

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

Parameters4/5

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

Schema coverage is 100% so the baseline is 3, but the description adds real value by explaining that the tab defaults to the active tab when no tabId is given โ€” something the schema's terse "Optional tab ID" does not convey.

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 ("Extracts") and enumerates the resources returned (page title, URL, visible text content, HTML snippet), so the agent knows exactly what it gets. It does not, however, distinguish itself from the sibling browser_evaluate, which can also retrieve DOM content, leaving a meaningful ambiguity unresolved.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no when-not-to-use, and no mention of alternatives even though browser_evaluate overlaps heavily with this tool. The phrase "specified or active tab" describes the parameter, not the usage context.

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

browser_list_tabsA

Lists all open tabs in the userโ€™s live Chrome browser with tab ID, title, URL, and active status.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses the source (a live Chrome browser) and the returned fields (tab ID, title, URL, active status), but says nothing about permissions, whether the browser must be running, or state freshness/latency. Adequate but not rich behavioral context.

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

Conciseness5/5

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

A single front-loaded sentence with no waste. Every clause (live Chrome browser, the four returned fields) earns its place.

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

Completeness4/5

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

For a zero-parameter, no-output-schema read tool, the description compensates by enumerating the return fields an agent needs, which is the main gap absent an output schema. It lacks only minor behavioral preamble such as prerequisites, keeping it just shy of complete.

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 takes zero parameters, so by rule the baseline is 4. There is nothing for the description to clarify on the input side.

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 ("Lists") and resource ("all open tabs in the user's live Chrome browser"), immediately distinguishing it from action siblings like browser_select_tab, browser_new_tab, and browser_close_tab. It does not name any sibling explicitly, so it stops short of a 5.

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

Usage Guidelines3/5

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

There is no explicit when-to-use or when-not-to-use guidance, but the usage is strongly implied: this is the natural discovery/enumeration step before selecting or closing a tab. No alternative is named or condition given, so it remains implied 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_navigateA

Navigates the specified or active tab in the userโ€™s Chrome browser to a URL and waits for page load.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to navigate to.
tabIdNoOptional tab ID. If omitted, navigates the active tab.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does add one useful trait: it 'waits for page load,' which tells the agent the call is blocking. However, it omits failure behavior (invalid URL, no matching tab), whether it can navigate to non-http schemes, and any permission/extension context.

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

Conciseness5/5

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

A single sentence that front-loads the verb and target and includes the one behavioral detail that matters (waiting for load). Nothing is wasted.

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 two-parameter tool with a fully documented schema and no output schema, the description covers the essentials and the blocking behavior. Only error/failure handling is unaddressed, a minor gap given the tool's simplicity.

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

Parameters3/5

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

Schema description coverage is 100%, so both url and tabId are already documented in the schema. The description's 'specified or active tab' only restates the schema's 'If omitted, navigates the active tab,' adding no format or syntax detail beyond it. Baseline 3 is appropriate.

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

Purpose4/5

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

The description gives a specific verb (navigates) plus resource (a tab in the user's Chrome browser) and the target (a URL), which clearly separates it from siblings like browser_new_tab, browser_click, or browser_evaluate. It does not, however, explicitly contrast itself with those siblings, so it stops short of a 5.

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

Usage Guidelines3/5

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

Usage is only implied โ€” the phrase 'specified or active tab' suggests it acts on an existing tab, but the description never says when to prefer this over browser_new_tab or how it relates to browser_select_tab. No exclusions or alternatives are named.

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

browser_new_tabB

Opens a new tab in the userโ€™s Chrome browser with a specified URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to open.

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 behavioral burden, and it discloses little beyond the action itself. It does not say whether the new tab becomes focused/active, whether a browser session must already be running, or what happens on an invalid URL โ€” all relevant for a browser-mutating 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?

A single, front-loaded sentence with no filler; the action and target are stated immediately.

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 a fully documented schema and no output schema, the description is minimally sufficient. It nonetheless omits tab-activation/focus behavior and failure conditions, which an agent would need to use it reliably alongside browser_select_tab.

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

Parameters3/5

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

Schema description coverage is 100% for the single url parameter, so the schema already documents it fully. The description only restates that a URL is supplied and adds no format or constraint details, making the baseline 3 appropriate.

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

Purpose4/5

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

The description gives a specific verb ("Opens") and resource ("a new tab in the user's Chrome browser") plus the required input (a URL), so the action is unambiguous. It does not explicitly contrast itself with the closest sibling browser_navigate, but "new tab" is enough for an agent to distinguish the basic intent.

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 open a new tab versus using browser_navigate on the current tab, or how this relates to browser_select_tab/browser_list_tabs. The condition for choosing this tool over its siblings 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_screenshotA

Captures a visible screenshot of the active or specified tab in Chrome as a data URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdNoOptional tab ID.

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses the return format (a data URL) and the scope limitation implied by "visible" (viewport rather than full page), but says nothing about permissions, whether it is a safe read-only operation, or failure 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?

A single front-loaded sentence with no wasted words; the resource and output format come before any qualifying detail.

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 one-optional-parameter tool with no output schema, the description covers what the tool produces (data URL) and what it targets (active or specified tab). The remaining gap is the unstated distinction between viewport-only capture and any full-page option, plus no mention of error cases.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning the schema lacks: it clarifies that omitting the optional tabId targets the *active* tab rather than being a no-op. That default-target behavior is not expressed anywhere in the schema.

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

Purpose4/5

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

The description names a specific verb and resource ("Captures a visible screenshot ... of the active or specified tab") and states the output form, which clearly separates it from siblings like browser_get_dom or browser_evaluate. It is unambiguous, though it does not explicitly name a contrasting sibling to route against.

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 reach for a screenshot versus alternatives such as browser_get_dom, nor any stated prerequisites. Usage is only implied by the tool name and purpose.

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

browser_scrollC

Scrolls the active or specified tab up or down.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdNoOptional tab ID.
amountNoPixel amount to scroll.
directionNoDirection to scroll.

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden and falls short: it does not state what happens when tabId is omitted, what the default scroll amount or direction is, whether scrolling is smooth or instant, or whether the tab must be focused first. 'Active or specified tab' is the only behavioral hint.

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

Conciseness4/5

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

One short, front-loaded sentence with no filler. It is efficient, though the terseness borders on under-specification rather than tightness.

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

Completeness3/5

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

For a simple three-parameter action tool with no output schema and no required parameters, the description is minimally adequate but omits defaults for the optional amount/direction/tabId, which an agent needs to call it predictably.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters are already documented in the schema; the baseline of 3 applies. The description adds no format, default, or unit detail beyond what the schema states.

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 ('scrolls') and resource ('the active or specified tab') with the axis of motion ('up or down'). No sibling performs scrolling, so differentiation is implicit; only the lack of explicit scope detail (viewport vs. page) keeps it from a 5.

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 offers no when-to-use guidance, no prerequisites, and never references alternatives (e.g., browser_evaluate with scrollIntoView). An agent must infer entirely that this is the tool for viewport movement.

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

browser_select_tabB

Switches to / focuses a specific tab in the userโ€™s Chrome browser by tab ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdYesThe numeric ID of the tab to focus.

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it discloses the core effect (focus/switch to the tab). It omits edge behavior such as what happens if the tab ID is invalid or whether the Chrome window is brought to the foreground. Minimum viable for a simple focus operation, but thin on behavioral depth.

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. The action and its target are stated immediately.

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, the description covers the essential action. However, it gives no indication of error conditions or where the tab ID originates, leaving minor gaps for an agent.

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

Parameters3/5

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

Schema description coverage is 100%, so the single tabId parameter is already fully documented by the schema. The phrase 'by tab ID' reinforces but adds no new meaning. Baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb (switches/focuses), resource (a specific tab), and mechanism (by tab ID). It reads clearly against siblings like browser_new_tab and browser_close_tab, though it never explicitly names 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?

No when-to-use guidance, no prerequisites, and no reference to alternatives. It does not tell the agent that the tab ID must first come from browser_list_tabs, nor when to prefer this over browser_navigate or browser_new_tab.

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

browser_typeC

Types text into an input or textarea element on the active or specified tab.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesText to type.
tabIdNoOptional tab ID.
selectorNoCSS selector of input element.
pressEnterNoWhether to press Enter after typing.

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 burden. It does not say whether typing appends or replaces existing content, whether it dispatches keyboard events or sets the value directly, whether the field must be visible or focused, or what happens if the selector matches nothing. For a state-mutating browser interaction with zero annotation coverage, these are meaningful omissions.

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

Conciseness4/5

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

A single efficient sentence with the action front-loaded and no wasted words. It is appropriately sized for the tool's scope, though it is arguably too terse given the unannotated mutation behavior.

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?

With four parameters, no annotations, and no output schema, the description is minimal but not incomplete for a simple input action. It omits return behavior (success/failure signal) and the semantics of selector matching, which an agent would benefit from knowing. It is adequate but leaves clear gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so both the selector and pressEnter parameters are already documented in the schema, establishing a baseline of 3. The description adds no format or behavioral detail beyond the schema, but it does not need to compensate for a coverage gap.

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

Purpose4/5

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

The description gives a specific verb (types text) and resource (input or textarea element), making the action unambiguous. It implicitly separates itself from siblings like browser_click or browser_evaluate, though it never names those alternatives explicitly. An agent can identify the core function but must infer the boundary cases.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus browser_click, browser_evaluate, or other interaction tools, and no prerequisites (e.g., element must exist or be focused). The phrase 'active or specified tab' hints at the tabId option but provides no guidance on choosing between the two. Usage must be inferred entirely from the name and schema.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 11 tool updatesv1.0.1
    • First observedbrowser_click
    • First observedbrowser_close_tab
    • First observedbrowser_evaluate
    • First observedbrowser_get_dom
    • First observedbrowser_list_tabs
    • First observedbrowser_navigate
    • First observedbrowser_new_tab
    • First observedbrowser_screenshot
    • First observedbrowser_scroll
    • First observedbrowser_select_tab
    • First observedbrowser_type

TDQS

A3.6/5.0

Scored across 11 tools

Disambiguation5/5

Each tool targets a distinct browser action: tab management, navigation, DOM extraction, interaction, screenshots, and JavaScript execution. Although browser_evaluate is a general-purpose escape hatch, its purpose remains clearly separate from the specialized tools.

Naming Consistency5/5

All tools use the same browser_ prefix followed by snake_case action names, such as browser_list_tabs and browser_close_tab. The pattern is predictable and easy to scan.

Tool Count5/5

Eleven tools is well-scoped for a browser automation server. Each tool covers a distinct capability without obvious redundancy or unnecessary bloat.

Completeness4/5

The surface covers core browser automation workflows: tab lifecycle, navigation, DOM inspection, clicking, typing, scrolling, screenshots, and JS evaluation. Minor gaps exist for explicit back/forward/reload navigation or keyboard key presses, but these can often be handled via browser_evaluate or navigation.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to control the Google Chrome browser through a Node.js WebSocket bridge and a dedicated browser extension. It provides tools for capturing screenshots, executing JavaScript, managing tabs, and extracting page content via the MCP protocol.
    2
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI assistants and terminals to control a user's already logged-in Chrome session, allowing them to navigate pages, read content, click and type, run JavaScript, and inspect console or network activity.
    30
    MIT
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to control existing Chrome and Firefox browser sessions locally, including tab management, navigation, form filling, screenshots, and persistent scripts, without remote relays or debugging ports.
    6 npm
    -
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI clients to control the user's already-open, logged-in browser pages in real time over a local WebSocket channel, without Playwright, Puppeteer, Selenium, or any browser driver. Exposes tools for navigation, semantic page snapshots, clicking, form filling, JavaScript evaluation, screenshots, network monitoring, cookie handling, and tab management via the CDP.
    20
    MIT