Antigravity Browser Operator
Automate and inspect your live Google Chrome browser through MCP, preserving existing tabs, logins, and sessions without restarting Chrome.
List tabs with IDs, titles, URLs, and active status; focus, open, close, and navigate tabs.
Extract page titles, URLs, visible text, and HTML/DOM content.
Click elements by CSS selector or visible text, type into inputs or textareas, optionally press Enter, and scroll up or down.
Capture visible-tab screenshots as data URLs.
Execute arbitrary JavaScript in the active or a specified tab and return the result.
Connect securely through a token-authenticated local WebSocket bridge to the Chrome extension.
Connects to a live Google Chrome browser via a Chrome extension and local WebSocket bridge, enabling browser automation: listing, selecting, navigating, clicking, typing, scrolling, extracting DOM, taking screenshots, evaluating JavaScript, and opening/closing tabs across any website while preserving logins and sessions.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Antigravity Browser Operatorlist all my open Chrome tabs and switch to the GitHub one"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Browser Operator β‘
Connects your live Google Chrome browser directly to AI Agents and MCP clients without restarting Chrome, bypassing the need for guest profiles or remote debugging flags.
Built with a 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["AI Agent / MCP Client"] -->|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: agent-chrome
π Security Architecture
To protect your browser against unauthorized local access and malicious websites, the bridge implements multi-layered security controls:
Cryptographic Token Authentication (Shared Secret):
All connections to the local WebSocket bridge require a 256-bit entropy token.
Automatically generated and securely stored at
~/.browser-operator/token.Unauthenticated or invalid connections are dropped immediately (
4001 Unauthorized).Run
npm run tokento view your security token.
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 theOriginheader.Any connection originating from a web page (
http://orhttps://) 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:
Open Google Chrome and go to
chrome://extensions.Toggle on Developer mode (top right corner).
Click Load unpacked (top left).
Select the
extensionfolder from this project:C:\Users\r123t\Documents\www\browser-operator\extensionYou'll see the β‘ Browser Operator icon appear in your Chrome toolbar.
2. Pair with Security Token:
Get your security token by running:
npm run token(or copy it from
~/.browser-operator/token)Click the Browser Operator icon in Chrome.
Paste the token into the Security Token field and click Save Token.
The status badge will turn green: Connected and Authenticated.
π οΈ MCP Tools Provided
Tool Name | Description |
| Lists all Google Chrome user profiles detected on this computer, showing folder names, emails, extension status, and real-time connection state. |
| Launches a specific Google Chrome user profile window directly by name, folder, or email. |
| Returns all open tabs across your Chrome windows (ID, title, URL, active state). |
| Focuses / switches to a specific tab by ID. |
| Navigates the current tab to any URL and waits for page load. |
| Extracts title, URL, visible text, links, and indexed interactive |
| Clicks elements using an indexed |
| Types into input / text fields by |
| Selects an option from a |
| Sets the checked state ( |
| Captures visible screenshot of any tab and saves as a PNG/JPEG image to disk (supports Set-of-Marks |
| Scrolls tab up or down smoothly. |
| Executes arbitrary JavaScript inside the page context. |
| Uploads local files to file inputs autonomously via Chrome DevTools Protocol & DataTransfer without opening OS file picker. |
| Opens a new tab with a given URL. |
| Closes any specific tab. |
π License
MIT Β© Hashan Walauwatta
Available Tools
25 toolsbrowser_batch_actionsA
Executes multiple sequential browser actions (click, type, wait, scroll, select_option, set_checked, navigate) in a single turn without round-trip LLM pauses. Drastically speeds up multi-step tasks, form filling, and searching.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | No | Optional tab ID. | |
| actions | Yes | Array of actions to execute sequentially. Supported types: "click" (ref, selector, text), "type" (ref, selector, text, pressEnter), "wait" (ms), "scroll" (direction, amount), "select_option" (ref, value, text), "set_checked" (ref, checked), "navigate" (url). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden. It does disclose the key trait that actions run sequentially in a single turn without intermediate LLM pauses, which is genuinely useful context beyond the schema. However, it says nothing about failure semantics (does a failing action abort the remaining queue?), whether results are reported per action, or whether implicit waits/timeouts apply β significant omissions for a mutating compound tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the what and immediately followed by the why. The second sentence is somewhat promotional ('Drastically speeds up') but justifies batch usage, so it earns most of its place; only minor trimming is warranted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is moderately complex β a compound executor standing in for seven sibling actions β with two parameters, no annotations, and no output schema. Given that, the definition is adequate on the happy path but incomplete on error handling and return shape, which an agent needs in order to decide whether to batch or fall back to individual calls.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the actions array already documenting every supported type and its fields, so the baseline is 3. The description adds no meaning beyond the schema β it never explains tabId (e.g., whether it defaults to the active tab) or the ordering guarantee for the queue beyond the word 'sequential', which the schema also states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Executes multiple sequential browser actions') and enumerates the supported action types (click, type, wait, scroll, select_option, set_checked, navigate). This clearly distinguishes it from the single-action siblings like browser_click, browser_type, and browser_scroll without requiring the reader to open the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear triggering context β 'multi-step tasks, form filling, and searching' β plus the motivating condition (avoiding round-trip LLM pauses). What is missing is an explicit statement of when to prefer the individual sibling tools over batching, or any exclusion such as not batching actions that depend on page state between steps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_clickC
Clicks an element on the active or specified tab using an indexed ref, CSS selector, or visible text.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | X pixel coordinate to click. | |
| y | No | Y pixel coordinate to click. | |
| ref | No | Indexed reference ID of the element (e.g. "1", "2") assigned by browser_get_dom. | |
| text | No | Visible text inside element to click. | |
| tabId | No | Optional tab ID. | |
| selector | No | CSS selector of element to click. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full behavioral burden and provides almost nothing: it does not say whether the click waits for the element, scrolls it into view, whether the tab must be focused or foregrounded, or what happens when no matching element exists. For a mutation-performing browser action this is a substantial gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the verb and target come first. It is efficient, though the enumeration of locator modes it does include is incomplete relative to the six-parameter schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and zero required parameters, the definition should clarify what happens when no locator is supplied and how the call reports success or failure. None of that is present, leaving the agent to guess at the most failure-prone aspects of a six-parameter click tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all six parameters are already documented, which sets the baseline at 3. The description adds a small amount beyond the schema by implying the three locator strategies (ref, selector, text) are interchangeable targeting options and by noting the tab may be active or specified, though it silently omits the x/y coordinate mode that the schema exposes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Clicks an element') plus scope ('on the active or specified tab'), which clearly separates it from siblings like browser_type, browser_select_option, and browser_scroll. No sibling is named as an alternative, but the action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The sentence lists which locator styles are accepted but gives no guidance on when to prefer one over another, no precedence rule when several are supplied, and no mention of when to use browser_type or browser_select_option instead. An agent must infer everything about selection strategy.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | The numeric ID of the tab to close. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | No | Optional tab ID. | |
| script | Yes | JavaScript code to execute. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It 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.
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.
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.
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.
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.
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_find_recipeA
Searches the agentβs muscle memory for existing recipes on a domain or task. Returns stored action sequences ready to run via browser_batch_actions.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Search keywords describing the desired task (e.g. "upload", "search"). | |
| domain | No | Optional domain to filter recipes (e.g. "facebook.com"). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the return shape at a high level ('stored action sequences') and that results are filtered by domain or task, but says nothing about behavior when no recipe matches, whether this is a pure read, or how many recipes come back.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler: the first defines the search surface, the second defines the return and its downstream consumer. Front-loaded with the action verb and free of hedging.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must characterize returns β it does so by identifying recipes as runnable action sequences for browser_batch_actions. Minor remaining gap: the empty-result case and how to fall back (e.g., learn a new recipe) are unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented with examples. The description only restates the axes ('domain or task') the schema already defines, adding no filtering semantics, defaults, or interaction rules between query and domain.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('searches ... for existing recipes on a domain or task') and names the payload it returns ('stored action sequences'). It also implicitly distinguishes itself from browser_save_recipe by being the retrieval side, though it never names that sibling or browser_get_site_memory.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'ready to run via browser_batch_actions' gives a clear follow-up path, so usage is implied: find a recipe, then batch-run it. However, there is no explicit when-to-use/when-not guidance and no differentiation from the closely related browser_get_site_memory sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_get_console_logsB
Retrieves recent console logs, warnings, runtime errors, and unhandled promise rejections from the page.
| Name | Required | Description | Default |
|---|---|---|---|
| clear | No | Whether to clear the console log buffer after reading (default: false). | |
| tabId | No | Optional tab ID. | |
| types | No | Filter logs by type (default: returns all types). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that unhandled promise rejections are captured (beyond plain console output), but says nothing about the bounded nature of "recent" (buffer size or retention), that the read is non-destructive unless `clear` is set, or what targeting happens when no tabId is supplied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the enumeration of captured categories is the most valuable information and appears immediately after the verb. Nothing would be gained by trimming it further.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter read tool with no output schema and no annotations, the description covers what is captured but not what an entry looks like or how many are returned. An agent can call it correctly but cannot predict the response shape or the buffer limit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so `clear`, `tabId`, and `types` are already documented in the schema; the baseline of 3 applies. The description adds only the vague notion of "recent" and nothing about type filtering semantics or which tab is defaulted to.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Retrieves recent console logs") and enumerates the captured categories β warnings, runtime errors, unhandled promise rejections β which tells an agent exactly what data this surfaces. It never names the closest sibling (browser_get_network_logs), so differentiation relies on the tool name rather than the description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites such as being attached to a tab, and no routing to alternatives like browser_get_network_logs or browser_evaluate. Usage is only inferable from the word "console," which is the same level of guidance a bare name provides.
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, token-dense compact DOM representation, indexed interactive elements with refs, and clean text of the tab.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | No | Optional tab ID. | |
| includeLinks | No | Whether to include standalone links array (defaults to false as elements already index links). | |
| maxTextLength | No | Maximum characters of body text to extract (defaults to 3000 to save tokens). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It implies a read-only extraction but never says so, and it omits how the tab is resolved when tabId is absent, what happens if the tab is closed or still loading, and how the text truncation interacts with the returned DOM.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; every clause names a distinct output artifact. It is dense but readable, and nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the necessary work of enumerating the return payload, which is the main thing an agent needs here. Only the default-tab resolution and failure modes remain unstated, which are secondary for a three-optional-parameter read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all three parameters are already documented, including the token-saving default of 3000 characters. The description's phrase "token-dense compact DOM" reinforces the token-economy rationale but adds 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Extracts") and enumerates the exact artifacts returned: page title, URL, compact DOM, indexed interactive elements with refs, and clean text. An agent can distinguish this read/inspection tool from siblings like browser_screenshot or browser_evaluate, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, and no mention of the natural pairing with browser_click via the returned refs. The agent must infer that this is the discovery step before interaction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_get_network_logsA
Retrieves recent network activity (Fetch, XHR, resource requests, status codes, failed requests, and response times).
| Name | Required | Description | Default |
|---|---|---|---|
| clear | No | Whether to clear the network log buffer after reading (default: false). | |
| limit | No | Maximum number of requests to return (default: 50). | |
| tabId | No | Optional tab ID. | |
| failedOnly | No | When true, returns only failed HTTP requests (status 4xx, 5xx, or network errors). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It does convey the read-only retrieval nature and the word 'recent' hints at a bounded buffer, but it says nothing about the capture window, whether logs are per-tab or global, whether they accumulate across navigations, or what happens when the buffer is empty or the tab ID is unknown.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence: verb, resource, then a parenthetical inventory of the returned fields. No filler, no restatement of the tool name, and the enumerations earn their place by telling the agent what evidence is available.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully compensates by enumerating the returned data fields (status codes, failed requests, response times), and the schema fully documents the four parameters. What is missing is operational context β when to prefer it over console logs and how the log buffer behaves β which keeps it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% β every parameter (clear, limit, tabId, failedOnly) has an inline description covering default and semantics. The description adds no parameter detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (retrieves network activity) and enumerates exactly what kinds of entries come back (Fetch, XHR, resource requests, status codes, failures, timings), so an agent knows this is the network-log reader and not the console-log reader. It does not explicitly name the nearest sibling, browser_get_console_logs, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the resource name: an agent can infer 'call this when debugging network traffic or failed requests.' There is no explicit when-to-use statement, no mention of the alternative (browser_get_console_logs or browser_evaluate), and no note about preconditions such as the tab needing to exist or traffic needing to have occurred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_get_site_memoryA
Retrieves all learned knowledge, known quirks, and saved recipes for a specific domain or the active tab.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | No | Optional tab ID to extract domain from active tab. | |
| domain | No | Website domain or URL to inspect memory for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden: "Retrieves" establishes this is a non-mutating read, and it names the categories of content returned. It does not disclose what happens when no memory exists for a domain, whether results are capped, or how the knowledge is structured, which matters because there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the verb and scope, with zero filler. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-optional-parameter read tool with no annotations and no output schema, the description covers purpose and selector choice but leaves the return shape and empty-state behavior unexplained. Adequate, but an agent cannot predict what it will receive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented; the phrase "a specific domain or the active tab" adds the useful signal that the two parameters are alternative selectors rather than cumulative. Beyond that it adds no format or precedence detail, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Uses a specific verb ("Retrieves") and enumerates the resource concretely: learned knowledge, known quirks, and saved recipes for a domain. It is clearly distinct from write-side siblings like browser_learn_site_quirk and browser_save_recipe, but it never names or contrasts itself with browser_find_recipe, which is the closest read-side alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"for a specific domain or the active tab" implies the two ways to invoke it, but there is no explicit guidance on when to use this tool versus browser_find_recipe or when to prefer domain over tabId. Usage is inferable 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_handle_dialogA
Handles, accepts, or dismisses browser native JavaScript modal dialogs (alerts, confirms, prompts, and "Leave site?" beforeunload dialogs) using Chrome DevTools Protocol.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | No | Target tab ID (optional, defaults to active tab). | |
| accept | No | Whether to accept (click Leave/OK/Yes) or dismiss (click Cancel/No). Defaults to true. | |
| promptText | No | Optional prompt text to enter into the dialog. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description must carry the behavioral load, and it does disclose the accept-vs-dismiss semantics and that prompt text can be entered. However it omits operationally important behavior: what happens if no dialog is open (error vs no-op), whether unhandled dialogs block subsequent commands, and any timing/wait requirement. Those gaps matter for a tool whose whole purpose is unblocking a page.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb and dialog taxonomy up front and zero redundancy. The trailing 'using Chrome DevTools Protocol' is implementation detail that adds little for the selecting agent, keeping it just short of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-optional-parameter, no-output-schema tool, the description covers what the tool acts on and how accept/dismiss work, which is close to sufficient. What is missing is the failure/precondition story β whether it errors when no dialog exists and whether dialogs block other browser commands β which is the main thing an agent needs to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (tabId, accept, promptText) are already fully documented in the schema, including defaults. The description adds no meaning beyond that baseline β it does not, for example, clarify that promptText is ignored for alert/confirm dialogs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb set (handles/accepts/dismisses) and a precisely bounded resource: native JavaScript modal dialogs, with the four concrete types enumerated (alert, confirm, prompt, beforeunload). No sibling tool touches native dialogs, so an agent can route here unambiguously.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied β an agent must infer that this is the tool to call when a dialog is blocking the page. There is no explicit 'call this when you see an alert/confirm' trigger, no mention of what to do instead if no dialog is present, and no guidance on sequencing relative to browser_click or browser_navigate, which are the actions that typically spawn dialogs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_launch_profileA
Launches a specific Google Chrome user profile window directly by name, folder directory (e.g. "Profile 13", "Default"), or email, optionally navigating to an initial URL. Bypasses the Chrome profile picker dialog entirely.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Optional initial URL to open in the newly launched Chrome profile window. | |
| profile | Yes | The profile name (e.g. "Work", "Hashan", "Clean"), folder name ("Profile 13", "Default"), or user email ("hashanwalawwatta@gmail.com"). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the behavioral burden by itself. It does disclose a non-obvious trait β that it skips the profile picker and opens the window directly β and accepts three identifier forms. It omits what happens when the profile name does not match, whether Chrome must already be installed/running, and what the caller receives back (no output schema exists to answer that).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the action and followed by the picker-bypass detail; nothing is filler. Slightly redundant in re-listing the identifier forms that the schema already states.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter launch tool with no annotations and no output schema, the description covers action, input forms, and the optional URL case adequately. The main residual gap is return value/error behavior when the profile is not found or the launch fails.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are already documented in the schema, including the three accepted profile identifier forms (name, folder like "Profile 13", email). The description restates the same forms rather than adding new semantics such as case sensitivity or match precedence when a name and folder collide, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Uses a specific verb+resource ("Launches a ... Google Chrome user profile window") and even states the exact mechanism being bypassed ("Bypasses the Chrome profile picker dialog entirely"). It does not explicitly name the sibling it is distinct from β browser_list_profiles, the obvious discovery counterpart β so the differentiation is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the use case reasonably clear: open a new Chrome window already loaded in a named profile. However, it gives no explicit guidance on when to prefer this over browser_new_tab/browser_navigate, and no note that browser_list_profiles should be called first to discover valid profile identifiers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_learn_site_quirkB
Records a site-specific quirk, pitfall, selector tip, or bypass rule into the long-term knowledge library.
| Name | Required | Description | Default |
|---|---|---|---|
| quirk | Yes | The observed quirk or behavior (e.g. "Search box uses div[role=textbox] not input"). | |
| advice | No | Recommended solution or strategy for future agents. | |
| domain | Yes | Website domain (e.g. "facebook.com", "youtube.com"). | |
| category | No | Category of quirk. | |
| selector | No | Optional reliable CSS selector. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden, and it only conveys durability ('long-term knowledge library'). It says nothing about whether entries are deduplicated or overwritten, whether a domain/session must be active, whether the write is idempotent, or what confirmation comes back. For a persistence/write tool with zero annotation coverage, that is a meaningful gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb and resource up front and no filler. It is slightly redundant in re-enumerating quirk types that the schema's enum and property descriptions already cover, but the wording is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With five fully documented parameters and no output schema, the description only needs to add behavior, not return values. It leaves idempotency, duplicate handling, and retrieval expectations unstated, which matters for a knowledge-library write tool that pairs with browser_get_site_memory.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with examples and an enum for category, so the schema already carries the parameter meaning. The description adds no syntax, format, or prioritization guidance (e.g., how specific 'domain' should be, when to supply 'advice' vs 'selector') beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Records') and names the resource precisely ('site-specific quirk, pitfall, selector tip, or bypass rule') as well as the destination ('long-term knowledge library'). It is clearly distinguishable from read-side siblings like browser_get_site_memory and from browser_save_recipe, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer it should call this after discovering a site-specific pitfall, but the description never states when to use this versus browser_save_recipe or browser_get_site_memory. No exclusions, prerequisites, or 'do not use for X' guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_list_profilesB
Lists all Google Chrome user profiles detected on this computer (e.g. Personal, Work, Clean, Hashan), showing profile folder names ("Default", "Profile 13"), profile display names, emails, whether the Browser Operator extension is installed, and real-time WebSocket connection status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It helpfully discloses the output fields including profile names, emails, extension presence, and real-time WebSocket status, which is valuable for a zero-parameter list tool. However, it does not explicitly state that the operation is read-only, whether it has any side effects, or what permissions or prerequisites 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence that clearly states the action before enumerating returned details. It is dense but every clause appears to serve the purpose of describing return values, though the parenthetical examples add some length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple zero-parameter listing tool with no output schema and no annotations, the description provides substantial detail about what information is returned. It could be more complete by clarifying prerequisites such as Chrome running or extension requirements, but it is largely sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is no parameter semantics to explain. The baseline score for a zero-parameter tool is 4, and the description appropriately does not discuss parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Lists' and clearly identifies the resource as all Google Chrome user profiles detected on this computer. It details the returned fields, making the purpose understandable without opening the schema. However, it does not explicitly distinguish itself from related sibling tools such as browser_launch_profile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives like browser_launch_profile. The use case is implied by the description of listing profiles, but no conditions, exclusions, or alternative recommendations are provided.
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 across all active Chrome windows and profiles, returning tab ID, title, URL, active status, and profile name.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden. 'Lists' implies a non-destructive read and the enumerated return fields help, but it doesn't state that it is read-only, whether a browser/profile must already be running, tab ordering, or whether background/minimized tabs are included.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the scope up front and the return payload at the end; no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read tool with no output schema, describing the returned fields (tab ID, title, URL, active status, profile name) covers the main gap an agent would have. Only the preconditions for calling it, such as requiring a launched profile, are left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4 and there is nothing for the description to clarify. It correctly avoids inventing parameter behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Lists all open tabs') plus scope ('across all active Chrome windows and profiles') and even enumerates the returned fields. It is clearly distinguishable from browser_list_profiles and browser_select_tab without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the discovery step before select/close/navigate, but the description never says when to use it versus browser_list_profiles or how it relates to browser_select_tab. No exclusions or prerequisites are stated.
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, optionally in a designated profile.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL to open. | |
| profile | No | Optional profile name or folder (e.g. "Work", "Clean") to open this tab in. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden, and it discloses little beyond the basic action. It does not say whether a browser session must already be running, whether the named profile must first be launched via browser_launch_profile, whether the new tab becomes the active tab, or how failures (bad URL, unknown profile) are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence with the action front-loaded and no filler. It could be marginally improved by appending the key alternative or prerequisite, but nothing in it is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (2 params, full schema coverage, no output schema), so the description need not explain return values. However, for a browser-automation tool with no annotations, the missing prerequisites (existing session, profile availability, tab activation) are real gaps an agent would want covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented, including the profile examples ('Work', 'Clean'). The description's phrase 'optionally in a designated profile' simply restates the schema without adding format, defaulting, or validation semantics, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource β 'Opens a new tab in the user's Chrome browser' β plus the scope of a URL and optional profile. It is clear what the tool does, but it never distinguishes itself from close siblings like browser_navigate (navigate existing tab) or browser_launch_profile, so the agent must infer which one to reach for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the word 'new' suggests using this instead of navigating the current tab, and 'optionally in a designated profile' hints at multi-profile scenarios. There is no explicit when-to-use or when-not-to-use statement and no mention of browser_navigate or browser_launch_profile as alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_save_recipeA
Saves a successful multi-step workflow/macro into the agentβs muscle memory. Stored recipes can be recalled and executed in seconds for repetitive site tasks.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Unique identifier name for this workflow (e.g. "search_daraz_item", "upload_facebook_reel"). | |
| notes | No | Optional tips or timing notes. | |
| domain | Yes | Domain name for this recipe (e.g. "facebook.com", "google.com"). | |
| actions | Yes | Array of batch actions (click, type, wait, scroll, select_option, set_checked) that form the recipe. | |
| description | No | What this recipe accomplishes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full load. It usefully discloses that the write is persistent and later retrievable ('recalled and executed in seconds'), which is real behavioral context beyond the schema. However it is silent on the important mutation traits: what happens if a recipe with the same name already exists (overwrite vs. error), where the recipe is stored, and whether it is scoped per profile or globally.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero redundancy, front-loading the core action before the value proposition. Nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter persistent-write tool with no annotations and no output schema, the description covers the what and why but omits the operational details an agent needs: name-collision behavior, storage scope, and what is returned on save. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter including nested action semantics is already documented in the schema (name, domain, actions, notes, description). The description adds no further meaning to individual parameters, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: it saves a multi-step workflow/macro as a persistent 'recipe'. The framing as 'muscle memory' and the note that recipes are recalled later makes the write-side role clear against the sibling browser_find_recipe, which is the read side. It stops short of naming that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for repetitive site tasks' implies when to use it, but there is no explicit guidance such as 'use after browser_batch_actions succeeds' or 'use browser_find_recipe to recall'. No exclusions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_screenshotB
Captures a visible screenshot of the active or specified tab in Chrome and saves it as an image on disk.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | No | Optional tab ID. | |
| format | No | Image format (defaults to "jpeg" for fast lightweight transfer). | |
| quality | No | Compression quality 1-100 (defaults to 80 for jpeg). | |
| annotate | No | When true, paints visual Set-of-Marks (SoM) numbered badges matching element refs directly onto the screenshot before capturing, perfect for multimodal visual reasoning. | |
| savePath | No | Optional file path to save the image. If omitted, saves to project screenshots folder. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose two useful traits: the capture is 'visible' (viewport-limited, not full-page) and it writes a file to disk. It omits what is returned (file path vs. image payload), overwrite behavior on savePath collisions, and failure modes for an invalid tabId.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that identifies the action, target, and persistence behavior with no filler. Nothing in it is redundant or out of order.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Five all-optional parameters and no output schema mean the description should clarify what the caller gets back and whether the write is safe to repeat; neither is addressed. The stated purpose and disk-write disclosure make it viable, but not complete for a tool that mutates the filesystem.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters including format, quality, annotate, and savePath defaults are already documented in the schema. The only added meaning is the 'active or specified tab' phrasing, which implicitly explains what happens when tabId is omitted; that is a marginal contribution over structured data.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (captures) and resource (screenshot of a tab in Chrome), plus scope ('active or specified tab') and the side effect (saves as an image on disk). It does not explicitly contrast with any sibling, but no sibling overlaps in function, so an agent can place it accurately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states what it does but never says when to reach for it versus alternatives such as browser_get_dom or browser_evaluate for page inspection, nor any conditions or exclusions. The only implied usage cue is 'active or specified tab', which is about targeting, not tool selection.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | No | Optional tab ID. | |
| amount | No | Pixel amount to scroll. | |
| direction | No | Direction to scroll. |
TDQS
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.
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.
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.
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.
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.
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_optionB
Selects an option from a dropdown or listbox on the active or specified tab.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | Indexed reference ID of the select element. | |
| text | No | Visible label text of the option to select. | |
| tabId | No | Optional tab ID. | |
| value | No | Value of the option to select. | |
| selector | No | CSS selector of the select element. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden, yet it only states the target ('active or specified tab'). It says nothing about whether the action waits for the element, fires change events, handles disabled or multi-select options, or what happens on failure. For a UI-mutating browser automation tool with zero annotation coverage, this is a substantial gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the resource and target scope appear immediately. Nothing could be trimmed without losing content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With five optional parameters, no annotations, and no output schema, the description leaves the key calling ambiguity unresolved: whether to identify the element by ref or CSS selector and whether to select by visible text or value. It is minimally viable but not complete for an agent that must choose among these combinations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already documented, which sets the baseline at 3. The description's 'active or specified tab' merely restates that tabId is optional and adds nothing about how ref vs. selector or text vs. value should be chosen when zero parameters are required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb ('Selects') and resource ('an option from a <select> dropdown or listbox'), which is enough to distinguish it from browser_click or browser_set_checked. It doesn't explicitly say how it differs from those siblings, keeping it 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase '<select> dropdown or listbox' implicitly scopes usage to native select elements, implying browser_click for custom widgets, but this is left for the agent to infer. There is no explicit when-not guidance or named alternative, so usage is only implied.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | The numeric ID of the tab to focus. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it 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.
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.
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.
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.
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.
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_set_checkedB
Sets the checked state of a checkbox, radio button, or switch toggle.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | Indexed reference ID of the checkbox/radio element. | |
| tabId | No | Optional tab ID. | |
| checked | No | Desired checked state (true or false). Default is true. | |
| selector | No | CSS selector of the checkbox/radio element. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full transparency burden, but it discloses almost no behavior. It does not say whether events such as change/input are dispatched, what happens if the element is already in the requested state, whether setting checked=false on a radio button is a no-op or discards the group selection, or how errors are surfaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler; every word contributes to identifying the resource and the types of widgets affected.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The parameter surface is small and fully described by the schema, so the definition is close to callable. However, with no annotations and no output schema, the missing behavioral detail about event dispatch, radio semantics, and return value leaves real gaps for a multi-parameter mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both the ref and selector targeting options and the checked default of true are already documented in the schema. The description adds nothing about precedence between ref and selector when both are given, or about the optional tabId. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Sets') with a specific resource and enumerates the affected widget types: checkbox, radio button, and switch toggle. An agent can immediately tell this mutates form-control state. It stops short of a 5 because it does not say how it differs from the nearby browser_click or browser_select_option siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no statement of when to prefer this over browser_click on a checkbox or over browser_select_option, and no prerequisites such as whether the element must be visible or in the current tab. The agent must infer the routing decision entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_typeC
Types text into an input or textarea element on the active or specified tab.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | Indexed reference ID of the input element (e.g. "1", "2") assigned by browser_get_dom. | |
| text | Yes | Text to type. | |
| tabId | No | Optional tab ID. | |
| selector | No | CSS selector of input element. | |
| pressEnter | No | Whether to press Enter after typing. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden of behavioral disclosure and does not meet it. It never states whether typing replaces or appends to existing content, whether the element is focused first, or what happens if the element is missing or not editable β all material for a mutation-style action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words. It is efficient, though the terseness borders on under-specification given the tool's five parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter interaction tool with no annotations and no output schema, the description is thin. It omits target-selection precedence, the browser_get_dom prerequisite for refs, and any failure behavior, leaving the agent to infer how to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each of the five parameters (ref, text, tabId, selector, pressEnter) is already documented in the schema. The description adds no extra meaning, such as whether ref and selector are mutually exclusive or which takes precedence β the baseline 3 is appropriate here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Types') and resource ('text into an input or textarea element'), which distinguishes it from siblings like browser_click, browser_set_checked, and browser_select_option. It does not, however, clarify how the target is chosen (ref vs selector) or how it relates to browser_get_dom, which produces the refs it consumes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance and no mention of alternatives or prerequisites. Critically, an agent is not told that a ref must typically first be obtained via browser_get_dom, nor when to prefer ref over selector.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_upload_fileB
Uploads a local file to a file input on the active or specified tab completely autonomously without opening OS file picker.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | Optional indexed reference ID from browser_get_dom. | |
| tabId | No | Optional tab ID. | |
| filePath | Yes | Absolute local file path to upload (e.g. D:\facebook-ai-agent\assets\cover.jpg). | |
| selector | No | Optional CSS selector of the file input (defaults to input[type="file"]). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that no OS file picker is opened and the upload is autonomous, but omits failure behavior, whether it dispatches change/input events (critical for JS frameworks), and permission or path-validation constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the core behavior stated first. 'Completely autonomously without opening OS file picker' is slightly redundant phrasing but every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter automation tool with no annotations and no output schema, the description covers the headline behavior but leaves out what an agent needs to recover from failure or to know how the upload is injected. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all four parameters thoroughly, including examples and defaults. The description only echoes the tab scoping and file-input target, adding no syntax or precedence detail beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Uploads a local file to a file input') with clear scope ('active or specified tab'), which distinguishes it from generic input tools like browser_type and browser_click. It does not name any sibling explicitly, so it falls 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent infers it should be used when a page has a file input. There is no guidance on when to prefer this over browser_click on a picker button, no note on ref vs selector vs tabId precedence, and no stated preconditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_wait_forB
Waits for an element to appear, become visible, clickable, hidden, or waits for network idle (pending API requests to finish).
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | Indexed reference ID of the element to wait for. | |
| text | No | Visible text content of the element to wait for. | |
| state | No | Condition state to wait for (default: "visible"). Use "network_idle" to wait until background API/fetch requests settle. | |
| tabId | No | Optional tab ID. | |
| timeout | No | Maximum milliseconds to wait (default: 10000ms). | |
| selector | No | CSS selector of the element to wait for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries full behavioral burden. It does disclose the wait semantics and that network idle means pending API/fetch requests finish, but it never states what happens on timeout (throw, return false, silent success), whether the call blocks the agent, or whether selecting among ref/selector/text changes behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the condition list is packed efficiently into one clause. It is slightly awkward syntactically ('or waits for network idle' breaks the parallel structure of the state list), but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Six optional parameters, no annotations, and no output schema mean the description is the only place to explain failure behavior and how the mutually exclusive element locators (ref vs selector vs text) interact. It explains the conditions but not the outcome of a failed wait, which is the main thing an agent needs to handle.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents ref, text, state, tabId, timeout, and selector, making 3 the baseline. The description's only added meaning, the parenthetical about pending API/fetch requests, is already present in the schema's own enum description, so nothing new is contributed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (waits for) and a specific resource (an element) plus the network-idle mode, which clearly distinguishes it from action siblings like browser_click or browser_get_dom. The one gap: 'appear' is not one of the enumerated states in the schema, so the purpose is slightly looser than the schema allows, and no sibling is named for contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance, no mention of what to do instead of this tool (e.g., polling, browser_evaluate), and no statement of prerequisites such as a tab/context existing or a prior browser_navigate. Usage is only weakly implied by the list of states.
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.
20 tool updates
v1.4.0- Added
browser_batch_actions - Changed
browser_click3 fields changed- added
Input schema / properties / refAdded value: +{ + "description": "Indexed reference ID of the element (e.g. \"1\", \"2\") assigned by browser_get_dom.", + "type": "string" +} - added
Input schema / properties / xAdded value: +{ + "description": "X pixel coordinate to click.", + "type": "number" +} - added
Input schema / properties / yAdded value: +{ + "description": "Y pixel coordinate to click.", + "type": "number" +}
- Added
browser_find_recipe - Added
browser_get_console_logs - Changed
browser_get_dom2 fields changed- added
Input schema / properties / includeLinksAdded value: +{ + "description": "Whether to include standalone links array (defaults to false as elements already index links).", + "type": "boolean" +} - added
Input schema / properties / maxTextLengthAdded value: +{ + "description": "Maximum characters of body text to extract (defaults to 3000 to save tokens).", + "type": "number" +}
- Added
browser_get_network_logs - Added
browser_get_site_memory - Added
browser_handle_dialog - Added
browser_launch_profile - Added
browser_learn_site_quirk - Added
browser_list_profiles - Changed
browser_navigate1 field changed- added
Input schema / properties / waitUntilAdded value: +{ + "description": "Wait condition: \"interactive\" (default, fast - resolves as soon as DOM is ready) or \"complete\" (waits for all background ads/trackers).", + "enum": [ + "interactive", + "complete" + ], + "type": "string" +}
- Changed
browser_new_tab1 field changed- added
Input schema / properties / profileAdded value: +{ + "description": "Optional profile name or folder (e.g. \"Work\", \"Clean\") to open this tab in.", + "type": "string" +}
- Added
browser_save_recipe - Changed
browser_screenshot4 fields changed- added
Input schema / properties / annotateAdded value: +{ + "description": "When true, paints visual Set-of-Marks (SoM) numbered badges matching element refs directly onto the screenshot before capturing, perfect for multimodal visual reasoning.", + "type": "boolean" +} - added
Input schema / properties / formatAdded value: +{ + "description": "Image format (defaults to \"jpeg\" for fast lightweight transfer).", + "enum": [ + "jpeg", + "png" + ], + "type": "string" +} - added
Input schema / properties / qualityAdded value: +{ + "description": "Compression quality 1-100 (defaults to 80 for jpeg).", + "type": "number" +} - added
Input schema / properties / savePathAdded value: +{ + "description": "Optional file path to save the image. If omitted, saves to project screenshots folder.", + "type": "string" +}
- Added
browser_select_option - Added
browser_set_checked - Changed
browser_type1 field changed- added
Input schema / properties / refAdded value: +{ + "description": "Indexed reference ID of the input element (e.g. \"1\", \"2\") assigned by browser_get_dom.", + "type": "string" +}
- Added
browser_upload_file - Added
browser_wait_for
11 tool updates
v1.0.1- First observed
browser_click - First observed
browser_close_tab - First observed
browser_evaluate - First observed
browser_get_dom - First observed
browser_list_tabs - First observed
browser_navigate - First observed
browser_new_tab - First observed
browser_screenshot - First observed
browser_scroll - First observed
browser_select_tab - First observed
browser_type
TDQS
Scored across 25 tools
Most tools map to a single distinct browser action (click, type, scroll, navigate, screenshot), so selection is usually unambiguous. The main fuzziness is in the memory group β save_recipe, learn_site_quirk, find_recipe, and get_site_memory overlap in that all store/retrieve per-domain knowledge β and batch_actions partially duplicates the granular action tools, though descriptions clarify the distinction.
Every tool carries the `browser_` prefix and uses snake_case, giving a predictable namespace. Minor deviations exist where the second token is a noun rather than a verb (browser_new_tab, browser_batch_actions), but overall the verb_noun pattern holds well.
At 25 tools this sits at the heavy end of the scale for a browser automation server. Core actions are justified, but the recipe/quirks/memory trio plus logs, profiles, and dialogs push the surface beyond a tight, well-earned set.
Coverage is broad: navigation, tab lifecycle, profiles, interaction, dialogs, uploads, screenshots, DOM extraction, JS eval, and diagnostics. Gaps remain for keyboard key presses (Enter/Tab/Escape), hover and drag-and-drop, history back/forward, and iframe traversal, which agents will hit on real sites.
Maintenance
Related MCP Connectors
Give AI agents a real cloud Chrome: open sessions, navigate, read pages, click, type and screenshot.
Control a real browser from AI agents: navigate, click, type, screenshot, read the page.
Let AI agents use your real, signed-in Chrome: tabs, clicks, forms, screenshots and video.
Connect AI agents to your own Chrome with scoped access, approvals, and verified task results.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to control a user's existing Chrome browser with preserved logins, performing tab management, element interaction, script execution, and screenshots, all locally via a Chrome extension and Python bridge.2MIT
- AlicenseNot gradedqualityCmaintenanceLets local AI agents drive the Chrome browser a user already has open, including signed-in sessions, by listing tabs, reading page text and actionable elements, then clicking, filling, selecting, scrolling, navigating, and capturing viewport screenshots without exporting cookies. Runs as a dependency-free local stdio process over Native Messaging, with per-tab leases, automatic reconnection, and pause/write-action controls.MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to drive the user's real, already-logged-in Chrome browser locally, so they can read and navigate pages, click, type, fill forms, take screenshots, and inspect cookies, tabs, console, and network traffic without headless browsers or remote-debugging ports.1 npmISC
- AlicenseNot gradedqualityAmaintenanceLets AI coding tools drive the real, already-logged-in Chrome browser over local stdioβsnapshotting and reading pages, clicking, typing, managing tabs, capturing screenshots, and inspecting network, console, storage, and cookiesβwithout opening a remote-debugging port. It installs as a Chrome extension plus native-messaging bridge, so agents work in the user's authenticated sessions while passing bot detection.1 npmISC