OpenMouse MCP
This MCP server provides human-like mouse control, visual observation, and app/browser automation across browser, Windows desktop, and cloud Playwright surfaces.
Move the cursor with curved, human-like paths (
mouse_move).Click, double-click, or right-click with intent and safety prompts for destructive actions (
mouse_click).Drag and select using curved paths (
mouse_drag).Scroll up or down by wheel notches (
mouse_scroll).Read cursor position for browser virtual cursor or Windows cursor (
mouse_position).Capture screenshots of the active browser, cloud browser, or Windows desktop (
mouse_screenshot).Observe the desktop/browser with richer visual context like windows, taskbar, monitors, and viewport metadata (
computer_observe).Open URLs directly in a local or cloud browser (
browser_open).Open or focus local applications by name or alias (
app_open).Emergency stop current/queued mouse actions and release buttons (
mouse_stop).Inspect routing/status including browser companion freshness, viewport, platform, and failures (
mouse_status).Auto-route between connected Chromium page control, Windows PyAutoGUI desktop control, and cloud Playwright Chromium.
Support computer-use loops through observe → locate → act → re-observe with safety checks and elicitation for high-risk actions.
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., "@OpenMouse MCPtake a screenshot of my desktop, then click the Chrome address bar"
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.
OpenMouse MCP
内置式视觉鼠标操控 MCP 插件。本地 Agent 直接以 stdio 启动,云部署可暴露 Streamable HTTP。插件内部自动选择执行面:
前台是已连接的 Chromium 浏览器时,使用页面内 JS 虚拟光标、DOM Pointer/Mouse 事件和当前标签页截图。
前台不是该浏览器时,在 Windows 上使用 PyAutoGUI 操控真实系统鼠标,可操作桌面、窗口和终端。
在 Linux/云端或显式启用云浏览器时,使用 MCP 进程内 Playwright Chromium,提供可信浏览器输入。
浏览器端不会穿透网页去移动系统鼠标;Windows 端可以操作桌面任意软件。
能力
工具 | 作用 |
| 贝塞尔轨迹移动,带轻微抖动和中途停顿 |
| 左键单击、左键双击、右键单击 |
| 人类化拖拽与浏览器文本选择 |
| 鼠标滚轮上下滚动 |
| 读取当前虚拟光标或真实光标坐标 |
| 浏览器当前标签页或 Windows 全屏截图 |
| 全屏截图 + 任务栏、窗口、显示器、浏览器视口等视觉元数据 |
| 快速打开本地默认浏览器/Edge/Chrome,或导航云端 Playwright 页面 |
| 快速恢复已运行应用窗口,或从别名/开始菜单启动本地应用 |
| 紧急停止、释放按键、清空动作队列 |
| 查看自动路由、扩展心跳和失败状态 |
所有鼠标动作共用同一套 MCP 参数,Agent 不传环境参数。computer_observe 提供截图给模型做视觉识别,形成“观察 → 定位 → 动作 → 再观察”的 computer-use 闭环。
Codex 插件配置使用 MOUSE_MCP_SPEED_PROFILE=fast:本地轨迹约为 0.1 到 0.38 秒,普通动作后停顿约为 0.04 到 0.16 秒,同时保留曲线和非瞬移。高风险动作仍使用更慢的确认后节奏。
Related MCP server: Open Computer Use
安全机制
每次移动、点击、拖拽和滚动都使用曲线轨迹。
fast档附加0.04到0.16秒停顿,balanced档使用0.2到1.3秒停顿。mouse_click最多自动重试 2 次。连续 3 次操作失败后直接紧急停止。全局
ESC监听会设置当前动作取消标志、清空排队任务,并通知浏览器扩展停止。Windows 坐标限制在虚拟屏幕范围内。浏览器点击、拖拽、滚动的目标越界时直接拒绝;普通移动会夹取到视口边界。
删除、清空、格式化、批量提交、关闭全部等语义会触发 MCP elicitation。没有用户明确批准就不执行。
浏览器页面还可用
data-openmouse-risk="high"标记高风险控件。
目录
src/mouse_mcp/ Python MCP 服务、云浏览器、桌面视觉观察、自动路由
browser-extension/ Chromium MV3 扩展、网页虚拟鼠标、截图
demo/ 浏览器人工测试页
docs/ 架构、部署、Agent 提示词、工具与风险文档
examples/ OpenClaw 和通用 MCP 配置
scripts/ Windows 安装、注册和检查脚本
tests/ 单元测试、浏览器 E2E、stdio E2E
codex/ Codex Skill 源文件
Dockerfile 云端 Playwright Chromium 镜像快速开始
作为 Codex 插件安装
先安装 Python 依赖:
python -m pip install "git+https://github.com/osca5771666/openmouse-mcp.git"再从 GitHub marketplace 安装插件:
powershell -ExecutionPolicy Bypass -File .\scripts\install-codex-plugin.ps1等价命令:
codex plugin marketplace add osca5771666/openmouse-mcp --ref main
codex plugin add openmouse@openmouse插件会同时注册 openmouse MCP 和 openmouse-computer-use Skill。新开 Codex 会话后生效。
从源码安装
在 PowerShell 中运行:
powershell -ExecutionPolicy Bypass -File .\scripts\install.ps1然后:
打开
chrome://extensions,启用开发者模式,选择“加载已解压的扩展程序”,目录选browser-extension。打开扩展选项,填入安装脚本输出的浏览器令牌。
运行
.\.venv\Scripts\python.exe -m mouse_mcp --diagnose验证桥状态。运行
scripts\install-codex-plugin.ps1安装 Codex 插件,或按 OpenClaw 部署说明 注册其他 MCP 宿主。将 Agent 系统提示词 加入 Agent 的系统提示词或工作区说明。
云端使用 CLOUD.md 的 Streamable HTTP 或 Docker 配置。
已验证
Python 单元测试:40 项通过。
Node 人类化轨迹测试:3 项通过。
Chromium 真实扩展 E2E:单击、双击、拖拽选择、滚动、截图、高风险拦截通过。
MCP
stdioE2E:初始化、11 个工具发现、桌面观察和截图通过。云端 Playwright E2E:页面打开、可信点击、截图通过。
云 HTTP E2E:Bearer 鉴权、Streamable HTTP、云端页面操作通过。
Windows 桌面观察:任务栏矩形、活动窗口、显示器、窗口清单和 1920×1200 截图通过。
Codex 0.147.0:真实
tool_search发现和mouse_status/computer_observe调用通过。
文档
许可
MIT
Available Tools
11 toolsapp_openOpen or focus a local applicationAIdempotent
Fast path for local applications. Focuses an existing running window, or launches a known executable/Start Menu application. Supports aliases such as feishu, notepad, explorer, cmd, powershell, calculator, edge, and chrome.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Application name or alias, for example 'feishu' or 'notepad'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful behavioral detail beyond the annotations: it explains that an existing running window is focused first, otherwise a known executable or Start Menu application is launched. It also lists supported aliases, which helps predict behavior. It does not cover failure modes for unknown applications, but the annotations already provide safety and idempotency context.
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 three sentences, front-loaded with the key distinction, and contains no filler. Each sentence contributes either purpose, behavior, or parameter guidance.
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 local application launcher with annotations and an output schema, the description is sufficient. It explains the dual focus/launch behavior, identifies the local-app scope, and gives concrete alias examples.
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 fully documents the single required parameter, so the baseline is 3. The description adds value by supplying a broader set of concrete aliases such as explorer, cmd, powershell, calculator, edge, and chrome, which goes beyond the schema examples.
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 action and resource: it opens or focuses a local application, either by focusing an existing window or launching a known executable/Start Menu app. This clearly distinguishes it from the browser-oriented sibling tool.
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 identifies itself as the 'Fast path for local applications,' which gives clear context for when to use it versus browser_open. However, it does not explicitly name browser_open or state exclusions such as web URLs or unknown executables.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_openOpen a URL directly in a browserAIdempotent
Fast path for opening a known http:// or https:// URL. On Windows this launches the default browser, Edge, or Chrome directly without screenshots or mouse movement. In cloud mode it navigates the embedded Playwright browser and blocks private addresses by default.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Absolute http:// or https:// URL. | |
| browser | No | default |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare openWorldHint/idempotentHint/readOnlyHint, but the description adds real value beyond them: platform-specific launch behavior (default browser, Edge, Chrome on Windows) and the fact that cloud mode uses an embedded Playwright browser that blocks private addresses by default. It does not cover failure/timeout behavior or whether navigation waits for load.
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, each carrying distinct information (purpose/scope, Windows routing, cloud-mode behavior), with the fast-path framing front-loaded. No filler.
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 an output schema present, return values needn't be explained, and the description covers the key differentiators of platform and cloud mode. Minor gap: no note on what happens with the browser parameter off Windows or on failure.
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 50%: url is documented in-schema, while browser has only an enum with no description. The description partially compensates by mapping the browser choice ("default browser, Edge, or Chrome"), but only in the Windows context — it never says what browser does in cloud/Playwright mode, so the gap is only half closed.
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?
Opening a known absolute http(s) URL is stated as a specific verb+resource, and "Fast path" plus "without screenshots or mouse movement" implicitly separates it from the computer_observe/mouse_screenshot loop. It stops short of naming a sibling tool outright, which keeps it out of the top band.
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?
"Known http:// or https:// URL" is a usable precondition and "fast path" implies direct navigation over screenshot-driven interaction. However, it never states when NOT to use this (e.g., when the page needs to be inspected or clicked, use computer_observe/mouse_click) and names no alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
computer_observeObserve the active computer surfaceARead-onlyIdempotent
Capture the active desktop/browser and return richer context. On Windows this includes the active window, taskbar rectangles, monitors and visible application windows. Use this before visual targeting and again for verification.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so safety profile is covered. The description adds value by detailing the returned context and noting Windows-specific coverage, which goes beyond what annotations supply. Minor gap: no note on latency or that the capture is non-blocking.
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 core action, with the return-content enumeration in the middle and usage guidance last. Efficient overall; "return richer context" is slightly vague but the following sentence clarifies it.
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 input parameters and no output schema, the description carries the burden of describing return values, which it partially does by listing window, taskbar, monitor and application details. A note on response format or whether additional platform differences exist beyond Windows would make it fully 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 tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool is 4. The description correctly avoids inventing 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?
States a specific verb (Capture) and resource (active desktop/browser) and enumerates the returned context (active window, taskbar rectangles, monitors, visible application windows). It is clear what the tool does, though it never explicitly distinguishes itself from the sibling mouse_screenshot, which likely also captures the surface.
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?
Gives explicit timing guidance: "Use this before visual targeting and again for verification." That tells the agent when in a workflow to call it. It lacks explicit exclusions or a named alternative (e.g., mouse_screenshot), so it earns a 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mouse_clickClick with the mouseADestructive
Move to x/y if supplied, then perform one left/right click or a left double click. intent is mandatory and must state the expected real-world effect. Destructive actions, bulk submissions, and close-all operations trigger an explicit user prompt.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| button | Yes | ||
| clicks | Yes | ||
| intent | Yes | Concrete expected effect, for example 'open the Save button'. | |
| target_description | No | Visible label or accessibility text of the intended target. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, but the description adds genuinely new context: the mandatory intent contract and the fact that destructive, bulk-submission, and close-all actions surface an explicit user prompt before proceeding. It also clarifies that the click only happens after an optional move when coordinates are null. It does not describe failure behavior or how the click is confirmed as landed.
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 sentences, front-loaded with the operation and followed by the mandatory-intent rule and the safety escalation. Every sentence contributes, with only minor redundancy between 'intent is mandatory' and the schema's own constraint.
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?
An output schema exists, so return values need no explanation, and the description covers the action semantics, coordinate handling, and the confirmation gate for risky actions. What remains thin is post-click behavior (waiting for UI response, failure reporting) and any mention of target_description, which is the only unaddressed field.
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 only 33%, so the description carries real weight: it explains that x/y are conditional (despite being listed as required with null allowed), that button is a single left/right choice, and that clicks covers single or double. target_description is not mentioned at all, and 'left double click' slightly understates that the schema permits clicks=2 with the right button, leaving a gap for an agent to resolve.
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 effect ('Move to x/y if supplied, then perform one left/right click or a left double click'), which tells an agent exactly what the call does relative to siblings like mouse_move or mouse_drag. It stops short of naming those siblings, so the differentiation is implied by the move-then-click phrasing 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?
It states a hard requirement for the intent argument and flags which classes of action trigger an explicit user prompt, which implies when this tool is sanctioned. However, it never says when to pick mouse_click over mouse_move, mouse_drag, or a double-click alternative, and offers no explicit 'do not use for' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mouse_dragDrag with the mouseADestructive
Drag from one point to another using a human-like curved path. intent is mandatory. High-risk semantic intent triggers an explicit user prompt.
| Name | Required | Description | Default |
|---|---|---|---|
| to_x | Yes | Horizontal coordinate in the reported coordinate space. | |
| to_y | Yes | Horizontal coordinate in the reported coordinate space. | |
| button | Yes | ||
| from_x | Yes | Horizontal coordinate in the reported coordinate space. | |
| from_y | Yes | Horizontal coordinate in the reported coordinate space. | |
| intent | Yes | ||
| target_description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive/non-idempotent/open-world, but the description adds genuinely new context: the motion is a curved human-like path, and high-risk semantic intent triggers an explicit user prompt, which tells the agent a confirmation gate exists and can block the call. It does not clarify what the drag might destroy or what a denial returns.
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, no filler, with the core action front-loaded and the mandatory-parameter constraint immediately after it.
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 7-parameter, destructive, open-world input tool with an output schema, the description covers intent gating and motion style but omits how the button choice affects behavior, what target_description is for, and what happens after a prompt is denied.
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 57%, so the schema documents the coordinates but leaves `button` and `target_description` bare. The description adds real meaning only for `intent` (mandatory, risk-evaluated), leaving two parameters undocumented in both places.
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 (drag) and the resource/scope (from one point to another) plus a distinctive behavioral trait (human-like curved path). It is distinguishishable from mouse_move and mouse_click by virtue of the press-and-release drag semantic, though it never names those siblings explicitly to draw the 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?
No guidance on when to use drag versus the obvious alternatives (mouse_move + mouse_click, or mouse_scroll for wheel-based dragging). The only conditional statement is the high-risk-intent prompt, which is behavioral, not usage routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mouse_moveMove the mouse cursorA
Move the active mouse cursor along a human-like curved path. Browser coordinates use CSS viewport pixels; Windows coordinates use physical desktop pixels. Out-of-range move targets are clamped to the surface.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | Horizontal coordinate in the reported coordinate space. | |
| y | Yes | Horizontal coordinate in the reported coordinate space. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=true, idempotentHint=false, and destructiveHint=false. The description adds useful behavioral context beyond those annotations: the movement follows a human-like curved path, coordinate spaces differ between browser and Windows, and out-of-range targets are clamped.
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 three tight sentences with no filler. It front-loads the core action and then adds the two important execution details: coordinate space and clamping behavior.
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?
An output schema exists, so the description need not explain return values. Given the two-parameter schema and the available annotations, the description provides sufficient context for correct invocation, though it could say a bit more about practical edge cases or timing.
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 baseline is 3. The description adds meaningful semantics beyond the schema by explaining that browser coordinates are CSS viewport pixels and Windows coordinates are physical desktop pixels, plus the clamping behavior for out-of-range targets.
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 and resource: it says to move the active mouse cursor along a human-like curved path. It is clear what the tool does, though it does not explicitly contrast itself with siblings such as mouse_drag or mouse_click.
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 the tool is for cursor movement, but gives no explicit guidance on when to use it versus mouse_drag, mouse_click, or mouse_position. There are no stated exclusions or alternative-routing instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mouse_positionRead the mouse positionARead-onlyIdempotent
Read the current virtual browser cursor or real Windows cursor position.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds genuine value by disclosing that two distinct cursor contexts exist (virtual browser vs real Windows), which the annotations do not convey. It does not explain which context is reported or how the two are disambiguated.
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 (virtual browser cursor, real Windows cursor) carries information the agent would not otherwise have.
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 an output schema present and annotations covering the safety profile, the description needn't explain return values. It is nearly complete; the only gap is not clarifying how the virtual vs real cursor distinction is resolved or under what configuration each applies.
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 there is no parameter semantics to document; the baseline of 4 applies. The description correctly avoids inventing 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?
States a specific verb (Read) and resource (cursor position), and clarifies the scope by naming both possible targets: the virtual browser cursor or the real Windows cursor. An agent can distinguish this from mouse_move or mouse_click without consulting schemas.
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 (when you need the current pointer coordinates) but gives no explicit routing guidance against siblings such as mouse_status or computer_observe, which could plausibly overlap. No prerequisites or exclusions are stated, leaving selection partly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mouse_screenshotCapture the active mouse surfaceARead-onlyIdempotent
Capture the active local browser tab, the cloud browser, or the full Windows desktop. The text content includes image/viewport dimensions and the coordinate space. Use that metadata to map a visual target into mouse tool coordinates.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety and idempotency, and the description adds useful behavior: it identifies the capture surfaces and says the text output includes image/viewport dimensions and coordinate space. It does not explain how the active surface is selected or any other limitations.
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 efficient sentences with the core capture surfaces front-loaded and no wasted wording. Every sentence contributes directly to understanding or usage.
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 screenshot tool with rich annotations, the description covers the main surfaces and the coordinate metadata needed for downstream mouse actions. A minor gap remains around how the active surface is determined or exactly what visual payload is returned.
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 schema semantics are minimal by definition. The baseline for a no-parameter tool is 4, and nothing in the description is needed to clarify 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?
The description uses a specific verb, "Capture," and names the resources: active local browser tab, cloud browser, or full Windows desktop. It is clear but does not explicitly distinguish itself from siblings such as computer_observe or browser_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?
It provides clear usage context: use the returned metadata to map a visual target into mouse tool coordinates. It does not state when not to use this tool or name alternatives, so it falls short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mouse_scrollScroll with the mouse wheelA
Scroll up or down at the current cursor location. One click is one wheel notch. intent is mandatory; high-risk semantic intent is confirmed first.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| clicks | Yes | ||
| intent | Yes | ||
| direction | Yes | ||
| target_description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context beyond the annotations: the confirmation gate for high-risk intent, the mandatory intent argument, and the click-to-notch ratio. It does not disclose whether x/y reposition the cursor as a side effect, nor the 20-click cap, but the safety profile is already carried by readOnlyHint=false/destructiveHint=false.
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 what the tool does, then the unit of measurement, then the mandatory-argument rule. No filler; every sentence carries information an agent needs.
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?
An output schema exists, so return values need no explanation, but with six parameters at 0% schema coverage the description leaves the optional x/y override and target_description unexplained, and the max of 20 clicks undocumented. Adequate for the core call, incomplete for the full parameter surface.
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 'clicks' (wheel notch unit) and 'intent' (mandatory, may trigger confirmation), roughly two of six parameters. It says nothing about x/y or target_description, and the schema itself mislabels y as a 'Horizontal coordinate', which the description does not resolve.
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 ('scroll up or down') and pins the effect to 'the current cursor location', plus a concrete unit ('one click is one wheel notch'). It is clearly distinguishable from mouse_move/mouse_click by the wheel-scroll framing, though it never names a sibling to contrast with.
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 only conditional guidance is 'intent is mandatory; high-risk semantic intent is confirmed first', which is a precondition rather than when-to-use/when-not guidance. Nothing tells the agent how to decide between scrolling and, say, mouse_move-then-click or computer_observe to reach off-screen content; that is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mouse_statusInspect mouse environment statusARead-onlyIdempotent
Read automatic routing state, browser companion freshness, viewport, platform, and consecutive failure count. This does not move the mouse.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety bar is low. The description still adds value by clarifying the absence of side effects ('does not move the mouse') and by naming the state it surfaces, though it says nothing about failure modes or staleness semantics of the fields.
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, both earning their place: the first front-loads the returned state, the second kills the most likely misread. No filler or restatement of the name.
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 parameters, an output schema present, and annotations covering the safety profile, the description needs only scope and side-effect clarity, which it provides. The only gap is the missing cue for when in a workflow to invoke it.
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?
Zero parameters, so the baseline of 4 applies; there is nothing for the description to disambiguate and it correctly spends no words on arguments.
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 ('Read') and enumerates the exact resources inspected: routing state, companion freshness, viewport, platform, failure count. The closing sentence 'This does not move the mouse' explicitly distinguishes it from the action siblings mouse_move/mouse_click/mouse_drag.
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 field list suggests a diagnostic/pre-flight check before acting, but the description never says when to call it or which sibling to reach for otherwise (e.g. mouse_position for coordinates).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mouse_stopEmergency stopAIdempotent
Immediately cancel the current mouse action, drain queued mouse actions, release held buttons, and send stop to the browser companion.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare it is a non-read-only, idempotent, non-destructive write; the description adds real detail about scope of effect — pending queued actions are discarded, any held button is released, and a stop signal is pushed to the browser companion. It does not say what happens if nothing is pending (silent no-op vs error), which is the remaining 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?
One sentence, front-loaded with 'Immediately', and every clause names a distinct effect of the stop. Nothing is repeated from structured fields.
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 an output schema present the description needn't explain return values, and the annotations carry the safety profile. For a zero-param emergency tool this is nearly complete; only the behavior when no action is in flight is 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?
Zero parameters, so there is no parameter semantics to document; baseline 4 applies. Nothing in the description misleads about inputs.
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 precise verbs (cancel, drain, release, send stop) against concrete resources (current mouse action, queued actions, held buttons, browser companion). No sibling tool overlaps this 'halt everything' semantics, so an agent can identify it without opening a 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 adverb 'Immediately' and the emergency-stop title imply the usage context (abort a live action or clear a stuck queue), but the description never states when to prefer it over siblings such as mouse_status or computer_observe, nor any precondition for calling it.
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.
2 tool updates
v1.0.2- Added
app_open - Changed
browser_open1 field changed- added
Input schema / properties / browserAdded value: +{ + "default": "default", + "enum": [ + "default", + "edge", + "chrome" + ], + "title": "Browser", + "type": "string" +}
10 tool updates
v1.0.0- First observed
browser_open - First observed
computer_observe - First observed
mouse_click - First observed
mouse_drag - First observed
mouse_move - First observed
mouse_position - First observed
mouse_screenshot - First observed
mouse_scroll - First observed
mouse_status - First observed
mouse_stop
TDQS
Scored across 11 tools
Most tools are cleanly separated: browser_open vs app_open split on URL vs executable, and the mouse_* family divides cleanly into action (move/click/drag/scroll), read (position/status), and control (stop). The only real overlap is computer_observe vs mouse_screenshot, both of which capture the active desktop/browser, though descriptions differentiate structural metadata from image capture.
Eight of eleven tools follow a uniform resource_action pattern with the mouse_ prefix, and browser_open/app_open extend the same pattern to other resources. computer_observe is the one outlier in prefix family naming, but it remains readable and unambiguous.
Eleven tools sit squarely in the well-scoped range for a desktop/browser automation server. Each mouse primitive (move, click, drag, scroll, stop, position, status, screenshot) earns its place without redundancy.
The pointer surface is thorough, but there is no keyboard/typing or key-press tool, which severely limits any workflow requiring text entry, form filling, or shortcuts in the browser or apps. Browser coverage also stops at opening a URL, with no navigation, tab, or element-query operations, leaving agents at dead ends for interactive pages.
Maintenance
Related MCP Connectors
Control a real browser from AI agents: navigate, click, type, screenshot, read the page.
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Eyes and hands on real Windows PCs — observe, click, type via Glasswarp API.
Give your AI hands on every computer you own. Remote control of your Windows, Mac and Linux machines from one ChatGPT, Claude or Cursor chat — even from your phone. Ask it to find out why the office server is crawling, update every PC in the house, sort out your mom's laptop from another city, or ship the site from your work machine while you're on a train. It runs commands, reads files and takes a screenshot when it needs to see the screen. You decide what each computer allows, and you can cut any of them off in a second.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables safe Windows desktop automation and computer use through natural language, including window observation, UI Automation, and execution of verified actions like clicking, typing, and scrolling.2MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to observe and control the user's live desktop by listing apps, reading accessibility trees, and performing clicks, typing, scrolling, dragging, and other input actions with per-action approvals and local audit archives.1MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to see and operate a Windows PC through mouse, keyboard, screenshots, OCR, window control, and shell commands.-
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to drive Windows desktop automation — opening and interacting with applications, native UI controls, keyboard/mouse input, files, processes, clipboard, and Chrome/Edge browsing via UI Automation and CDP. All actions pass through a safety policy with human approval, emergency stop, and deterministic verification.MIT