Skip to main content
Glama
volkan-m
by volkan-m

VNC MCP Server

An advanced Model Context Protocol (MCP) server that empowers AI agents to see, reason, and control computers via the VNC (RFB) protocol. This server transforms a standard VNC connection into a high-level "Vision-Action" interface for AI Agents.

πŸ“Š System Architecture

graph TD
    subgraph "AI Environment"
        A[AI Agent / Claude Desktop] -->|MCP Protocol| B[VNC MCP Server]
    end

    subgraph "Bridge Layer"
        B -->|Image Processing| C[Sharp / Tesseract.js]
        B -->|RFB Protocol| D[VNC Connection]
    end

    subgraph "Target System"
        D -->|Input Simulation| E[Windows / macOS / Linux]
        E -->|Framebuffer| D
    end

    style B fill:#f00,stroke:#333,stroke-width:4px

Related MCP server: servo-mcp

🌟 Key Features

πŸ‘οΈ Advanced Vision

  • Regional Screenshot: Precise screen capture of specific areas to save tokens.

  • OCR (Optical Character Recognition): Extract text from any part of the screen using Tesseract.js.

  • Visual Search: Find specific icons, buttons, or images on the screen using template matching.

  • Pixel Analysis: Get exact Hex/RGB colors of any pixel for state verification.

  • Change Detection: Wait for a specific region to update before proceeding.

πŸ•ΉοΈ Human-Like Control

  • Precise Input: Single clicks, double clicks, and smooth mouse movement.

  • Drag & Drop: Simulate complex dragging operations between coordinates.

  • Scrolling: Directional mouse wheel support (Up/Down/Left/Right).

  • Keyboard Mastery: Type strings and perform complex key combinations (e.g., Ctrl+C, Cmd+Space).

⚑ Hybrid Control (VNC + SSH Shell)

  • Background Execution: Run any shell command (bash/cmd/powershell) on the server.

  • πŸ”— Remote Execution via SSH: Run commands directly on the VNC host via integrated SSH client.

  • πŸ›‘οΈ Security Layer: Robust filtering system with platform-specific allowlists and denylists.

  • Cross-Platform Support: Works on Windows, Linux, and macOS.

  • Seamless Integration: Use terminal to install software then use VNC to control apps.

🧠 Intelligence & Health

  • OS Detection & Platform Awareness: Intelligent OS detection based on screen resolution patterns (Windows/macOS/Linux).

  • Connection Health: Real-time connectivity monitoring with latency measurement and heartbeat status.

  • Clipboard Sync: Full bidirectional clipboard support.

  • Auto-Connect: Configure server to connect immediately via environment variables.

  • Advanced Sequencing: Execute multiple actions in a single call for faster automation.

πŸš€ Getting Started

Prerequisites

  • Node.js v18+

  • A running VNC server on the target system.

  • (Optional) SSH service enabled on the target system for remote command execution.

Quick Start

  1. Clone & Install:

    git clone https://github.com/volkan-m/vnc-mcp-server.git
    cd vnc-mcp-server
    npm install
    npm run build
  2. Test Environment (Docker with Chrome & SSH): Run a full Linux desktop with Google Chrome, VNC, and SSH enabled:

    docker run -d \
      -p 5901:5900 \
      -p 2222:22 \
      -v /dev/shm:/dev/shm \
      --name mcp-vnc-chrome \
      -e VNC_PASSWORD=vncpass \
      dorowu/ubuntu-desktop-lxde-vnc:latest

    Connect to VNC at localhost:5901 and SSH at localhost:2222 (port 22 inside).

  3. MCP Client Configuration:

Google Antigravity / Claude Desktop

Add this to your claude_desktop_config.json:

{
  "mcpServers": {
    "vnc": {
      "command": "node",
      "args": ["/absolute/path/to/vnc-mcp-server/dist/index.js"],
      "env": {
        "VNC_HOST": "localhost",
        "VNC_PORT": "5901",
        "VNC_PASSWORD": "vncpass"
      }
    }
  }
}

πŸ›‘οΈ Security Configuration (Optional)

You can restrict which system commands the AI can execute:

Variable

Description

Default Denied

LINUX_DENIED_COMMANDS

Blocked Linux commands

`rm -rf,rm -f,shred,mkfs,:(){ :

WIN_DENIED_COMMANDS

Blocked Windows commands

del,format,rd,sfc,attrib

MAC_DENIED_COMMANDS

Blocked macOS commands

rm -rf,rm -f

[OS]_ALLOWED_COMMANDS

If set, ONLY these are allowed

(Empty by default)

πŸ”— Remote Execution via SSH

The server now supports direct command execution on the target machine via SSH. When connecting through vnc_connect, you can provide an optional ssh object:

{
  "host": "192.168.1.50",
  "ssh": {
    "user": "root",
    "password": "your-password",
    "port": 22
  }
}

If SSH is connected, vnc_system_command automatically routes all commands to the target machine instead of the local server.

πŸ“Š Enhanced Status Monitoring

Screen Info

vnc_get_screen_info returns detailed information about the remote session:

  • Resolution: Current display dimensions

  • OS Hint: Intelligent OS detection (Windows/macOS/Linux based on resolution patterns)

  • SSH Status: Whether SSH connection is active

Connection Health

vnc_get_connection_health provides comprehensive connectivity metrics:

  • VNC Status: Connected/Disconnected state

  • Latency: Real-time latency measurement from screen refresh operations

  • Resolution: Current display dimensions

  • SSH Status: SSH connection state

🎯 Advanced Vision Features

Screenshot with Coordinate Overlay

Use the overlay parameter in vnc_screenshot to add a grid with labeled coordinates (A1, B2, etc.) for easier navigation:

{
  "format": "jpeg",
  "quality": 85,
  "overlay": true
}

This helps AI agents understand and communicate screen positions more accurately.

OCR with Multiple Languages

The vnc_ocr_region tool supports multiple languages via Tesseract.js. Specify the language code:

{
  "x": 0,
  "y": 0,
  "width": 1920,
  "height": 1080,
  "lang": "eng+deu+fra"
}

Supported languages: eng (English), deu (German), fra (French), spa (Spanish), and many more.

Batch Actions with vnc_execute_sequence

Execute multiple input actions in a single call for faster automation:

{
  "actions": [
    {"type": "move", "x": 100, "y": 100},
    {"type": "click", "x": 100, "y": 100},
    {"type": "wait", "ms": 500},
    {"type": "type", "text": "Hello World"},
    {"type": "key", "key": "Enter"}
  ]
}

This approach reduces RPC overhead and improves responsiveness for complex automation sequences.

🧰 API Reference (Tools)

Tool

Category

Description

vnc_connect

Setup

Connect to VNC (optional: include ssh configuration).

vnc_disconnect

Setup

Disconnect from VNC server.

vnc_get_screen_info

Status

Returns resolution, OS hint (Windows/macOS/Linux), and SSH status.

vnc_get_connection_health

Status

Provides heartbeat status, latency measurement, resolution, and SSH connection state.

vnc_screenshot

Vision

Captures PNG/JPEG of full screen or region with optional coordinate overlay.

vnc_ocr_region

Vision

Extracts text from a specific region with OCR (supports multiple languages).

vnc_find_image

Vision

Finds a template image on screen with configurable tolerance.

vnc_wait_for_change

Vision

Blocks until a screen region updates within timeout.

vnc_get_pixel_color

Vision

Returns Hex/RGB color value of a specific pixel.

vnc_mouse_move

Input

Moves mouse to coordinates.

vnc_mouse_click

Input

Performs mouse clicks (Left/Middle/Right buttons).

vnc_mouse_double_click

Input

Performs a quick double click.

vnc_mouse_drag

Input

Drags from point A to point B with button control.

vnc_mouse_scroll

Input

Directional wheel scrolling (Up/Down/Left/Right).

vnc_key_tap

Input

Taps keys with modifiers (e.g., C-v, M-Tab, S-Enter).

vnc_type_string

Input

Types a sequence of characters.

vnc_execute_sequence

Input

Executes multiple input actions in a single call for performance.

vnc_system_command

System

Execute shell commands (Local or Remote via SSH).

vnc_launch_gui_app

System

Launches GUI applications on the remote desktop.

vnc_set_clipboard

System

Sets remote system clipboard text.

vnc_get_clipboard

System

Retrieves last known remote clipboard content.

πŸ›‘ License

MIT License. See LICENSE for details.

Available Tools

21 tools
vnc_connectC

Connect to a VNC server

ParametersJSON Schema
NameRequiredDescriptionDefault
sshNo
hostYes
portNo
passwordNo

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description must carry behavioral context but only says 'Connect'. It doesn't disclose that this likely establishes the primary session for other tools, whether it supports SSH tunneling, or what happens if already connected. The minimal wording leaves the side effects unclear.

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

Conciseness4/5

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

The description is a single, concise sentence with no wasted words. It's front-loaded with the essential action, though it lacks structure or supporting details; still, it is appropriately brief for such a minimal statement.

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

Completeness1/5

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

This tool has nested parameters (ssh object), no output schema, and no annotations, yet the description only provides the basic purpose. It lacks crucial context like connection prerequisites, whether it blocks, return format, or relationship to other VNC tools, making it inadequate for reliable use.

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

Parameters1/5

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

Schema description coverage is 0% and the description adds no parameter information. Host, port, password, and the nested ssh object are entirely unexplained, leaving the agent to guess their meaning and usage.

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

Purpose5/5

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

The description clearly states the tool's function: 'Connect to a VNC server' – a specific verb and resource. It distinguishes itself from sibling tools like vnc_screenshot or vnc_mouse_move by focusing on establishing the connection.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool relative to alternatives, such as using it before other VNC tools or disconnecting with vnc_disconnect. No exclusions or prerequisites are mentioned.

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

vnc_disconnectA

Disconnect from the VNC server

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, and the description accurately states the core side effectβ€”ending the VNC connection. However, it does not add details about idempotency, errors if not connected, or the effect on subsequent VNC calls.

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

Conciseness5/5

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

A single short, front-loaded sentence that states the action without redundancy or filler.

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

Completeness4/5

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

For a zero-parameter, no-output disconnect operation, the description is mostly complete. It could briefly mention that other VNC calls will fail after disconnecting, but the simplicity of the tool keeps this at a strong score.

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

Parameters4/5

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

The tool accepts zero parameters, so the schema fully defines the input. The description adds no parameter information, but none is needed; the zero-parameter baseline is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('Disconnect') and names the resource ('the VNC server'), clearly distinguishing it from sibling tools like vnc_connect.

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

Usage Guidelines3/5

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

It implies use as the inverse of vnc_connect after an active session, but it does not explicitly state when to call it or mention that it should be used only while connected.

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

vnc_execute_sequenceA

Execute a sequence of input actions (move, click, type, key, wait) in a single call for higher speed

ParametersJSON Schema
NameRequiredDescriptionDefault
actionsYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are present, so the description carries the burden. It discloses the batching and speed purpose, and the list of action types, but does not say whether actions execute in order, how errors are handled, or whether a failed action aborts the sequence. It also omits the 'double_click' action type from the schema's enum, leaving a minor inconsistency.

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

Conciseness5/5

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

A single, direct sentence that front-loads the purpose and lists supported action types. No filler or redundant phrasing.

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

Completeness3/5

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

The tool has moderate complexity (array of action objects, six action types in schema, no output schema, no annotations). The description gives a high-level purpose but omits critical context such as execution order, error behavior, and the meaning of each parameter. It is adequate for a quick reference but not fully complete for a tool that accepts nested heterogeneous objects.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It lists the action types but does not map them to the required parameters (e.g., that move/click need x,y; key needs key; type needs text; wait needs ms). The field names in the schema are terse and lack usage context, so the description provides insufficient guidance beyond the action type list.

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

Purpose5/5

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

The description opens with the verb 'Execute' and a clear resource: 'a sequence of input actions,' then lists the types (move, click, type, key, wait). The phrase 'in a single call' differentiates it from sibling tools like vnc_mouse_move and vnc_key_tap, which operate individually.

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

Usage Guidelines4/5

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

The 'single call for higher speed' explicitly frames when to use itβ€”when multiple input actions need to be batchedβ€”which distinguishes it from the single-action siblings. It doesn't explicitly state when not to use it (e.g., for conditional logic or error handling per step), but the batching context is clear.

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

vnc_find_imageC

Find a template image on the screen

ParametersJSON Schema
NameRequiredDescriptionDefault
regionNo
toleranceNo
template_base64Yes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description must carry the full burden of behavioral disclosure. It only states the function, without mentioning whether it blocks until found, returns coordinates, how it handles multiple matches, or any side effects (e.g., screen location). This is a significant gap for a tool that interacts with a remote screen.

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

Conciseness3/5

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

The description is one sentence and front-loaded with the primary action, which is good. However, it is under-specified: it lacks any detail about parameters or behavior, so it sacrifices substance for brevity. It is not appropriately sized for the tool's complexity.

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

Completeness1/5

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

For a tool with three parameters (one nested), no output schema, and no annotations, the description is severely incomplete. It fails to explain return values, matching algorithm, coordinate system, or interaction with the VNC screen. The agent cannot safely predict the tool's behavior or output.

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

Parameters1/5

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

Schema description coverage is 0%, so the description must compensate by explaining parameters. It does not mention template_base64, region, or tolerance at all. The parameter names are somewhat self-explanatory, but the description adds zero value beyond the schema, leaving the agent to guess interpretation of the nested region and tolerance defaults.

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

Purpose5/5

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

The description 'Find a template image on the screen' uses a specific verb ('Find') and resource ('template image on the screen'), clearly distinguishing it from sibling tools like vnc_ocr_region (text) or vnc_screenshot (capture). It states the exact scope and is immediately understandable.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, such as vnc_ocr_region for text or vnc_get_pixel_color for single points. The description implies a use case but does not state prerequisites, exclusions, or when another tool would be more appropriate.

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

vnc_get_clipboardA

Get the last captured clipboard text

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description must convey behavioral traits. It does disclose that the text is 'last captured' (cached/stale) rather than necessarily live, which is useful. However, it omits what happens when no text is captured, whether the operation affects the remote clipboard, and possible error/empty return behavior.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no redundant wording. Every word ('last captured', 'clipboard text') adds meaning, making it highly concise.

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

Completeness3/5

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

For a no-argument getter, the description covers the basic operation but lacks an output schema and does not specify return type, empty state, or whether clipboard capture must be started separately. This leaves some ambiguity for an agent handling results.

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

Parameters4/5

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

The tool has zero parameters and the input schema is empty, so there is no parameter information for the description to supplement. This matches the baseline 4 for no-parameter tools; the description adds no parameter semantics but none are needed.

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

Purpose4/5

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

The description clearly identifies a read operation for clipboard text, and the verb 'Get' distinguishes it from the sibling vnc_set_clipboard. However, it does not elaborate on the meaning of 'last captured' or contrast with sibling getters, so it is clear but not explicitly differentiating.

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

Usage Guidelines3/5

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

No explicit guidance is provided about when to use this tool rather than alternatives like vnc_get_screen_info or vnc_get_connection_health. The intended usage is implied by the getter name, but there are no exclusions or alternative references.

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

vnc_get_connection_healthB

Get connection health metrics

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description must carry behavioral disclosure. The verb 'get' implies a non-mutating read, but the description does not detail what metrics are returned, whether the call has side effects, or how failures are reported.

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

Conciseness5/5

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

The description is a single concise sentence that front-loads the action and resource. Every word earns its place with no filler or redundancy.

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

Completeness2/5

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

With no output schema or annotations, the description should at least hint at what health metrics are included or what the return value looks like. 'Health metrics' is vague and leaves the agent guessing about the output format and contents.

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

Parameters4/5

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

The tool has zero parameters and schema description coverage is 100%, so there is nothing the description needs to add. The baseline of 4 applies because parameter semantics are already fully covered by the schema.

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

Purpose4/5

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

Description uses the specific verb 'get' with the resource 'connection health metrics', clearly indicating a read-only status check. It is distinct from sibling tools because no other tool covers health metrics, though it does not explicitly call out the differentiation.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The intended use is implied by the name and sibling set (e.g., after vnc_connect), but there is no explicit context, prerequisites, or exclusions.

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

vnc_get_pixel_colorD

Get the color of a pixel

ParametersJSON Schema
NameRequiredDescriptionDefault
xYes
yYes

TDQS

D1.9/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'Get the color of a pixel' and does not disclose return format (e.g., hex, RGB), potential errors, or any side effects. For a read operation, it doesn't even state that it's read-only, leaving the agent without essential behavioral context.

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

Conciseness3/5

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

The description is under-specified rather than concise; it's a single short sentence with no waste, but it lacks essential details. It is front-loaded, but the brevity prevents it from being useful. This is minimal viable, but not appropriately sized for a tool with no annotations or output schema.

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

Completeness1/5

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

With no output schema, no annotations, and minimal parameter info, the description is the only source of context. It fails to explain the coordinate system, color format, or any error behavior. The tool is essentially undocumented, leaving the agent to guess critical details.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does nothing to explain the parameters x and y. It doesn't say they are screen coordinates, their units, or their origin. The description adds no value beyond the raw schema, which is a clear gap for a two-parameter tool.

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

Purpose3/5

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

The description 'Get the color of a pixel' states the verb 'get' and the resource 'color of a pixel', but it lacks scope. It doesn't clarify which pixel, in what coordinate system, or on which display, making it somewhat vague. It does not distinguish itself from siblings like vnc_screenshot or vnc_find_image, which also deal with pixel-level data.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternative tools. The description provides no context for choosing this method, no exclusions, and no mention of prerequisites. This is a simple 'get' statement with no usage direction.

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

vnc_get_screen_infoA

Get screen resolution and OS hint

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It indicates the tool retrieves screen resolution and OS hint, implying a read operation, but it does not elaborate on return format, whether a connection is required, or any side effects. This is adequate for a trivial getter but leaves room for more behavioral detail.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that states exactly what the tool does with no wasted words. It is concise and immediately clear.

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

Completeness4/5

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

Given the tool's simplicity (no params, no output schema), the description is largely complete. It names the key outputs (screen resolution and OS hint) and fits within the VNC tool set. However, it could be more explicit about the exact return structure, so it is not a perfect 5.

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

Parameters4/5

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

The tool has zero parameters, so schema coverage is 100% by default. With no parameters to explain, the description does not need to compensate; the baseline of 4 is appropriate.

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

Purpose5/5

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

The description states the specific verb 'Get' and the resource 'screen resolution and OS hint', clearly distinguishing it from sibling tools like vnc_screenshot or vnc_get_pixel_color. It unambiguously identifies what the tool does.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, nor any exclusions or context. The description merely states the function without indicating prerequisites (e.g., active VNC connection) or when a different tool might be more appropriate.

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

vnc_key_tapA

Tap a key (e.g., 'Enter', 'C-c')

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes

TDQS

A3.8/5.0
Behavior3/5

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

The word 'tap' implies a press-and-release action, and the 'C-c' example indicates support for key combinations. However, it does not disclose error handling, connection requirements, or whether modifiers are processed natively.

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

Conciseness5/5

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

The description is one short sentence and includes illustrative examples. It is well-structured and free of redundant information.

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

Completeness4/5

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

For a simple one-parameter tool, the description is adequate but minimal. It lacks any mention of usage context or edge cases, but the low complexity and clear examples keep it from being incomplete.

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

Parameters4/5

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

The schema only defines a 'key' string with no description. The description adds examples ('Enter', 'C-c') that inform the expected format, which partially compensates for the 0% schema coverage.

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

Purpose5/5

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

The description uses a specific verb 'tap' and identifies the resource (key), with examples ('Enter', 'C-c') that clarify the scope. This distinguishes it from sibling tools like vnc_type_string or mouse click actions.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool instead of alternatives such as vnc_type_string or vnc_mouse_click. The description simply states what it does without context or exclusions.

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

vnc_launch_gui_appB

Launch a GUI application on the remote desktop (Linux focus)

ParametersJSON Schema
NameRequiredDescriptionDefault
argsNoOptional arguments
app_commandYesThe command to run (e.g., 'google-chrome' or 'firefox')

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only mentions 'Linux focus' but does not state whether the launch blocks, what side effects it has, or any prerequisites. For a mutation tool, this is a significant gap.

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

Conciseness4/5

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

The description is a single concise sentence, front-loaded with the core purpose. It earns its place without unnecessary fluff, though it could have included more guidance without becoming verbose.

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

Completeness3/5

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

For a simple two-parameter launch tool without an output schema, this is minimally adequate. However, it lacks disambiguation from similar siblings and does not mention expected outcomes, leaving some context incomplete.

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

Parameters3/5

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

Schema description coverage is 100% – both app_command and args have descriptions. The tool description adds no parameter-specific meaning, but the schema already covers it, so a baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Launch', the resource 'GUI application', and the target 'remote desktop (Linux focus)', which distinguishes it from sibling tools like vnc_system_command. It is specific and unambiguous.

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

Usage Guidelines3/5

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

Usage is implied by the word 'GUI' – this tool is for launching graphical apps, not CLI commands. However, it does not explicitly state when to use this over alternatives like vnc_system_command or vnc_execute_sequence, nor any exclusions.

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

vnc_mouse_clickD

Click the mouse

ParametersJSON Schema
NameRequiredDescriptionDefault
xYes
yYes
buttonNo

TDQS

D1.6/5.0
Behavior1/5

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 reveals nothing about side effects, coordinate handling, button defaults, or whether the mouse is moved first. It is entirely opaque.

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

Conciseness2/5

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

The description is extremely short (four words), but this is under-specification rather than conciseness. It omits essential information that should be present, so the brevity is not a virtue.

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

Completeness1/5

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

The tool has 3 parameters with 0% schema coverage, no annotations, and no output schema. The description fails to provide even basic context about what clicking does, where it clicks, or how buttons are specified, making it inadequate for any agent to use correctly.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not compensate. It fails to mention the required x and y coordinates or the optional button parameter, leaving all parameter semantics undocumented.

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

Purpose3/5

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

The description states the action ('Click the mouse') with a clear verb and resource, but it doesn't distinguish from sibling tools like vnc_mouse_double_click or vnc_mouse_move. It provides no context about coordinates or button selection, making it minimally clear but not differentiated.

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

Usage Guidelines1/5

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 such as vnc_mouse_double_click or vnc_mouse_move. The description is a bare verb phrase with no context about prerequisites, typical use cases, or exclusions.

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

vnc_mouse_double_clickC

Double click the mouse

ParametersJSON Schema
NameRequiredDescriptionDefault
xYes
yYes
buttonNo

TDQS

C2.3/5.0
Behavior1/5

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 merely restates the tool's name without adding any context about the double-click event, button selection, timing, or potential side effects. It is essentially a tautology.

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

Conciseness2/5

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

The description is extremely brief, but this is under-specification rather than effective conciseness. The single sentence does not earn its place because it adds no information beyond the tool name, failing to provide useful structure or content.

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

Completeness1/5

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

Given the lack of annotations, no output schema, and three parameters requiring explanation, the description is woefully incomplete. It omits coordinate semantics, button behavior, and any operational details needed for correct invocation.

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

Parameters1/5

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

The schema has 3 parameters (x, y, button) with 0% coverage in the description. The description does not mention any parameters, so it provides no meaning beyond the schema's bare types and defaults.

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

Purpose5/5

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

The description 'Double click the mouse' clearly states the action with a specific verb and resource, and distinguishes it from sibling tools like vnc_mouse_click (single click) and vnc_mouse_drag. The purpose is unambiguous.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as vnc_mouse_click or vnc_mouse_drag. There is no context, prerequisites, or exclusions mentioned.

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

vnc_mouse_dragC

Perform a drag and drop

ParametersJSON Schema
NameRequiredDescriptionDefault
endXYes
endYYes
buttonNo
startXYes
startYYes

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations provided, the description bears full responsibility for disclosing behavior, but it simply says 'Perform a drag and drop' without explaining the mechanics (e.g., button press, movement, release). It fails to inform the agent about timing, coordinates handling, or potential side effects.

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

Conciseness3/5

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

The description is extremely concise, consisting of a single sentence. While there is zero waste, it is under-specified and lacks essential detail, making it merely short rather than appropriately concise for a tool with this complexity.

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

Completeness1/5

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

Given the tool has 5 parameters, no annotations, and no output schema, the description is grossly incomplete. It does not explain return values, prerequisites, coordinate system, or any behavioral context, making it inadequate for correct invocation.

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

Parameters1/5

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

Schema description coverage is 0%, and the description mentions none of the parameters (startX, startY, endX, endY, button). It adds no meaning beyond the raw schema, leaving the agent without clues about what values to provide or their significance.

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

Purpose4/5

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

The description 'Perform a drag and drop' clearly identifies the action as a mouse drag-and-drop operation, distinguishing it from sibling tools like vnc_mouse_move and vnc_mouse_click. While it is somewhat generic, it is specific enough to convey the core purpose.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as vnc_mouse_click or vnc_mouse_move. The description provides no context about drag-and-drop scenarios, leaving the agent to infer usage solely from the tool name.

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

vnc_mouse_moveD

Move the mouse

ParametersJSON Schema
NameRequiredDescriptionDefault
xYes
yYes

TDQS

D1.3/5.0
Behavior1/5

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

With no annotations provided, the description carries full responsibility for disclosing behavior, but it reveals nothing beyond the tool's name. There is no mention of coordinate system (e.g., screen vs window), movement speed, whether the pointer moves instantly or smoothly, or any side effects.

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

Conciseness2/5

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

The description is a single short sentence, which is under-specification rather than effective conciseness. It is brief but at the expense of all useful information, so it does not earn credit for efficiency.

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

Completeness1/5

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

For a tool with two required parameters and no annotations or output schema, the description is completely inadequate. It fails to explain coordinate semantics, usage context, or how it differs from sibling mouse tools, making it impossible for an agent to use correctly without additional knowledge.

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

Parameters1/5

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

The input schema defines x and y as numbers but provides no descriptions, and schema description coverage is 0%. The description adds no meaning about what these coordinates represent, their units, or their bounds, failing to compensate for the schema's lack of detail.

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

Purpose2/5

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

The description 'Move the mouse' merely restates the tool name without specifying the target coordinate system, context, or distinction from similar tools like vnc_mouse_drag or vnc_mouse_click. It states the verb and resource but offers no meaningful elaboration, making it a tautology.

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

Usage Guidelines1/5

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 vnc_mouse_drag or vnc_mouse_click. The description provides no context, prerequisites, or exclusions, leaving the agent without any decision support.

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

vnc_mouse_scrollC

Scroll the mouse

ParametersJSON Schema
NameRequiredDescriptionDefault
amountNo
directionYes

TDQS

C2.2/5.0
Behavior1/5

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

With no annotations, the description carries full burden but discloses nothing about behavior, side effects, or safety. 'Scroll the mouse' is almost tautological and does not explain whether it scrolls the wheel, moves a scrollbar, or has any cumulative effects.

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

Conciseness2/5

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

Three words is very short, but this is under-specification, not effective conciseness. The description does not convey enough information to be useful, so it fails to 'earn its place.'

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

Completeness2/5

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

For a simple two-parameter tool without an output schema, the description still omits key context like how the scroll is performed (e.g., wheel events) and the meaning of the default amount. This leaves the tool underspecified.

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

Parameters1/5

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

Schema description coverage is 0%, yet the description does not compensate by explaining 'direction' or 'amount'. It adds no meaning beyond the schema field names, leaving the agent without semantics for these parameters.

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

Purpose4/5

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

The description 'Scroll the mouse' uses a specific verb and resource, and clearly distinguishes from sibling tools like vnc_mouse_move, vnc_mouse_drag, and vnc_mouse_click. However, it lacks explicit mention of the wheel or direction, making it slightly ambiguous.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like vnc_mouse_move or vnc_mouse_drag. There is no mention of prerequisites, typical scenarios, or exclusions.

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

vnc_ocr_regionB

Extract text from a specific region using OCR

ParametersJSON Schema
NameRequiredDescriptionDefault
xYes
yYes
langNoeng
widthYes
heightYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description is the sole source of behavioral transparency. It discloses that the tool performs OCR on a region, but it does not mention coordinate system, return format, performance considerations, or non-destructive nature. This leaves significant behavioral ambiguity.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that wastes no words. It clearly states the action and object without unnecessary detail.

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

Completeness2/5

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

The tool has 5 parameters, no output schema, and no annotations, so the description must carry more weight. It explains the core purpose but omits critical context such as what the OCR output looks like, whether coordinates are screen-absolute, and how the language parameter affects behavior. This is insufficient 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.

Parameters2/5

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

Schema description coverage is 0% and the description adds little param semantics. 'Specific region' vaguely implies x, y, width, height define a region, but there is no explanation of units, coordinate origin, or the meaning of the optional 'lang' parameter beyond the schema's default.

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

Purpose5/5

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

The description clearly states the tool extracts text from a specific region using OCR, with a specific verb ('Extract') and resource ('text from a region'). Among the sibling tools, none offer OCR functionality, so this is well differentiated.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like vnc_screenshot or vnc_find_image. The description only states what it does, not the context or conditions in which it should be chosen.

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

vnc_screenshotC

Capture a screenshot

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNojpeg
regionNo
overlayNoDraw a coordinate grid (A1, B2...) to help with navigation
qualityNo

TDQS

C2.2/5.0
Behavior1/5

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

Annotations are absent, so the description must disclose behavioral traits. It does not mention how the screenshot is returned (file path, base64), whether default is full-screen, or how format/quality/region affect output; it only restates the obvious action.

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

Conciseness2/5

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

The description is maximally concise, but it is under-specified rather than appropriately sized. For a tool with four parameters and no output schema, a single sentence without operational details is not enough.

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

Completeness2/5

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

Given the moderate complexity of the input schema, the absence of output schema and annotations, the description is far from complete. It fails to explain return values, default capture behavior, or how region/format parameters work.

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

Parameters1/5

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

Schema description coverage is only 25% (overlay), and the description adds no parameter semantics. It does not explain region coordinates, format options, or quality defaults; this is a significant gap because the schema alone is insufficient.

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

Purpose4/5

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

The description states a clear action ('Capture') and resource ('screenshot'), so the tool's primary purpose is evident. However, it offers no differentiation from sibling tools such as vnc_ocr_region or vnc_find_image, which also involve image capture or analysis.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives. No mention of scenarios, exclusions, or references to sibling tools; the description simply states the action without context.

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

vnc_set_clipboardC

Set the remote clipboard

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes

TDQS

C2.5/5.0
Behavior1/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only restates the tool's function ('Set the remote clipboard') and provides no details about side effects, overwriting behavior, requirements, or error conditions. The agent receives no transparency beyond the basic action.

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

Conciseness3/5

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

The description is a single short sentence with no filler, but it is under-specified rather than efficiently complete. It earns a moderate score for brevity but loses points because it lacks critical context that a fuller description would provide.

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

Completeness2/5

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

The tool has a simple schema (one string parameter) and no output schema or annotations, so the description must provide the context. It gives the core action and resource, but omits any mention of prerequisites, return values, or behavior in edge cases, making it incomplete for an agent to use confidently.

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

Parameters1/5

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

The description does not elaborate on the required 'text' parameter at all. Schema description coverage is 0%, so the description must compensate, but it fails to explain what 'text' represents, any constraints, or how it is used. The parameter name alone is insufficient.

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

Purpose5/5

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

The description 'Set the remote clipboard' clearly specifies the action (set) and resource (remote clipboard), distinguishing it from sibling vnc_get_clipboard which retrieves the clipboard. It is unambiguous and directly states what the tool does.

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

Usage Guidelines2/5

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

No usage guidance is provided. The description does not mention when to use this tool, any prerequisites (e.g., an active VNC connection), or alternatives such as vnc_get_clipboard. Usage is only inferred from the name and description.

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

vnc_system_commandB

Execute a shell command in the background on the server

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYesThe shell command to run

TDQS

B3.2/5.0
Behavior2/5

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

The phrase 'in the background' indicates asynchronous execution, but there is no disclosure of output handling, environment, user privileges, error behavior, or side effects. With no annotations, the description carries the full burden and falls short.

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

Conciseness5/5

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

The description is one clear, front-loaded sentence with no filler words. Every word adds value and it is appropriately sized for the simple schema.

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

Completeness2/5

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

As a shell command execution tool with no annotations or output schema, the description should provide more context about return values, blocking behavior, security implications, or potential side effects. The current description is minimal and incomplete for a potentially dangerous operation.

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

Parameters3/5

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

Schema coverage is 100% with 'command' described as 'The shell command to run'. The description adds no additional meaning beyond the schema, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states a specific action (execute a shell command) on a specific resource (the server), which distinguishes it from sibling VNC interaction tools. It is not tautological and adds the detail of running in the background.

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

Usage Guidelines2/5

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

No guidance is provided for when to use this tool vs. alternatives such as vnc_execute_sequence or vnc_launch_gui_app. It does not mention prerequisites, security considerations, or any context for appropriate use.

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

vnc_type_stringC

Type a string

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description bears full responsibility for behavioral disclosure, but it only states the action 'Type a string.' It does not mention focus requirements, timing, special character handling, or error conditions, leaving the agent without insight into side effects or prerequisites.

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

Conciseness5/5

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

The description is a single, concise sentence with no filler. It is front-loaded, stating exactly what the tool does. For such a simple tool, this length is appropriate and every word contributes meaning.

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

Completeness2/5

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

Despite the simple one-parameter design, the description lacks essential context: it doesn't mention that this tool is for VNC sessions, doesn't reference related tools, and doesn't note any preconditions or side effects. The absence of annotations and output schema further reduces completeness. A brief note about connection requirements or constraints would meaningfully improve it.

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

Parameters3/5

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

Schema coverage is 0% and there is no property description, so the description must clarify the parameter. 'Type a string' implies that the required 'text' parameter is the string to type, which is a reasonable inference. However, it adds no additional constraints, formats, or examples beyond the schema's type declaration.

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

Purpose4/5

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

The description 'Type a string' uses a clear verb and resource, indicating the tool types a textual string. It distinguishes from siblings like vnc_key_tap (single key) and vnc_set_clipboard (clipboard) by focusing on typing an arbitrary string, though it doesn't explicitly reference these alternatives.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool vs alternatives. There is no mention of scenarios such as multi-character typing versus single-key taps, nor any exclusions or preconditions (e.g., active VNC connection). The description is purely existential without contextual direction.

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

vnc_wait_for_changeC

Wait until a region changes

ParametersJSON Schema
NameRequiredDescriptionDefault
xYes
yYes
widthYes
heightYes
timeoutNo

TDQS

C2.8/5.0
Behavior2/5

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

The description carries the full burden since no annotations are provided, but it only states 'wait until a region changes'. It fails to disclose key behaviors such as timeout behavior (e.g., error on timeout versus returning a status), whether it blocks synchronously, how changes are detected, or what the return value is. This leaves significant ambiguity for the agent.

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

Conciseness3/5

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

The description is concise (one sentence, five words) with no wasted words, making it structurally efficient. However, it is overly terse and sacrifices necessary clarity, such as explaining the region parameters or timeout semantics, so it does not earn a high score.

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

Completeness1/5

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

Given the tool has 5 parameters, no annotations, no output schema, and zero schema parameter descriptions, the description is drastically under-specified. It omits critical context like how the region is defined, timeout behavior, return values, and any prerequisites (e.g., an active connection). This is far from a complete description.

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

Parameters1/5

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

Schema description coverage is 0%, so the description must compensate for parameter meanings. It does not explain that x, y, width, and height define the region rectangle, nor does it describe the timeout parameter's role. The description adds no meaning beyond what the parameter names imply, which is insufficient for such a parameterized tool.

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

Purpose5/5

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

The description 'Wait until a region changes' clearly uses a specific verb ('Wait') and resource ('region') with a change condition, making the tool's purpose unambiguous. It distinguishes itself from sibling tools like vnc_screenshot or vnc_get_pixel_color, as none of them describe a blocking wait-for-change operation.

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

Usage Guidelines3/5

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

The description implies the usage: wait for a screen region to change. However, it does not explicitly state when to use this tool versus alternatives (e.g., polling with vnc_screenshot), nor does it mention any exclusions or prerequisites. The need to wait for a change is implied but not verbally contrasted with other methods.

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

Tool Schema Changelog

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

  1. 21 tool updatesv1.0.0
    • First observedvnc_connect
    • First observedvnc_disconnect
    • First observedvnc_execute_sequence
    • First observedvnc_find_image
    • First observedvnc_get_clipboard
    • First observedvnc_get_connection_health
    • First observedvnc_get_pixel_color
    • First observedvnc_get_screen_info
    • First observedvnc_key_tap
    • First observedvnc_launch_gui_app
    • First observedvnc_mouse_click
    • First observedvnc_mouse_double_click
    • First observedvnc_mouse_drag
    • First observedvnc_mouse_move
    • First observedvnc_mouse_scroll
    • First observedvnc_ocr_region
    • First observedvnc_screenshot
    • First observedvnc_set_clipboard
    • First observedvnc_system_command
    • First observedvnc_type_string
    • First observedvnc_wait_for_change

TDQS

B3/5.0

Scored across 21 tools

Disambiguation5/5

Each tool targets a distinct action on the VNC server, such as connection management, mouse/keyboard input, screen analysis, clipboard, and system commands. The boundaries between tools are clear, with no overlapping purposes that would cause misselection.

Naming Consistency5/5

All tools follow a consistent 'vnc_' prefix with snake_case verb_noun naming (e.g., vnc_connect, vnc_mouse_move, vnc_get_screen_info). The pattern is uniform and predictable, with getters consistently using 'get_'.

Tool Count4/5

At 21 tools, the count is slightly above the typical well-scoped range (3-15), but each tool serves a distinct and necessary function for remote desktop automation. The slight heaviness is justified by the breadth of VNC operations covered.

Completeness5/5

The tool set covers the full spectrum of VNC operations: connect/disconnect, screen capture and analysis (screenshot, OCR, image finding), input methods (mouse, keyboard, typing), clipboard access, system commands, and GUI launching. There are no obvious missing operations that would hinder normal workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables MCP-compatible LLMs to interact with any desktop accessible over VNC, providing tools for screen reading (OCR), mouse and keyboard control, and automation.
    13
    AGPL 3.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to see and control your desktop with tools for screenshots, clicks, typing, and more, all locally on macOS and Windows.
    80 npm
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to remotely control computers via VNC, including mouse movement, clicking, keyboard input, text entry, and screen capture across Windows, Linux, and macOS systems.
    6
    107 npm
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    This server enables AI agents to operate Windows and Linux computers by observing the screen, understanding the UI through accessibility, OCR, and vision, and performing mouse, keyboard, window, clipboard, and system actions with verification and recovery.
    29
    MIT