linux-computer-use
The linux-computer-use MCP server enables AI agents to control a Linux desktop and browser with live view, human takeover, and safety guardrails.
Browser automation: Open/attach sessions with persistent profiles, navigate, capture screenshots and accessibility snapshots, interact via refs or coordinates, manage tabs, and use history.
Desktop control: Start/stop a virtual desktop, launch native apps, list/focus windows, take screenshots, and perform mouse/keyboard actions.
Session & safety: Isolated named sessions, live viewing (
playwright-cli show), human takeover via lease file, confirmation for irreversible actions, credential protection, account picker handling, and switchable normal/auto modes.
Provides browser automation for Brave, allowing the agent to attach to a running Brave instance via CDP and drive it with the user's profiles and cookies.
Provides browser automation for Firefox, allowing the agent to control a Firefox browser, which requires Playwright's Firefox build to be installed.
Provides browser automation for Opera, allowing the agent to attach to a running Opera instance via CDP and drive it with the user's profiles and cookies.
Provides browser automation for Vivaldi, allowing the agent to attach to a running Vivaldi instance via CDP and drive it with the user's profiles and cookies.
Click on "Install 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., "@linux-computer-useOpen github.com in a session named research, then tell me what is on the page."
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.
linux-computer-use
linux-computer-use is an open source computer use agent for Linux. It is an MCP server that lets an AI agent such as Claude Code or OpenAI Codex drive a real browser, and native Linux applications, on your own Linux machine, with a live view, human takeover, and safety guardrails.
Computer use for AI agents landed first on macOS and Windows, or inside a cloud VM. This project brings the same capability to Linux, self-hosted, running on your machine with your own browser and your own cookies.
Install
curl -fsSL https://raw.githubusercontent.com/Roadmvn/linux-computer-use/main/scripts/install.sh | bashThat is the whole setup. The script is scripts/install.sh in this repository, so you can read it before running it.
Related MCP server: PixelCheck
Connect it to your agent
# Claude Code
claude mcp add --scope user linux-computer-use -- node ~/.linux-computer-use/app/src/index.js
# OpenAI Codex
codex mcp add linux-computer-use -- node ~/.linux-computer-use/app/src/index.jsRestart your client afterwards so it picks the server up.
Quick start
Ask your agent: "Open github.com in a session named research, then tell me what is on the page." Then watch it work:
cd ~/.linux-computer-use/app && npx playwright-cli showWhat it does
Capability | What you get |
Live view |
|
Human takeover | A lease file freezes the agent mid-run, and only you can release it. |
Visible cursor | An overlay draws the agent's pointer in the page, so you see where it acts. |
Sessions and profiles | Named isolated sessions, cookies kept between runs when |
Tabs | List, open, select and close tabs with a single tool. |
Two ways to act | Accessibility tree with element refs, the robust default, or raw pixel coordinates. |
Guardrails | Fail closed on credentials, account pickers, irreversible actions and unreadable targets. |
Native applications | Burp Suite, Wireshark, Ghidra and the rest, in a nested desktop that leaves your pointer alone. |
Auto mode |
|
MCP tools
Tool | What it does | Parameters |
| Open or attach a browser session |
|
| Navigate to a URL |
|
| Accessibility tree of the page, with element refs | - |
| Image capture of the page | - |
| Click an element by ref |
|
| Type text |
|
| Fill a field by ref |
|
| Press a key |
|
| Act at pixel coordinates, vision mode |
|
| Manage tabs |
|
| Navigate the history |
|
| Session state and control lease |
|
| Switch between normal and auto |
|
| Start the agent desktop, or shut it down |
|
| List the visible windows | - |
| Bring a window to the front |
|
| Capture the desktop, or a single window |
|
| Move the pointer and click |
|
| Type text into the focused window |
|
| Press a key or a combination |
|
| Start an application by name |
|
Requirements
Linux, Node.js 20 or newer.
A graphical session:
DISPLAYorWAYLAND_DISPLAYset for the MCP client. No screen, wrap it inxvfb-run.The system libraries of Chromium. The installer pulls them on apt based systems.
Desktop backend only:
sudo apt install xserver-xephyr xdotool imagemagick xfwm4. Not needed to drive a browser.
Comparison
Platform | Where it runs | Live view | Human takeover | Guardrails | Open source | |
linux-computer-use | Linux | Your machine | Yes, | Yes, explicit lease released from your machine | Yes | Yes, MIT |
OpenAI Operator / ChatGPT agent | Any, used through ChatGPT | Cloud VM | Yes | Yes | Yes | No |
Anthropic Claude for Chrome | Chrome extension | Your browser | Your own browser window | - | Yes | No |
Playwright MCP | Cross platform | Your machine | Yes | Yes | - | Yes |
A dash means not verified rather than absent. These products move fast, so check their own documentation before relying on a row.
FAQ
Can AI control a browser on Linux?
Yes. Install this MCP server, register it with Claude Code, OpenAI Codex, or any MCP client, and the agent drives Chromium, Chrome, or Firefox on your Linux machine while you watch.
What is the Linux alternative to OpenAI Operator?
linux-computer-use. Operator runs a browser in a cloud VM you reach through ChatGPT. This runs on your own Linux machine, with your browser and your profile, and it is open source under MIT.
How do I give Claude Code browser access?
Run the installer, then claude mcp add --scope user linux-computer-use -- node ~/.linux-computer-use/app/src/index.js, and ask Claude Code to open a page. The 21 tools show up in its tool list.
Can it use my existing cookies and logins?
Yes, in two ways: pass profile with a directory path, or start your own browser with a debugging port and attach with cdp, see docs/usage.md. Without either, the profile is in memory and disappears with the browser.
Will it log into my accounts on its own?
No. It stops on an empty login form, and it asks you when several accounts are offered. It also asks before an action it judges irreversible.
Documentation
docs/usage.md - first run, your own browser, native applications, guardrails, environment variables, audit trail, more FAQ.
docs/design.md - architecture, and the reasoning behind each choice.
Roadmap
AT-SPI integration, the Linux accessibility bus, to give the desktop backend the equivalent of the browser's accessibility snapshot, and with it real guardrails by element name. Planned, not available yet.
Contributing
Issues and pull requests are welcome on GitHub. Architecture notes live in docs/design.md.
License
MIT. See LICENSE.
Available Tools
13 toolsclickA
Click an element by its ref from snapshot. Blocked when the element looks irreversible unless confirm is true.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | Element ref from snapshot, e.g. e42. A CSS or role selector also works. | |
| confirm | No | Set true only after a human approved an action flagged as irreversible. |
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 disclosing behavior. It explicitly reveals a key safety guard: 'Blocked when the element looks irreversible unless confirm is true.' This goes beyond a generic 'click' description and warns about potential destructive actions, though it does not detail other side effects like navigation.
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 exceptionally concise: two sentences, front-loaded with the action verb, and every word adds value. There is no redundancy or fluff.
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 with a fully documented input schema, the description plus schema is sufficient to invoke the tool correctly. It covers purpose, input mechanism, and the important irreversible-action guard. Minor details like error behavior when the element is not found are absent but not critical for basic use.
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 input schema already provides 100% parameter coverage, describing 'ref' as an element ref or selector and 'confirm' as a flag for human approval. The description merely restates part of this ('ref from snapshot') and adds no new semantic 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?
The description uses a specific verb ('Click') and resource ('an element by its ref from snapshot'), making the tool's action unmistakable. It also differentiates from sibling tools like 'press' and 'mouse' by clarifying the mechanism (snapshot ref).
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 'by its ref from snapshot' clearly indicates the intended input source and when this tool should be used. It does not explicitly mention when not to use it or alternatives, but the context is clear enough for a competent agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fillB
Fill a field identified by its ref. Refused on credential fields.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | ||
| text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose that the tool is 'Refused on credential fields', which is a useful behavioral constraint. However, it does not mention side effects, success/failure behavior, or any other important behavioral traits, so transparency is minimal.
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 consists of two short sentences with no wasted words. The main action is front-loaded, and the additional note about credential fields is placed logically. It is concise and well-structured.
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 with only 2 parameters and no output schema, but the description omits critical context such as whether filling triggers events, what happens on success or failure, and how 'ref' relates to the broader tool ecosystem. It is minimally sufficient but leaves gaps for an agent making selections.
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%, so the description must compensate. It explains 'ref' as the field identifier, but 'text' is left entirely to inference from its name. No format, validation, or additional semantics are provided, leaving a gap in parameter understanding.
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 'Fill a field identified by its ref', which clearly identifies the action (fill) and the target (a field by ref). However, it does not differentiate this from the sibling tool 'type', which could also be used to populate fields, so it's clear but lacks explicit sibling differentiation.
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 'type' or 'click'. The description implies use for filling fields and notes a restriction on credential fields, but does not provide context for selection among siblings or mention prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gotoC
Navigate the current tab to a URL.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes |
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, but it only restates the action itself. It does not mention whether navigation waits for page load, whether it preserves browsing history, or potential errors for invalid URLs, leaving significant behavioral traits unstated.
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 conveys the essential information without any redundant words. It is appropriately sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool, the description is nearly complete, but it lacks context about post-navigation behavior (e.g., return values or waiting state) and does not address how 'goto' differs from the sibling 'open'. Given no output schema and no annotations, this omission leaves minor gaps in overall completeness.
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 parameter 'url' has no schema description (0% coverage), and the description merely repeats the word 'URL' without specifying format, scheme requirements, or accepted variants (e.g., relative vs absolute). The description adds minimal meaning beyond the parameter name itself.
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 'Navigate the current tab to a URL' clearly states the action (navigate), the resource (current tab), and the destination (URL). It is specific enough to define the tool's core behavior, though it does not explicitly distinguish from the sibling tool 'open', which may serve a similar purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'open' or 'click'. There is no mention of prerequisites, exclusions, or preferred contexts, leaving the agent without direction for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
historyC
Go back, go forward or reload.
| Name | Required | Description | Default |
|---|---|---|---|
| direction | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description must carry the full burden of behavioral disclosure. It only restates the enum values (back, forward, reload) without explaining side effects, state changes, or the meaning of 'reload'. For example, it does not mention whether reload discards form data or requires user confirmation, which is critical for a navigation 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?
The description is very short and front-loaded, making it easy to parse. However, it lacks structural elements like prerequisites or examples. It earns points for its compactness but is arguably under-specified rather than genuinely concise, as it omits helpful usage context.
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 tool with one enum parameter and no output schema, the description is minimally adequate. It tells the agent the basic operations but lacks contextual completeness regarding when to use it, what the reload action entails, or any interaction with browser state. The lack of annotations also limits the agent's ability to predict side effects.
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 has 0% description coverage, and the description merely echoes the enum values without adding new meaning. 'Go back, go forward or reload' adds little beyond the parameter name and enums. The enum values are self-explanatory, but the description fails to clarify edge cases or expected behavior for each direction.
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 tool's purpose: navigating history via back, forward, or reload. It is specific to history operations and uses a clear verb structure. However, it does not explicitly distinguish itself from sibling tools like 'goto', though the history-specific actions make the distinction implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'goto' or 'tabs'. The description simply lists actions without suggesting typical use cases or exclusions. This leaves the agent without enough context to choose between related navigation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mouseA
Coordinate based mouse control for canvas, maps and custom widgets that have no accessible element. Take a screenshot first to read the coordinates.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| action | Yes | ||
| confirm | No | Set true only after a human approved an action flagged as irreversible. |
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 coordinate-based approach and the screenshot prerequisite, but omits details about coordinate system (screen vs viewport), potential side effects of mouse actions, or any irreversibility/safety notes beyond what the schema's confirm parameter implies.
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 two sentences, front-loaded with purpose and usage, with no wasted words. Every clause adds meaningful context.
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 has 4 parameters, no output schema, and no annotations. The description provides basic purpose and a key prerequisite but lacks comprehensive information on coordinate system, action semantics, error handling, or safety flags. It feels incomplete for a tool with this complexity.
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 only 25% (only 'confirm' has a description). The description adds context that x/y are based on screenshot coordinates, but it does not explain the 'action' enum values or the 'confirm' parameter beyond what the schema provides. It partially compensates but leaves gaps.
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 it performs coordinate-based mouse control for non-accessible elements, using a specific verb and target context. It distinguishes itself from sibling tools like click and press by focusing on unaccessible surfaces.
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 explicitly indicates when to use the tool (for canvas, maps, custom widgets with no accessible element) and instructs to take a screenshot first. It doesn't explicitly name alternative tools, but the 'no accessible element' condition implies when other tools would be unsuitable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openA
Open a browser session, or attach to a browser already running with a CDP endpoint. Call this first.
| Name | Required | Description | Default |
|---|---|---|---|
| cdp | No | Attach to a browser already running with --remote-debugging-port instead of launching one, e.g. http://127.0.0.1:9222 | |
| url | No | URL to load once the browser is up. | |
| browser | No | chromium (default, the bundled build), chrome, firefox, webkit or msedge. Ignored when cdp is set. | |
| profile | No | Path to a persistent profile directory, to keep logins between runs. Ignored when cdp is set, since the running browser already has its own. | |
| session | No | Session name. Sessions have separate cookies and tabs. Defaults to "default". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the burden of disclosure. It states the core behavior (open/attach) and ordering, but does not mention side effects, idempotency, or error behavior. 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?
Two sentences, front-loaded with the essential purpose. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple entry-point tool with 5 optional params, the description covers the main purpose and sequencing. It doesn't describe return values, but there is no output schema, and sibling tools like status may cover that need.
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 baseline is 3. The description adds context by explaining the CDP attach mode as an alternative to launching, but it does not add new meaning beyond what the parameter descriptions already provide.
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 tool's action: 'Open a browser session, or attach to a browser already running with a CDP endpoint.' It distinguishes itself from sibling tools by being the initialization step, while siblings like goto and click are subsequent actions.
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?
'Call this first' explicitly tells the agent when to use this tool relative to others. It also contrasts launching a new browser vs attaching via CDP, giving clear context for choosing this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pressB
Press a key, for example Enter, Tab or ArrowDown.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility. It only says 'Press a key' without disclosing side effects, required focus, or whether key combinations/modifiers are supported. Minimal behavioral context is provided.
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 quickly provides illustrative examples. Every word is relevant and there is no 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 tool with one parameter and no output schema, the description covers the core purpose but omits details about allowed key names and behavior. It is adequate but has clear gaps that could affect 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 input schema has no description for 'key', and the description provides examples (Enter, Tab, ArrowDown) that give some meaning. However, it doesn't specify the full set of accepted values, case sensitivity, or modifier support, so compensation for the schema gap is partial.
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 ('Press') and the resource ('a key'), with specific examples (Enter, Tab, ArrowDown) that distinguish it from sibling tools like type, click, and fill. It does not explicitly name alternatives, which prevents a score of 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?
There is no guidance on when to use this tool versus alternatives such as type or click. The description only states what it does, not the context or prerequisites for using it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screenshotA
Image of the page. Use it to read visual content, verify a result, or work out coordinates for the mouse tool.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. However, it only says 'Image of the page' and gives usage context. It does not disclose important traits such as whether the image is a viewport or full-page capture, how the image is returned (path, data URL), or any timing/loading behavior. This lack of detail makes it hard for an agent to anticipate the actual output.
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 two short sentences, with the core definition ('Image of the page') front-loaded. Every word earns its place, and the usage scenarios are packed into a single follow-up sentence 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?
Given the low complexity (no parameters, no output schema), the description provides adequate usage context but omits return-value semantics and capture scope. Since there is no output schema, the description should explain what the agent will receive (e.g., an image path or base64 string). This gap is significant but not fatal 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 the schema is complete and there is nothing for the description to add about parameters. Per the baseline rule for 0-parameter tools, a score of 4 is appropriate since no compensation 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 clearly states the tool produces an image of the page. It further distinguishes itself by specifying use cases—reading visual content, verifying results, and computing coordinates for the mouse tool—which differentiates it from text-based siblings like snapshot or action tools like click/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 explicitly lists when to use the tool: to read visual content, verify a result, or work out coordinates for the mouse tool. It does not mention alternatives or when not to use it, but the listed use cases provide clear context and imply contrast with text-based tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_modeA
normal asks before sensitive actions. auto runs a complete objective end to end, stopping only for an empty login, an account choice, or an irreversible action.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes |
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 explains what each mode does and the stopping conditions for auto mode. This is good transparency, though it doesn't mention any side effects of switching modes or what happens if the mode is already set.
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 two concise sentences, each dedicated to one mode. There is no redundancy or filler, making it easy to parse and understand.
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 tool with one parameter and no annotations or output schema, the description sufficiently covers the core behavior. It doesn't address edge cases like switching to the current mode or what constitutes a 'sensitive action', but these are likely context-specific and not critical for basic 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 input schema has no descriptions for the 'mode' parameter, but the description defines both enum values ('normal' and 'auto') with specific behaviors. This adds significant meaning beyond the schema, which has 0% coverage, and helps the agent choose the correct parameter value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly explains what each mode does, but it doesn't explicitly state 'sets the mode to...'. The name 'set_mode' makes the purpose obvious, and the description elaborates on the behavior of each mode, distinguishing it from sibling tools by describing the interaction behavior.
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 each mode by contrasting their behaviors (normal asks before sensitive actions, auto runs end-to-end with specific stops). However, it doesn't explicitly state 'use normal for...' or 'use auto for...', nor does it compare against alternatives. The usage context is implied rather than directly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snapshotA
Accessibility tree of the page with a ref for each element. Use these refs with click and fill. Prefer this over screenshot for acting: it is exact and cheap.
| 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 burden and discloses the output as an accessibility tree with element refs, plus behavior traits (exact, cheap). It doesn't detail limitations or return structure, but is sufficiently transparent for a simple read-only 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?
Three concise sentences, front-loaded with the core definition, followed by usage and preference over screenshot. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and no output schema, the description is largely complete: it explains what the tool returns (accessibility tree with refs) and how to use it. It could slightly elaborate on the exact format of refs, but sibling context and clarity make it adequate.
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 the baseline is 4. No parameter semantics are needed, and the description does not attempt to explain nonexistent 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 clearly states the tool produces an accessibility tree of the page with refs for each element. It also clarifies its intended role in acting via refs with click and fill, distinguishing it from screenshot.
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?
Explicitly recommends using this over screenshot for acting, calling it exact and cheap, and specifies how refs should be used with click and fill. This provides clear when-to-use guidance and names the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
statusA
Report the session, the mode and who holds the control lease. Pass takeover: true to hand control to the human before they act in the dashboard. Control comes back only when the human releases it on their machine, never through this tool.
| Name | Required | Description | Default |
|---|---|---|---|
| takeover | No | true to hand control to the human. There is no value that takes it back. |
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 that takeover hands control to the human and that control cannot be reclaimed through this tool, only by human release. It clearly implies the default operation is read-only ('Report'), covering the main behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the primary purpose. Every sentence adds essential information: what is reported, when to use takeover, and the critical limitation. 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 simple read-only status tool with one optional parameter and no output schema, the description lists exactly what is reported (session, mode, control lease) and covers the only behavioral nuance (takeover). It could be slightly clearer about what 'session' refers to, but overall it is complete enough for an agent to use 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?
The input schema already describes the takeover parameter with 100% coverage. The description adds practical context by explaining when to pass true ('before they act in the dashboard') and reinforces the irreversible nature. This goes beyond the schema's bare definition.
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 ('Report') and names three concrete resources: session, mode, and control lease. This clearly distinguishes it from sibling tools like set_mode or click, which perform actions rather than report state.
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 clear context for when to pass takeover: true ('before they act in the dashboard'). It also states a key limitation ('Control comes back only when the human releases it'), which helps the agent avoid misusing the option. It does not explicitly name alternatives, but none directly compete with this status-reporting role.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tabsB
List, open, select or close tabs.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | URL for new. | |
| index | No | Tab index for select and close. | |
| action | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It lists actions (list, new, select, close) but does not describe side effects, what 'select' or 'close' does to the current tab, whether actions are reversible, or what the output for 'list' looks like.
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 is front-loaded with all key actions. It is efficient with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has four distinct actions and three parameters, yet the description is minimal. It does not specify return values (e.g., what 'list' returns), prerequisites, or behavior nuances like whether 'new' opens a foreground/background tab. Given the lack of output schema and annotations, this is insufficient for an agent to use the tool correctly without additional guessing.
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 67% with action having an enum and url/index having brief descriptions. The description adds no further parameter meaning, such as which combinations of action and parameters are valid. It provides a baseline but does not compensate for the missing 33%.
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 tool's function: 'List, open, select or close tabs.' It uses specific verbs and identifies the resource (tabs), making the purpose unambiguous and distinct from sibling tools like 'goto' or 'open'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for tab management but does not explicitly state when to prefer this tool over siblings or provide exclusions. For example, it does not clarify whether 'open' should be used for URLs instead of the 'open' sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
typeA
Type text into the focused element. Refused when a password field has focus.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of disclosing behavior. It reveals that the tool requires focus and refuses to type into password fields, which are meaningful behavioral traits not conveyed by the schema. However, it does not describe other aspects like whether text is appended or replaces existing content, or if it triggers input events, so it's not a full disclosure.
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 concise and front-loaded: a single sentence that states the action and an additional clause that highlights an important limitation. Every word earns its place, with no superfluous 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 tool is simple (one string parameter, no output schema), and the description covers its core purpose and a key behavioral constraint. It lacks details on error handling or exact insertion behavior, but for this simplicity, the description is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has a single 'text' parameter with no description, and the description adds no extra semantic value beyond restating that it types text. With 0% schema description coverage, the description should clarify parameter nuances (e.g., newline handling, special characters), but it does not, leaving the parameter to rely on its name alone.
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 tool's function: 'Type text into the focused element.' It identifies the resource (focused element), the verb (type), and adds a distinguishing restriction about password fields, which helps differentiate it from sibling tools like fill or press.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for typing into the currently focused element and provides an explicit exclusion (refused when password field has focus), but it does not mention alternative tools or explicit guidance on when to choose this over siblings like fill or press.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have clearly distinct purposes: goto for navigation, snapshot for accessibility tree, screenshot for visual capture, click/type/fill/press for input. The overlaps between click and mouse (ref vs coordinates) and type vs fill (focused vs by ref) are clarified by descriptions, making misselection unlikely.
Tool names are all lowercase and mostly single words, but they mix verb forms (goto, click, type, fill, press, open) with noun forms (snapshot, screenshot, mouse, tabs, history, status). The only underscore in set_mode breaks the otherwise uniform style, creating a minor inconsistency.
13 tools is well within the ideal range for a browser automation server. Each tool covers a distinct aspect of interaction, from session management and navigation to reading state and performing actions, without feeling bloated or sparse.
The toolset covers the core lifecycle: open, navigate, inspect (snapshot/screenshot), interact (click/type/fill/press/mouse), manage tabs/history, and control session mode. Minor gaps like an explicit wait or scroll tool are workable because snapshot can serve as a synchronization point and mouse can handle scrolling.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for building and testing AI agents with multi-model experimentation and insights.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
A paid remote MCP for AI agent browser approval MCP, built to return verdicts, receipts, usage logs,
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Related MCP Servers
AlicenseNot gradedqualityBmaintenanceMCP server that enables AI tools to control local browser sessions for ChatGPT, Claude, and other AI services, supporting querying, navigation, file uploads, and artifact management.44546Mozilla Public 2.0- AlicenseNot gradedqualityCmaintenanceAn MCP server that gives AI agents real browser capabilities including screenshotting, action execution, data extraction, and multi-persona auditing for frontend validation.746MIT
- AlicenseNot gradedqualityCmaintenanceSecurity-hardened MCP server that gives AI assistants full control over your real browser session, supporting 36 tools for navigation, data extraction, monitoring, and more.MIT
- FlicenseNot gradedqualityDmaintenanceMCP server that connects AI agents to browser DevTools via CDP, enabling real-time access to console logs, network requests, and page state.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Roadmvn/linux-computer-use'
If you have feedback or need assistance with the MCP directory API, please join our Discord server