BrowserLemon
Allows posting social content to Bluesky and other supported platforms after user confirmation, with explicit approval flow.
Allows posting social content to Facebook and other supported platforms after user confirmation, with explicit approval flow.
Allows posting social content to Instagram and other supported platforms after user confirmation, with explicit approval flow.
Allows posting social content to Mastodon.social and other supported platforms after user confirmation, with explicit approval flow.
Allows posting social content to Threads and other supported platforms after user confirmation, with explicit approval flow.
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., "@BrowserLemonDraft a LinkedIn post about our product update and show it to me for approval."
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.
BrowserLemon π
An open-source browser bridge that lets AI control your local Chrome's current logged-in session via MCP. It focuses on social media draft creation and publish flows after user approval.
Early MVP: Do not publish to production accounts without direct review. Element refs may become invalid as site UIs change.
Features
MCP standard input/output (stdio) server
Uses already-logged-in Chrome tabs: cookies and passwords are never copied to the MCP server
Page summary, tab list, navigation, click, input
draft_social_postandpublish_social_postwhich requires explicitconfirmed=trueLocalhost-only WebSocket and publish domain allowlist
MIT license
Related MCP server: Browser Controller
Installation
npm install
npm run buildIn Chrome, go to chrome://extensions β Developer mode β Load unpacked β select the extension folder in this repository.
MCP client configuration example:
{
"mcpServers": {
"browserlemon": {
"command": "node",
"args": ["/absolute/path/to/browserlemon/dist/index.js"]
}
}
}After restarting the MCP client, click the BrowserLemon icon in the Chrome toolbar. When the badge shows ON, you are connected.
Recommended Workflow
Check the connection with
browser_statusUse
list_tabsandread_pageto confirm the target and composer refEnter text with
draft_social_postThe user reviews the content in the browser
Only call
publish_social_post(confirmed=true)when the user has explicitly approved
Security Model
The extension runs with the user's browser permissions, so it is powerful. Run the server only from a trusted local MCP client. The bridge binds only to 127.0.0.1, and password input values are excluded from page snapshots. However, page bodies may contain personal information, so you should also review the data policy of the AI service you connect to.
Supported publish domains: X/Twitter, LinkedIn, Facebook, Instagram, Threads, Bluesky, Mastodon.social. Reading and draft input work on general http(s) pages as well.
Contributing
Bug reports and PRs are welcome. Next priorities are per-site adapters, image upload, scheduled publishing, audit logs, and finer-grained extension permissions.
Available Tools
8 toolsbrowser_statusA
Check whether the local Chrome extension is connected.
| 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 burden, and it does convey a read-only, non-destructive status check through the verb 'Check'. However, it does not say what the result looks like, whether it returns a boolean/status value, or what happens if the extension is disconnected, so transparency is only partial.
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, clear sentence with no filler. The verb and object are front-loaded, making the tool's intent immediately obvious.
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 parameterless status check, the description is largely complete: an agent can invoke it without any input. It lacks explicit details about the response format and when to use it, but these are minor gaps given the tool's minimal complexity and empty 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?
The tool has zero parameters and schema coverage is 100%, so there is no parameter documentation burden. Per the 0-params baseline of 4, no additional semantic explanation is needed.
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 ('Check') and names a specific resource ('whether the local Chrome extension is connected'). This clearly distinguishes it from sibling tools that operate on tabs, pages, or content, so an agent can tell exactly what this tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to run this check, whether it is a prerequisite for other browser tools, or what to do if the extension is not connected. The description only states the tool's purpose, leaving usage context to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickA
Click a visible element identified by the ref returned from read_page.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | ||
| tabId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the element must be visible and that the ref originates from read_page, but does not mention other behavioral traits such as whether the click triggers navigation, waits for page load, or has side effects. This is minimal but not misleading.
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 entire description is a single, front-loaded sentence with no filler. It efficiently states the action, target, and dependency without 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 simple click tool, the description gives the essential info (what to click and where the ref comes from), but it omits behavior after clicking, any special handling for the optional tabId, and the return value (no output schema). Given the simplicity, the gaps are manageable, but an agent would need to infer some operational details.
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 description explains the primary parameter 'ref' by stating its purpose and source, which adds value over the bare schema. However, the optional 'tabId' parameter is not mentioned at all, and schema description coverage is 0%, so the description only partially compensates for the lack of parameter documentation.
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 clearly states the action (click), the target (a visible element), and how to identify it (via ref returned from read_page). It differentiates from siblings like type_text and read_page by specifying a distinct verb and resource.
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 conveys a clear prerequisite: the ref must come from read_page, so the tool is to be used after reading the page. It implies contexts where clicking is appropriate but does not explicitly state when not to use it or contrast with alternatives beyond the source of the ref.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draft_social_postB
Fill a social-media composer without publishing. Call read_page first and pass its composer ref.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| tabId | No | ||
| composerRef | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral transparency burden. It does disclose a key behavioral trait: it fills without publishing, and it implies a dependency on an existing read_page result. But it does not mention overwriting behavior, side effects, visibility requirements, or response/return behavior, so the disclosure is only partial.
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 no filler. The main action is front-loaded, and the prerequisite is stated immediately after. Every word contributes useful 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?
The description gives the critical prerequisite and non-publishing behavior, but with no annotations, no output schema, and 0% parameter schema coverage, there are significant gaps: tabId semantics, return value, error conditions, and what happens to pre-existing draft content. It is not complete enough for an agent to invoke confidently in all cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only partially compensates. It explains that composerRef comes from read_page, and 'text' is implied as the post content by 'Fill a social-media composer,' but the tabId parameter is entirely unexplained, and no parameter-specific details are given. The description is not enough to fully disambiguate the three parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action ('Fill a social-media composer') and a resource, and explicitly notes it does not publish. It implicitly distinguishes itself from publish_social_post and type_text, but does not explicitly name sibling alternatives, so it falls just 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?
It gives a direct prerequisite and dependency: 'Call read_page first and pass its composer ref.' This tells the agent when and how to prepare inputs. However, it does not mention when not to use this tool or explicitly compare against siblings like type_text or publish_social_post, so it's clear but not fully exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tabsA
List normal Chrome tabs. URLs are returned only to the local MCP client.
| 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 burden of behavioral disclosure. It usefully states that URLs are only returned to the local MCP client, addressing a privacy-relevant behavior. Yet it does not explicitly confirm the operation is read-only or describe any other side effects, though 'List' strongly implies a non-mutating 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?
The description is remarkably efficient: a single action statement followed by a one-sentence behavioral note. Every word contributes meaning, with the core purpose front-loaded and no filler or redundant schema repetition.
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 parameterless tool, the description gives enough to invoke it correctly: what it lists, which tabs it covers, and a privacy constraint on the returned URLs. It does not describe return structure beyond URLs, but the absence of an output schema means some details are left unspecified; this is a minor gap for such a simple 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?
The tool has zero parameters, so parameter semantics are essentially moot. The description provides all necessary context for invocation, and the schema's 100% coverage of an empty parameter set requires no further elaboration.
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 ('List') and resource ('normal Chrome tabs'), making the tool's function immediately clear. It also adds a meaningful scope qualifier ('normal') and a privacy note about URLs, which helps distinguish it from broader browser-state tools like browser_status.
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 'normal Chrome tabs' implies when the tool is appropriate, suggesting it is meant for ordinary tab enumeration rather than special or internal tabs. However, it gives no explicit guidance about alternatives or when not to use it, leaving the agent to infer usage context from sibling tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_urlA
Open an http(s) URL in the active tab or a new tab.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| newTab | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the core behavior (opening a URL) and the tab behavior (active vs new tab), but doesn't mention side effects like navigation, potential page load delays, or whether the tool waits for page load. For a simple action, this is adequate but not rich.
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, concise sentence that front-loads the action and target. No wasted words; it earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with no output schema, the description covers the essential action and tab behavior. However, it doesn't mention error cases (e.g., invalid URL, unsupported scheme) or whether the tool returns any status. Given the simplicity, it's mostly complete but could add a note on validation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It mentions the URL and the newTab option implicitly ('active tab or a new tab'), but doesn't explain the url format beyond 'http(s)' or the default behavior of newTab. The schema already defines the parameters, so the description adds minimal extra meaning.
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 ('Open') and resource ('an http(s) URL') and clarifies the target ('active tab or a new tab'). It is clear and distinguishes from siblings like read_page or click, though it doesn't explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (opening URLs) but provides no explicit guidance on when not to use it or alternatives. For example, it doesn't mention that read_page is for reading content or that type_text is for input. The context is clear but exclusions are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_social_postC
Click a publish button on an allowlisted social site. Requires confirmed=true after the user has reviewed the draft.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | No | ||
| confirmed | Yes | Must be true only after explicit user approval | |
| publishButtonRef | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries all responsibility for behavioral disclosure. It notes the confirmation prerequisite but omits side effects (e.g., publishing publicly), error states, or whether navigation happens. The post-click outcome is entirely undisclosed.
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 action and confirmation requirement. No fluff. The core instruction is clear and quick to scan.
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?
Without an output schema or annotations, this tool leaves out success/failure behavior, prerequisites like being logged in or on the right tab, and how to obtain publishButtonRef. Minimal description for a side-effectful action.
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 low (only 'confirmed' has a description). The tool description adds little beyond restating the confirmed requirement, and does not explain publishButtonRef (presumably a selector) or tabId (which page). Agents can't infer correct values from the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action (click a publish button) on a social site, distinguishing it from generic click and draft_social_post siblings. However, it doesn't explicitly name these alternatives, 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?
Provides a usage condition: 'Requires confirmed=true after the user has reviewed the draft.' This tells when the tool can be invoked, but it doesn't mention when not to use it, what prior steps are needed, or when the alternative draft_social_post or click should be used instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_pageA
Read a compact accessibility-oriented snapshot of the active tab. Sensitive input values are omitted.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | No | ||
| maxChars | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description must inform the agent about side effects and behavior. It discloses that 'sensitive input values are omitted', which is a valuable behavioral trait. However, it does not mention whether this is a read-only operation (likely safe, but not stated) or any other side effects, so the burden is only partially met.
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 extremely conciseβa single sentence with essential information. The key point about omitting sensitive inputs is front-loaded after the main purpose. It is efficient and avoids redundancy, though it could benefit from a brief mention of parameters, but given the schema has defaults, this is acceptable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (only two optional parameters, no output schema), the description is largely adequate. It covers the core purpose and a key behavioral nuance (omission of sensitive values). However, it does not clarify what 'compact' means in terms of output format or whether it returns plain text or structured data, which could be useful for an agent deciding how to use the result.
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 schema provides parameter names, types, defaults, and constraints but no descriptions (0% coverage). The description adds meaning by implying that the parameters control the snapshot's scope (e.g., 'maxChars' likely limits the returned text length, 'tabId' selects the tab). Despite not specifying exact semantics, the description helps interpret the parameters beyond the bare 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?
The description states a specific verb ('read') and resource ('page'), and notes it is a 'compact accessibility-oriented snapshot', which distinguishes it from navigation or interaction tools. It clearly indicates what the tool does, but does not explicitly list sibling tools for differentiation beyond the general phrasing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that it is used to read the content of the active tab, which is a clear use case compared to siblings like click or open_url. However, it does not provide explicit guidance on when to choose this over alternatives (e.g., when you need a lightweight read vs. a full page). The context of 'active tab' is clear, but exclusions are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
type_textA
Type into a visible editable element. Existing text is replaced by default.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | ||
| text | Yes | ||
| tabId | No | ||
| append | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It discloses the replace-by-default behavior and the visible-editable constraint, but omits failure conditions, focusing behavior, or any side effects. This is a start but not comprehensive.
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 with no filler, and the core action is front-loaded. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with four parameters and no output schema, the description is incomplete. It lacks parameter semantics and any error or edge-case behavior, leaving an agent to infer too much from parameter names alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description provides no explanation for ref, text, or tabId. It only hints at the append parameter through the 'replaced by default' phrase, leaving most parameters semantically unexplained.
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 clearly states the action (type) and the target (visible editable element), and the note about replacing existing text distinguishes it from the click sibling. This leaves no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for text entry but provides no explicit guidance on when to prefer this over alternatives like click, nor does it state exclusions or prerequisites. The context is clear but lacks differentiation.
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.
8 tool updates
v0.1.0- First observed
browser_status - First observed
click - First observed
draft_social_post - First observed
list_tabs - First observed
open_url - First observed
publish_social_post - First observed
read_page - First observed
type_text
TDQS
Scored across 8 tools
Each tool has a generally distinct purpose: status, tab listing, page reading, navigation, typing, clicking, and social composing/publishing. There is mild overlap between type_text and draft_social_post, and click could theoretically be used in place of publish_social_post, but the descriptions clarify the intended specialized use.
Most tools follow a verb_noun snake_case pattern (list_tabs, read_page, open_url, type_text, draft_social_post, publish_social_post), but browser_status is a noun phrase and click is a bare verb. The naming is readable and consistently lowercase, but the pattern is not uniform.
Eight tools is well-scoped for a browser automation assistant. Each tool has a clear role with no obvious filler or redundant duplicates, making the count appropriate for the server's purpose.
The set covers core browsing actions like open, read, type, click, plus a guarded social-posting workflow. However, it lacks standard browser controls such as switching or closing tabs, scrolling, refreshing, and waiting for page conditions, which are notable gaps for browser automation.
Maintenance
Related MCP Connectors
Browser MCP for logged-in tasks. Uses your Chrome β credentials stay local. Zero-token replay.
Connect any AI agent to 11+ social platforms: schedule, publish & track posts via hosted MCP.
Hosted real Google Chrome MCP with per-user persistent state. Navigate, click, type, screenshot.
Schedule and publish social posts across 9 platforms (Instagram, LinkedIn, X, TikTok, Facebook, Threads, Pinterest, Bluesky, Mastodon) straight from Claude, ChatGPT, Cursor, or any MCP client. Create, edit, and reschedule posts, upload media, and pull account and post analytics, follower demographics, and best-time windows. 20 tools, free on every plan.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables MCP clients to control and interact with the user's real Chrome browser session, leveraging existing logins, cookies, and extensions for AI-driven automation.5MIT
- AlicenseNot gradedqualityBmaintenanceGives MCP-compatible AI agents direct control of your real browser with existing sessions, logins, and cookies. Supports multiple agents concurrently with tab targeting.3 npm2MIT
- AlicenseNot gradedqualityAmaintenanceConnects AI agents to your Chrome browser via MCP, enabling real-time control of existing tabs, sessions, and application state for development workflows.MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to control your existing Chrome browser via MCP, using your logged-in sessions for automation on authenticated sites. Provides high-level browser tools plus raw CDP and Chrome API access.MIT