Skip to main content
Glama
PopBot

Parallels Pro MCP Server

Parallels Pro MCP Server

CI License: MIT Python >=3.10

A Model Context Protocol (MCP) server for Parallels Desktop on macOS. It enables LLM agents—such as Claude Desktop, ChatGPT Codex, Cursor, and Antigravity—to discover, control, automate, and inspect Parallels virtual machines over standard MCP stdio.

Parallels Pro MCP Server MCP server – quality and maintenance score on Glama

Highlights

  • Full Lifecycle Management: Start, gracefully stop (ACPI), and suspend virtual machines.

  • Cross-Platform Guest Execution: Execute commands inside Windows, Linux, or macOS guests with explicit argument vectors (argv), avoiding host shell injection risks.

  • Readiness Probing: Automatically detects guest OS and polls until Parallels Tools and the guest execution layer respond.

  • Bi-Directional File Transfer: Stream files and directories directly between host and guest over stdin/stdout tar archives without requiring network mounts or SMB credentials (vm_copy_to_guest, vm_copy_from_guest).

  • Dynamic Host Folder Sharing: Mount and unmount host directories into guest VMs at runtime with read-only or read-write permissions (vm_share_folder, vm_unshare_folder).

  • Instant Sandboxing & Ephemeral Clones: Spin up fast linked clones in seconds for disposable agent test environments, and permanently delete sandboxes with confirmation (vm_clone, vm_delete).

  • Headless Execution & Network Simulation: Run VMs headlessly in the background, or simulate network degradation (edge, 3g, wifi, 100% packet loss, offline) for resilience testing (vm_set_headless, vm_set_network_condition).

  • Visual VM Inspection: Capture real-time screenshots of the VM display buffer for multimodal AI analysis (vm_screenshot).

  • Synthetic Input & Hotkeys: Send keyboard events and hotkey combinations (Ctrl+Alt+Del, Win+R, Enter, Esc) to interact with GUI dialogs and prompts (vm_send_keys).

  • Snapshot Lifecycle: List, create, safely revert, and delete snapshots with mandatory confirmation flags (confirm: true).

  • Pre-flight Diagnostic Doctor: Built-in environment and license validator (parallels-pro-mcp doctor and scripts/doctor.sh).


Related MCP server: VMware Workstation MCP

Tool Reference

Tool

Purpose

Confirmation Required

Annotations

vm_list

Discover registered VMs and power states

No

Read-Only

vm_status

Inspect detailed VM status, OS, tools version, and uptime

No

Read-Only

vm_start

Start a VM by name or UUID

No

Power Change

vm_stop

Request graceful ACPI shutdown (never force-kills)

No

Destructive

vm_suspend

Suspend VM and preserve guest memory

No

Destructive

vm_wait_ready

Poll until the guest OS answers execution probes

No

Readiness

vm_exec

Run an argv vector in the guest (supports custom user)

No (Privileged)

Guest Command

vm_copy_to_guest

Stream files or directories from host into guest filesystem

No

File Transfer

vm_copy_from_guest

Stream files or directories from guest onto host filesystem

No

File Transfer

vm_share_folder

Mount a host directory into the guest (rw or ro)

No

State Mutating

vm_unshare_folder

Remove a previously shared host directory

No

State Mutating

vm_clone

Clone a VM (fast linked clone or deep copy)

No

State Mutating

vm_delete

Permanently delete a VM and its disks

confirm: true

Destructive

vm_set_headless

Configure headless vs GUI window startup mode

No

State Mutating

vm_set_network_condition

Simulate degraded network profiles (3g, wifi, loss, off)

No

State Mutating

vm_screenshot

Capture current VM screen to host PNG

No

Read-Only

vm_send_keys

Send synthetic keystrokes or chords (e.g. ctrl+alt+del, win+r)

No

Guest Command

vm_optimize_windows

Add Windows Defender exclusions and set PowerShell ExecutionPolicy Bypass

No

State Mutating

vm_doctor

Pre-flight environment diagnostics for macOS host and guest OS

No

Read-Only

vm_changelog

Read release notes and updates over MCP

No

Read-Only

snapshot_list

List all snapshots for a VM

No

Read-Only

snapshot_create

Create a snapshot with name and optional description

confirm: true

State Mutating

snapshot_revert

Revert VM state to a specified snapshot

confirm: true

State Mutating

snapshot_delete

Permanently delete a snapshot to reclaim host disk space

confirm: true

State Mutating


Tool Usage & Cookbook

1. Instant Ephemeral Sandboxing

Create an isolated linked clone in seconds, run tests headlessly, and destroy it when finished:

# Spin up an instant linked clone sharing the base disk
vm_clone(vm="Windows 11", name="Win11-Worker-1", linked=True)

# Run headlessly without displaying a GUI window on the desktop
vm_set_headless(vm="Win11-Worker-1", enabled=True)

# Boot and wait until guest tools are ready
vm_start(vm="Win11-Worker-1")
vm_wait_ready(vm="Win11-Worker-1", timeout_s=120)

# ... perform testing or build tasks ...

# Graceful stop and permanent teardown
vm_stop(vm="Win11-Worker-1")
vm_delete(vm="Win11-Worker-1", confirm=True)

2. Bi-Directional File Transfer

Stream files or entire directory trees between host and guest over stdin/stdout tar archives without needing network mounts or SMB credentials:

# Push local build artifact into the guest Windows Temp folder
vm_copy_to_guest(
    vm="Windows 11",
    host_path="./dist/myapp.exe",
    guest_path=r"C:\Temp\myapp.exe"
)

# Pull test logs or crash dumps back onto the host
vm_copy_from_guest(
    vm="Windows 11",
    guest_path=r"C:\Temp\test-results",
    host_path="./reports/test-results"
)

3. Dynamic Host Folder Sharing

Mount local host directories directly into the VM at runtime:

# Share a host repository with read-only protection
vm_share_folder(
    vm="Windows 11",
    name="source_code",
    host_path="~/projects/myapp",
    mode="ro"
)

# Unmount the share when done
vm_unshare_folder(vm="Windows 11", name="source_code")

4. GUI Interaction & Screen Analysis

Interact with native GUI dialogs, installers, or Windows UAC prompts:

# Capture what is currently on the VM screen
vm_screenshot(vm="Windows 11")

# Press Win+R to open the Run dialog
vm_send_keys(vm="Windows 11", combination="win+r")

# Type a command and press Enter
vm_send_keys(vm="Windows 11", text="notepad.exe", keys=["enter"])

# Dismiss a modal with Escape
vm_send_keys(vm="Windows 11", keys=["esc"])

5. Network Simulation & Resilience Testing

Simulate poor connections or complete offline states:

# Throttle bandwidth and latency to emulate a 3G mobile link
vm_set_network_condition(vm="Windows 11", profile="3g")

# Simulate a network blackout (100% packet loss)
vm_set_network_condition(vm="Windows 11", profile="100-percent-loss")

# Restore normal network conditions
vm_set_network_condition(vm="Windows 11", profile="off")

6. Snapshot Baselines

Create rollback points before mutating system state:

# List snapshots
snapshot_list(vm="Windows 11")

# Create a checkpoint
snapshot_create(
    vm="Windows 11",
    name="clean-state",
    description="Clean baseline before test execution",
    confirm=True
)

# Revert back to the checkpoint
snapshot_revert(vm="Windows 11", snapshot="clean-state", confirm=True)

# Delete snapshot to reclaim host disk space
snapshot_delete(vm="Windows 11", snapshot="clean-state", confirm=True)

7. Environment Pre-Flight & Guest Health (vm_doctor)

Run host and guest diagnostics to verify licensing, CLI availability, and runtime readiness:

# Run pre-flight health check on host and Windows guest
report = vm_doctor(vm="Windows 11")
for check in report.host_checks + report.guest_checks:
    print(f"[{check.status}] {check.name}: {check.detail}")

8. Windows Guest Automation Optimization (vm_optimize_windows)

Configure Windows Defender real-time scanning exclusions and set PowerShell ExecutionPolicy to Bypass to eliminate EPERM file-locking during builds:

# Optimize Windows guest for fast builds and testing
vm_optimize_windows(
    vm="Windows 11",
    exclusion_paths=[r"C:\Temp", r"C:\workspace"],
    exclusion_processes=["node.exe", "npm.cmd", "pnpm.cmd", "git.exe"]
)

Prerequisites

  1. macOS with Parallels Desktop Pro or Business Edition installed.

    • Note: Parallels Desktop Pro or Business is required for the prlctl command-line utility and prlctl exec guest execution.

  2. Parallels Tools installed inside each target guest VM.

  3. Python 3.10+ and uv (recommended).

Verify Your Environment

Before connecting an MCP client, run the pre-flight diagnostic:

# Using uv:
uv run parallels-pro-mcp doctor

# Or using the standalone script:
./scripts/doctor.sh

Client Configuration

Claude Desktop

Add the following to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "parallels-pro": {
      "command": "uvx",
      "args": ["parallels-pro-mcp-server"],
      "env": {
        "PARALLELS_DEFAULT_VM": "Windows 11",
        "PARALLELS_ARTIFACT_DIR": "~/.cache/parallels-mcp"
      }
    }
  }
}

Or when running from a local checkout:

{
  "mcpServers": {
    "parallels-pro": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "/path/to/parallels-pro-mcp-server",
        "parallels-pro-mcp"
      ]
    }
  }
}

Codex / ChatGPT Desktop

In ~/.codex/config.toml:

[mcp_servers.parallels-pro]
command = "uv"
args = ["run", "--project", "/path/to/parallels-pro-mcp-server", "parallels-pro-mcp"]
startup_timeout_sec = 30
tool_timeout_sec = 600

[mcp_servers.parallels-pro.env]
PARALLELS_DEFAULT_VM = "Windows 11"
PARALLELS_ARTIFACT_DIR = "~/.cache/parallels-mcp"

Google Antigravity (Gemini CLI)

Add the server to ~/.gemini/config/mcp_config.json:

{
  "mcpServers": {
    "parallels-pro": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "/path/to/parallels-pro-mcp-server",
        "parallels-pro-mcp"
      ],
      "env": {
        "PARALLELS_DEFAULT_VM": "Windows 11",
        "PARALLELS_ARTIFACT_DIR": "~/.cache/parallels-mcp"
      }
    }
  }
}

Or using uvx:

{
  "mcpServers": {
    "parallels-pro": {
      "command": "uvx",
      "args": ["parallels-pro-mcp-server"]
    }
  }
}

Environment Variables

Variable

Description

Default

PARALLELS_DEFAULT_VM

Fallback VM name or UUID used when a tool argument is omitted

None

PARALLELS_ARTIFACT_DIR

Host directory where captured screenshots and artifacts are stored

~/.cache/parallels-pro-mcp-server


Safe Operating Sequence for Agents

  1. Discover: Call vm_list to see available VMs and states.

  2. Inspect: Call vm_status(vm="...") to verify guest tools and power status.

  3. Optional Sandbox: For risky or destructive test sessions, call vm_clone(vm="...", name="agent-sandbox", linked=true) to create a fast, isolated linked clone.

  4. Power Up: If stopped, call vm_start followed by vm_wait_ready to ensure guest tools are responsive.

  5. Inspect Desktop: Call vm_screenshot to visually check if dialogs or login prompts are blocking the session.

  6. Snapshot Baseline: Call snapshot_create(vm="...", name="clean-baseline", confirm=true) before performing major tasks.

  7. Transfer & Execute: Use vm_copy_to_guest to stage scripts, vm_exec with explicit argv arrays to run commands, and vm_copy_from_guest to retrieve build artifacts.

  8. Teardown: Revert via snapshot_revert or destroy ephemeral sandboxes via vm_delete(vm="agent-sandbox", confirm=true).


Security Model

  • Automation Bridge: This server delegates guest execution directly to prlctl exec.

  • Privilege & Shared Folders: If your VM has Parallels Shared Folders enabled (e.g. \\Mac\Home on Windows or /media/psf/ on Linux), guest commands can read and write to your host filesystem. Always run only on trusted virtual machines.

  • Explicit Argv Only: vm_exec only accepts argument vectors (list[str]), preventing shell injection on the host.


Development & Testing

# Clone the repository
git clone https://github.com/PopBot/parallels-pro-mcp-server.git
cd parallels-pro-mcp-server

# Install dependencies and sync environment
uv sync

# Run diagnostic doctor
uv run parallels-pro-mcp doctor

# Run test suite with test coverage reporting
uv run coverage run --source=parallels_mcp -m unittest discover -s tests
uv run coverage report -m

For instructions on semantic versioning, GitHub Releases, and PyPI distribution, see the Releasing & Publishing Guide.


License

This project is licensed under the MIT License.


Not affiliated with Parallels International GmbH.

Built with ♥️ as a collaboration between human and AI.

Available Tools

24 tools
snapshot_createCreate Parallels snapshotB
Destructive

Create a snapshot of the current VM state after explicit confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
vmYes
nameYes
confirmNo
descriptionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
vmYes
uuidYes
actionYes
messageYes
snapshot_idNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, and the description adds that confirmation is required ('after explicit confirmation'). This introduces a behavioral requirement beyond the annotation, but it does not clarify the confirmation mechanism or consequences of not confirming. No contradiction exists with the annotations.

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, compact sentence with no redundant words. It is efficient and earns its place by stating the core purpose, though it omits necessary details.

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 destructive tool with four parameters and no schema description coverage, the description is insufficient. It does not explain the required parameters, the confirmation mechanism, or the expected output, leaving the agent without critical context to invoke it correctly.

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?

The description provides no explanation of any parameters (vm, name, confirm, description). With 0% schema description coverage, the agent receives no additional meaning about these fields from the description. It only hints at the VM state, not the specific parameters.

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 action ('create') and the resource ('snapshot of the current VM state'). It distinguishes itself from sibling tools like snapshot_delete, snapshot_revert, and snapshot_list by focusing on the creation aspect, leaving no ambiguity about the tool's 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?

The description provides no guidance on when to use this tool versus alternatives. It does not mention exclusions, prerequisites, or conditions beyond the confirmation note. The agent is left to infer that creating a snapshot is the intended use, but there is no explicit routing or context.

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

snapshot_deleteDelete Parallels snapshotA
Destructive

Permanently delete a snapshot to free host disk space.

Args: vm: The VM name or UUID. snapshot: Snapshot name or UUID to delete. delete_children: If true, also delete child snapshots descended from this one. confirm: Must be explicitly set to true.

ParametersJSON Schema
NameRequiredDescriptionDefault
vmYes
confirmNo
snapshotYes
delete_childrenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
vmYes
uuidYes
actionYes
messageYes
snapshot_idNo

TDQS

A4.6/5.0
Behavior4/5

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

The annotations already include destructiveHint=true, and the description adds that deletion is permanent, that delete_children removes descendant snapshots, and that confirm must be explicitly set to true. These details go beyond the schema and annotations without contradicting them.

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 compact and front-loaded: one sentence states the purpose, followed by a terse Args list. It contains no filler and avoids repeating schema titles.

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

Completeness5/5

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

For a 4-parameter destructive tool, the description covers purpose, parameter semantics, and a safety requirement. The presence of an output schema means return-value details are not needed, and nothing critical appears missing.

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

Parameters5/5

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

Schema description coverage is 0%, but the description documents all four parameters: vm and snapshot as name/UUID, delete_children with descendant semantics, and confirm as a mandatory explicit flag. This fully compensates for the lack of schema-level descriptions.

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 'Permanently delete a snapshot to free host disk space,' using a specific verb and resource and clearly stating the purpose. This differentiates it from sibling tools like snapshot_revert or snapshot_create, which have different operations.

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 phrase 'to free host disk space' establishes a clear use case, and the confirm parameter note adds an important precondition. It does not explicitly name alternatives or exclusions, but the context is sufficient for basic tool selection.

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

snapshot_listList Parallels snapshotsA
Read-onlyIdempotent

List snapshots for a VM without changing state.

ParametersJSON Schema
NameRequiredDescriptionDefault
vmYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=false, so the no-side-effect behavior was already known. The description reinforces that trait but does not add new behavioral context such as ordering, error conditions, or permissions.

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 efficient sentence with no filler. The core action, resource, and read-only scope are front-loaded.

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 list operation with an output schema and read-only annotations, the description covers the essential use. It only falls short on parameter semantics, which is a minor gap here.

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 only parameter, vm, gets no semantic detail beyond its name and string type. The description says 'for a VM' but does not clarify whether vm takes a name, UUID, or path, so it does not compensate for the missing schema documentation.

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 and resource: 'List snapshots for a VM'. It also distinguishes itself from the mutating sibling tools (snapshot_create, snapshot_revert, snapshot_delete) by noting it does so 'without changing state'.

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 phrase 'without changing state' implies this is the inspection tool and not for mutation, but there is no explicit when-to-use guidance or mention of snapshot_create/revert/delete as alternatives. The intended context is clear but left to inference.

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

snapshot_revertRevert Parallels snapshotB
Destructive

Revert guest state to a snapshot after explicit confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
vmYes
confirmNo
snapshotYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
vmYes
uuidYes
actionYes
messageYes
snapshot_idNo

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, covering the mutation and destructiveness. The description adds that the revert occurs 'after explicit confirmation', informing the agent that a confirmation step is required. This goes beyond the annotations by hinting at the confirm parameter and the need for explicit user consent, though it does not specify the mechanics.

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, tightly worded sentence with no extraneous content. It front-loads the action and the key condition (explicit confirmation), making it immediately scannable. It achieves maximum efficiency without losing essential 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?

For a destructive operation with three parameters and no schema descriptions, the description is insufficiently complete. It omits critical operational details such as the requirement to set confirm=true to actually execute, the irreversible nature of reverting (data loss), and any information about the output. While the annotation flags destructiveness, the description fails to provide the practical guidance an agent needs to invoke it safely and correctly.

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?

The input schema has 0% description coverage, so the description must compensate for parameter meaning. The description only alludes to the confirm parameter via 'explicit confirmation' but does not explain the vm or snapshot parameters, nor does it clarify that confirm must be set to true for the operation to proceed. This leaves agents guessing about parameter usage.

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 uses the specific verb 'Revert' and identifies the resource as 'guest state to a snapshot', clearly indicating the action. It distinguishes from sibling tools like snapshot_create or snapshot_delete because it explicitly mentions reverting state, not creating or deleting snapshots. However, it does not explicitly differentiate from potential alternatives like vm_clone, so it earns a 4 rather than a 5.

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 usage for restoring a VM to a previously captured state, which is a distinct operation among the snapshot and VM tools. It does not provide explicit when-to-use guidance or mention alternatives, nor does it state when not to use it. The phrase 'after explicit confirmation' hints at a prerequisite but does not elaborate on the condition.

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

vm_changelogGet Parallels MCP server changelog and release notesA
Read-onlyIdempotent

Read the release notes, new features, and bug fixes for parallels-pro-mcp-server.

Args: latest_only: If true, returns only the latest release section. If false, returns the complete changelog.

ParametersJSON Schema
NameRequiredDescriptionDefault
latest_onlyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

The annotations already declare readOnlyHint=true and idempotentHint=true, so the description does not need to restate the safety profile. It adds useful behavioral detail beyond the schema by explaining exactly how latest_only changes the output: latest section only versus the complete changelog.

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 concise, front-loaded with the tool's purpose, and then uses a short Args block for parameter details. Every sentence adds value and there is no redundant or filler content.

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

Completeness5/5

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

For a simple read-only tool with one optional parameter and an output schema present, the description is complete. The agent knows what the tool does, how the flag affects the result, and that the operation is safe due to annotations.

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

Parameters5/5

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

Schema description coverage is 0%, but the description fully explains the only parameter, latest_only, including the behavioral difference between true and false. This is exactly the kind of semantic clarification the schema alone does not provide.

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 clear verb ('Read') and names the specific resource ('release notes, new features, and bug fixes for parallels-pro-mcp-server'). It is clearly distinct from the sibling VM management tools, which all deal with VM operations rather than the server's own changelog.

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 description clearly implies this is the tool to use when the agent needs the Parallels MCP server's changelog or release notes, and there is no overlapping sibling tool that provides this information. It does not explicitly state when not to use it, but no alternative exists among the siblings, so the context is sufficiently clear.

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

vm_cloneClone Parallels VMA
Destructive

Clone an existing VM to quickly spin up sandboxes or disposable test environments.

Args: vm: The source VM name or UUID to clone. name: Name for the newly created clone. linked: If true (default), creates a fast linked clone sharing the base disk. If false, creates a full independent deep clone. dst: Optional custom destination path for the cloned VM.

ParametersJSON Schema
NameRequiredDescriptionDefault
vmYes
dstNo
nameYes
linkedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYes
linkedYes
messageYes
source_vmYes
source_uuidYes

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, covering the mutation aspect. The description adds detail about linked vs full clone (sharing base disk), which is a behavioral nuance. However, it does not disclose potential side effects like requiring the source VM to remain for linked clones or any cleanup implications, leaving some gap beyond annotations.

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 front-loaded with purpose, then follows a tidy args block. Every sentence adds value: the purpose sentence, and each parameter's role. No fluff; compact and scannable.

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?

All parameters are explained, and an output schema exists to cover return details. It lacks explicit notes on prerequisites (e.g., source VM existence, disk space) or error conditions, but these are minor and can be inferred. Given the output schema and annotation coverage, this is nearly complete.

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

Parameters5/5

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

Schema description coverage is 0%, so the description fully compensates. Each parameter is explicitly explained: vm (source name/UUID), name (clone name), linked (default and its functional difference), dst (optional custom path). This goes well beyond the schema's bare type definitions.

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?

Clearly states the action (clone), the resource (existing VM), and the purpose (sandboxes/disposable test environments). The verb is specific and distinguishes it from sibling tools like vm_start or vm_delete.

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?

Provides explicit context for when to use: 'to quickly spin up sandboxes or disposable test environments.' Does not mention alternatives, but no sibling does an equivalent operation, so the guidance is adequate. Lacks explicit 'when not to use', but that is acceptable given the niche.

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

vm_copy_from_guestCopy file or directory from Parallels guest to hostA
Destructive

Stream a file or directory from a guest path back to the host filesystem.

Extracts test reports, build artifacts, logs, or files produced inside the VM.

Args: vm: The VM name or UUID. guest_path: Path to the file or directory inside the guest. host_path: Destination path on the host where file/folder will be written. user: Optional guest user to read files as. timeout_s: Transfer timeout in seconds (default: 300s).

ParametersJSON Schema
NameRequiredDescriptionDefault
vmYes
userNo
host_pathYes
timeout_sNo
guest_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
vmYes
uuidYes
bytesYes
sourceYes
messageYes
destinationYes

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false, so the baseline is lower. The description adds that the operation writes to a host path and supports an optional guest user, but it does not disclose overwrite behavior or prerequisites. This is adequate but not rich.

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

Conciseness5/5

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

The description is concise and well-structured: a one-sentence purpose, a short use-case line, and a clean Args list. Every sentence adds value and the most important information is front-loaded.

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 5-parameter tool with an output schema and annotations, the description covers the core purpose, all parameter semantics, and typical use cases. It does not mention overwrite behavior or guest prerequisites, but these are partially covered by destructiveHint and are not essential for basic invocation.

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?

Schema description coverage is 0%, so the description must compensate. It explains all five parameters with meaningful context: guest_path is 'inside the guest', host_path is 'on the host where file/folder will be written', user is 'optional guest user to read files as', and timeout_s has a default. This goes beyond the bare schema.

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 a specific action ('Stream a file or directory from a guest path back to the host filesystem') with a clear resource and direction. It distinguishes itself from the sibling vm_copy_to_guest by explicitly saying 'back to the host', making the direction unambiguous.

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 description provides clear use cases: 'Extracts test reports, build artifacts, logs, or files produced inside the VM.' It does not explicitly name alternatives or exclusions, but the directionality and use cases make when to use this tool clear.

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

vm_copy_to_guestCopy file or directory from host to Parallels guestA
Destructive

Stream a file or entire directory from the host into a guest path.

Works across Windows, Linux, and macOS guests using direct stream execution. Creates parent directories in the guest if they do not exist.

Args: vm: The VM name or UUID. host_path: Path on the host filesystem (file or directory). guest_path: Destination path inside the guest (e.g. "C:\temp\file.txt" or "/tmp/dir"). user: Optional guest user to run file extraction as. timeout_s: Transfer timeout in seconds (default: 300s).

ParametersJSON Schema
NameRequiredDescriptionDefault
vmYes
userNo
host_pathYes
timeout_sNo
guest_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
vmYes
uuidYes
bytesYes
sourceYes
messageYes
destinationYes

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the mutation profile is known. The description adds valuable behavioral detail beyond the annotations: it creates parent directories if absent, uses direct stream execution, and supports multiple guest OSes. It does not elaborate on overwrite behavior, but the annotation coverage lowers the burden and the provided details are meaningful.

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 front-loaded with the core action, followed by two short contextual sentences, then a compact Args list. Every sentence adds useful information; there is no filler or repetition of schema-only trivia. The structure is easy to scan and parse.

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

Completeness5/5

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

Given the tool has five parameters, three required, an output schema, and mutation annotations, the description covers all necessary invocation details: parameter meanings, OS compatibility, automatic directory creation, and timeout behavior. An agent can confidently call this tool without additional external information.

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

Parameters5/5

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

Schema description coverage is 0%, so the Args list in the description is essential. It explains all five parameters, including the distinction between host_path and guest_path, gives guest_path examples, and clarifies that user is optional and timeout_s defaults to 300. This fully compensates for the schema's lack of descriptions.

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 a specific verb and resource: 'Stream a file or entire directory from the host into a guest path.' This clearly distinguishes the direction of copy from sibling vm_copy_from_guest, and the title reinforces the same host-to-guest operation. No ambiguity about what the tool does.

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

Usage Guidelines4/5

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

The description clearly implies when to use the tool: whenever a file or directory needs to be transferred from host to guest. It adds context by stating it works across Windows, Linux, and macOS and that parent directories are created automatically. It does not explicitly name alternatives or exclusion conditions, but the context is clear enough for an agent to select it over vm_copy_from_guest.

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

vm_deleteDelete Parallels VMA
Destructive

Permanently delete a VM and all its associated disk images from host storage.

Args: vm: The VM name or UUID to delete. confirm: Must be explicitly set to true to prevent accidental VM deletion.

ParametersJSON Schema
NameRequiredDescriptionDefault
vmYes
confirmNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
vmYes
uuidYes
deletedYes
messageYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already mark the tool as destructive, so the bar is lower, but the description adds meaningful context: deletion is permanent, includes all associated disk images, and affects host storage. It also explains the confirm parameter's safety role, which helps the agent understand the operation's consequences.

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 compact: a clear one-sentence behavioral summary followed by a two-item parameter list. Every sentence adds necessary information, and the most important fact (permanent deletion) is front-loaded.

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 destructive VM operation, the description covers the core action, the disk-image impact, and the confirmation requirement. It does not address whether the VM must be in a particular state before deletion, but the output schema and destructive annotations cover some of the surrounding context.

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

Parameters5/5

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

The input schema has 0% description coverage, but the description explicitly documents both parameters: vm accepts a name or UUID, and confirm must be set to true to prevent accidental deletion. This fully compensates for the schema's lack of detail and adds practical guidance beyond the raw property definitions.

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 a specific verb ('delete') and resource ('VM'), and adds scope by saying the action permanently removes the VM and all associated disk images from host storage. This clearly distinguishes it from sibling tools like snapshot_delete and vm_stop.

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 gives no guidance about when to use this tool versus alternatives, such as when a snapshot should be deleted instead, or whether the VM must be powered off first. The only safety instruction is about the confirm parameter, which is not usage differentiation.

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

vm_doctorRun Parallels pre-flight doctor diagnosticsA
Read-onlyIdempotent

Run diagnostic pre-flight checks on host macOS and Parallels setup, with optional guest inspection.

Args: vm: Optional VM name or UUID. If specified, checks guest OS, runtimes, and environment.

ParametersJSON Schema
NameRequiredDescriptionDefault
vmNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
all_okYes
host_checksYes
guest_checksNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, so the safe, non-mutating nature is covered. The description adds real behavioral context beyond those annotations by explaining the optional guest inspection path: checks guest OS, runtimes, and environment when a VM is specified.

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 purpose is front-loaded in a single sentence, and the Args block is compact and directly useful. There is no filler or repetition beyond the tool title.

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 read-only diagnostic tool with only one optional parameter, an output schema, and strong annotations, the description is nearly complete. It covers host diagnostics, guest diagnostics when a VM is supplied, and the parameter format. It could be slightly more explicit about host-only behavior when vm is omitted, but that is reasonably inferred.

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?

Schema coverage is 0%, so the description must carry the parameter meaning. It does: 'vm' is optional, accepts a VM name or UUID, and triggers guest-side inspection when provided. This adds meaning the bare schema lacks, though it does not detail behavior when the VM is invalid or not found.

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 identifies the action ('Run diagnostic pre-flight checks') and the scope ('host macOS and Parallels setup, with optional guest inspection'). This distinguishes it from sibling mutations like vm_start or vm_delete and even from status-only tools like vm_status by emphasizing diagnostics and guest environment inspection.

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 term 'pre-flight checks' implies use before VM operations, but the description never explicitly says when to use this tool versus alternatives such as vm_status or vm_optimize_windows. It gives no when-not-to-use guidance or named alternative conditions.

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

vm_execExecute a command in a Parallels guestA
Destructive

Execute an explicit argv vector inside the guest.

Args: vm: The VM name or UUID. command: Argument vector, e.g. ["whoami"] or ["ls", "-la"]. user: Optional guest username. If omitted, uses the current desktop user on Windows. timeout_s: Execution timeout in seconds (default: 300s).

ParametersJSON Schema
NameRequiredDescriptionDefault
vmYes
userNo
commandYes
timeout_sNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
vmYes
uuidYes
stderrYes
stdoutYes
commandYes
returncodeYes
stderr_truncatedNo
stdout_truncatedNo

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already flag destructiveHint=true and readOnlyHint=false, so the description does not need to restate those. It adds useful context about running inside the guest and the Windows desktop-user fallback, but it does not elaborate on side effects or failure behavior beyond what annotations convey.

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 compact and front-loaded with a clear one-sentence purpose, followed by a concise Args list with defaults and examples. Every sentence adds useful information and there is no 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 4-parameter tool with an output schema and destructive annotations, the description covers all invocation details: VM identifier, command vector, user handling, and timeout. It lacks usage-alternative guidance, but that is already scored separately; for calling the tool correctly it is nearly complete.

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

Parameters5/5

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

Schema description coverage is 0%, so the description carries the full burden for parameter meaning. It explains vm, command with concrete examples, the optional user with fallback behavior, and timeout_s with its default. This fully compensates for the bare schema.

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 a specific verb ('Execute') and a specific resource ('an explicit argv vector inside the guest'), which clearly identifies the operation. The title reinforces this, and the description is distinct from sibling tools like vm_send_keys or file-transfer tools.

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 explains what the tool does but gives no guidance on when to prefer it over alternatives such as vm_send_keys or vm_copy_to_guest. There are no exclusions, prerequisites, or context about when this tool is the right choice.

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

vm_listList Parallels VMsA
Read-onlyIdempotent

List every registered Parallels VM with its current power state.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

The annotations already declare readOnlyHint=true and idempotentHint=true, so the read-only behavior is covered. The description adds useful context beyond annotations: it promises exhaustive enumeration ('every registered') and identifies 'current power state' as the data returned. This is adequate for a simple list operation.

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 filler. Every word adds meaning: 'every registered' defines scope and 'current power state' defines the output content.

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

Completeness5/5

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

For a zero-parameter, read-only listing tool with an output schema and idempotence annotations, the description is complete. It states what is listed and what field is included, so an agent has enough information to select and invoke it correctly.

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 input schema has zero parameters, so there are no parameter semantics to document. The description need not add parameter details, and the baseline for a parameterless tool 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 ('List') and a precise resource ('every registered Parallels VM') with an explicit detail ('current power state'). The phrase 'every registered' clearly establishes an inventory operation and distinguishes it from vm_status or single-VM action tools.

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 tool is for enumerating all VMs and their power states, but it does not explicitly mention alternatives such as vm_status for a single VM or when not to use this tool. The use case is inferable but not spelled out.

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

vm_optimize_windowsOptimize Windows VM for automationA
Destructive

Optimize a Windows guest VM for automated tasks, testing, and script execution.

Configures Windows Defender real-time scanning exclusions (preventing EPERM/EBUSY file locks) and sets PowerShell ExecutionPolicy to Bypass.

Args: vm: The Windows VM name or UUID. exclusion_paths: Optional directory paths to exclude from Defender scanning. exclusion_processes: Optional process binary names to exclude (defaults to node.exe, npm.cmd, pnpm.cmd, git.exe, python.exe).

ParametersJSON Schema
NameRequiredDescriptionDefault
vmYes
exclusion_pathsNo
exclusion_processesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
vmYes
uuidYes
messageYes
execution_policyYes
process_exclusions_addedYes
defender_exclusions_addedYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate destructiveHint: true and readOnlyHint: false, so the mutation is known. The description adds valuable behavioral context: it explains the purpose of the exclusions (preventing EPERM/EBUSY file locks) and the PowerShell ExecutionPolicy setting. It does not contradict annotations, and it provides reasoning for the side effects, enhancing transparency beyond the structured flags.

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 structured with a summary paragraph followed by an Args list. It is front-loaded with the purpose and then details the parameters. Each sentence adds value; the inclusion of the specific error (EPERM/EBUSY) is useful context. It is slightly longer than strictly necessary but remains efficient.

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?

The description covers the tool's purpose, the parameters, and the core actions. It does not mention prerequisites (e.g., VM must be running) or the return value, but an output schema exists. For a configuration tool with three simple parameters, the description is sufficiently complete for an agent to invoke it correctly.

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

Parameters5/5

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

Schema coverage is 0%, so the description is the sole source of parameter meaning. It clearly defines vm (name or UUID), exclusion_paths (directory paths), and exclusion_processes (process binary names with defaults). This fully compensates for the schema's lack of descriptions, giving an agent everything needed to fill parameters correctly.

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 a specific action (optimize) on a specific resource (Windows guest VM) for clear goals (automated tasks, testing, script execution). It explicitly lists the two main configuration changes (Defender exclusions and PowerShell ExecutionPolicy), making it distinct from any sibling tool like vm_start or vm_exec.

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 description implies usage: it's for preparing a VM for automation. It clearly states the context (automated tasks, testing, script execution) but does not explicitly contrast with alternatives or state when not to use it. Given the sibling tools are all about VM lifecycle and operations, this is distinct enough that the usage is clear.

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

vm_screenshotCapture Parallels VM screenshotA
Read-onlyIdempotent

Capture a screenshot of the VM's current screen buffer.

Args: vm: The VM name or UUID. output_path: Optional host path where the PNG will be saved. If omitted, saved to the default artifact directory.

ParametersJSON Schema
NameRequiredDescriptionDefault
vmYes
output_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
vmYes
pathYes
uuidYes
bytesYes

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the description does not need to repeat that. It does add value by explaining the behavior when output_path is omitted (saved to default artifact directory), which is not captured in annotations or schema. However, it does not describe what the tool returns or any side effects beyond file saving, so a moderate score is appropriate.

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 extremely concise, with only two sentences that front-load the core purpose and then explain the optional parameter. Every word earns its place, and it is well-structured for quick scanning by an agent.

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 capture tool with an output schema, the description covers the essential behavior (capture and save) and the only optional parameter's handling. It does not explain the return value, but the presence of an output schema relieves that burden. The tool is straightforward, and nothing critical appears missing.

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?

Schema description coverage is 0%, so the description must compensate. It clearly defines 'vm' as the VM name or UUID, and 'output_path' as an optional host path with a default behavior. This adds meaningful context beyond the bare property names, though it could be slightly more detailed (e.g., acceptable file extensions or path constraints). Overall, it sufficiently explains the parameters.

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 a specific verb ('Capture') and a clear resource ('screenshot of the VM's current screen buffer'). It unambiguously differentiates from sibling VM management tools by focusing on image capture, so an agent can immediately identify its purpose without confusion.

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 description implies when to use it (when a screenshot is needed) and is distinct from all sibling tools. However, it does not explicitly name alternatives or state 'use this instead of X' scenarios, though the purpose is so clear that no further guidance is necessary. It also provides a practical detail about the output_path default, which informs usage.

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

vm_send_keysSend keystrokes to Parallels VMA
Destructive

Send synthetic keystrokes or hotkey combinations to a running VM.

Supports:

  • Single keys: "enter", "esc", "tab", "space", "backspace", "delete", "f1"-"f12", arrows, etc.

  • Key chords: "ctrl+alt+del", "win+r", "alt+f4", "ctrl+c", "ctrl+shift+esc", etc.

  • Strings to type: "notepad.exe" or "echo Hello"

  • Multiple key entries in sequence: ["win+r", "notepad.exe", "enter"]

Args: vm: The VM name or UUID. keys: Key name, chord string (e.g. "ctrl+alt+del"), or list of keys to send in order. delay_ms: Delay in milliseconds between key events (default: 50ms).

ParametersJSON Schema
NameRequiredDescriptionDefault
vmYes
keysYes
delay_msNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
vmYes
keysYes
uuidYes
messageYes
events_sentYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already convey that this is a non-read-only, destructive, open-world operation, so the description does not need to repeat those warnings. It adds useful behavioral detail: keystrokes are 'synthetic', the target must be a 'running VM', multiple keys can be sent 'in order', and delay_ms controls delay 'between key events'. This goes beyond the structured fields without contradicting them.

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 front-loaded with the core action and then uses compact bullet lists to enumerate supported inputs and parameters. Every listed example earns its place by illustrating valid input forms. It is detailed enough to be useful without being padded.

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 3-parameter tool with an output schema, this description covers the operation, parameter semantics, accepted input shapes, and sequencing. It could be more complete by noting error conditions (e.g., VM not running) or clarifying that keystrokes go to the guest's active session, but these are minor gaps given the annotations and examples.

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

Parameters5/5

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

Schema description coverage is 0%, so the description carries the full burden for explaining parameters. The Args section provides clear semantics for all three parameters: vm as name or UUID, keys as a key name/chord string/list of keys, and delay_ms as the inter-event delay with a default. This fully compensates for the otherwise bare schema.

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 a specific verb and resource: 'Send synthetic keystrokes or hotkey combinations to a running VM.' It clearly distinguishes this from sibling tools like vm_exec and vm_copy_to_guest by focusing on keyboard input rather than command execution or file transfer. The supported input forms and examples further reinforce 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 Guidelines3/5

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

The description implies usage through examples and supported input types, and the constraint 'to a running VM' gives some context. However, it does not explicitly state when to prefer this over vm_exec or when not to use it, nor does it mention prerequisites like the VM needing a visible desktop or the impact on foreground applications. Usage guidance is adequate but mostly implicit rather than explicit.

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

vm_set_headlessSet Parallels VM headless modeA
Destructive

Configure whether the VM runs headlessly in the background or displays a GUI window.

Args: vm: The VM name or UUID. enabled: If true (default), sets startup-view to headless. If false, sets startup-view to window.

ParametersJSON Schema
NameRequiredDescriptionDefault
vmYes
enabledNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
vmYes
uuidYes
messageYes
headlessYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already mark this as mutable and destructive, and the description adds that it affects the VM's startup-view setting and the resulting rendered mode. It does not disclose whether the change applies immediately, requires a stopped VM, or what side effects occur, but it does not contradict the annotations.

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 short, front-loaded with the main purpose, and each sentence serves a clear role. The parameter breakdown is compact, though the boolean explanation could be slightly tighter.

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 setter with an output schema and safety annotations, the description covers purpose and parameters adequately. However, it omits usage guidance and important runtime semantics such as whether the setting takes effect immediately or only after restart, leaving an agent to infer those details.

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 has 0% description coverage, so the description carries the full burden. It specifies that 'vm' accepts a name or UUID and explains that 'enabled' maps to headless vs window startup-view, including the default true. This adds meaning that the bare schema does not provide.

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 ('Configure') with a specific resource (the VM) and states exactly what is changed: headless background vs GUI window. It is naturally distinguished from sibling VM operations like vm_start and vm_status because it is the only headless-mode setter.

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 explicit guidance about when to use this tool versus alternatives, nor any prerequisites or exclusions. The purpose implies usage, but the description never says 'Use when...' or mentions related tools that might be confused with it.

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

vm_set_network_conditionSet Parallels network conditionA
Destructive

Simulate degraded network conditions or offline state for the VM.

Args: vm: The VM name or UUID. profile: Network profile name ('off', 'edge', 'dsl', '3g', '100-percent-loss', 'very-bad-net', 'wifi'). Use 'off' to disable simulation and restore normal network conditions.

ParametersJSON Schema
NameRequiredDescriptionDefault
vmYes
profileNooff

Output Schema

ParametersJSON Schema
NameRequiredDescription
vmYes
uuidYes
enabledYes
messageYes
profileYes

TDQS

A4.5/5.0
Behavior4/5

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

The description discloses the behavioral effect (simulating degraded network or offline state) and how to reverse it ('off' restores normal). Annotations already mark destructiveHint=true, and the description adds that the change is reversible via 'off', which is valuable context beyond the annotations.

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 concise (two sentences plus a structured Args section). The purpose is front-loaded, and each line adds value—no filler or redundancy. The format is easy to scan and understand.

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 two-parameter tool, the description covers purpose, parameters, and the disabling behavior. It doesn't detail return values, but an output schema exists (indicated by context), so that is not required. It could mention immediate impact on connectivity, but that is not essential for correct invocation.

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

Parameters5/5

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

Schema description coverage is 0%, but the description compensates fully. It explains 'vm' as the VM name or UUID and lists all valid 'profile' values with the special meaning of 'off'. This is far more than the schema provides, which only shows types and 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's action: 'Simulate degraded network conditions or offline state for the VM.' It identifies the resource (VM) and the specific effect (network degradation or offline). It is distinct from sibling tools, none of which mention network manipulation, so 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 Guidelines4/5

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

The description provides clear usage context: it simulates degraded network conditions and explicitly explains how to disable simulation using 'off' to restore normal conditions. While it doesn't name alternative tools or state when not to use it, the tool's unique purpose and the parameter guidance make usage clear.

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

vm_share_folderShare a host directory with Parallels VMA
Destructive

Mount a host directory into the guest as a Parallels Shared Folder.

Args: vm: The VM name or UUID. name: Name of the share (e.g. "project_workspace"). host_path: Host directory to mount. mode: Sharing mode: "ro" (read-only) or "rw" (read-write). Default is "rw". description: Optional notes describing the shared folder.

ParametersJSON Schema
NameRequiredDescriptionDefault
vmYes
modeNorw
nameYes
host_pathYes
descriptionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
vmYes
modeYes
nameYes
uuidYes
actionYes
messageYes
host_pathYes

TDQS

A3.9/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds no further behavioral context such as overwrite behavior, permission requirements, or reversibility. It merely restates the action, providing minimal value beyond what annotations already convey.

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 purpose statement followed by a structured Args block. There is no redundancy or fluff; every sentence earns its place.

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?

All parameters and defaults are covered, and the output schema presumably defines return values. It lacks mention of prerequisites (e.g., host path existence) or error conditions, but for a straightforward share operation the information is sufficient for correct invocation.

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

Parameters5/5

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

The description includes an Args block that explains every parameter (vm, name, host_path, mode, description) with defaults, which the schema completely lacks (schema coverage 0%). This fully compensates for the missing schema descriptions and clarifies the mode options and 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 states a clear verb 'Mount' with a specific resource 'host directory' and destination 'Parallels Shared Folder'. This distinctly separates it from siblings like vm_copy_to_guest (copying files) and vm_unshare_folder (removing shares).

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 does not explicitly state when to use this tool versus alternatives. It implies usage through the action but provides no exclusions or comparisons. An agent would have to infer the appropriate context from the purpose alone.

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

vm_startStart Parallels VMA

Start a registered VM by name or UUID.

ParametersJSON Schema
NameRequiredDescriptionDefault
vmYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
vmYes
uuidYes
actionYes
messageYes

TDQS

A4/5.0
Behavior3/5

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

The annotations already indicate a non-read-only, non-destructive operation, so the description does not need to restate that. It adds the 'registered VM' precondition, but it does not disclose whether starting is asynchronous, can fail if the VM is already running, or requires readiness checking.

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 eight words long, front-loaded with the action, and contains no filler. Every word contributes meaning.

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 one-parameter mutation tool with an output schema, this is largely complete: the action, target, and parameter format are clear. It would benefit from a note about asynchronous behavior or using vm_wait_ready, but that is not strictly required for correct invocation.

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 input schema provides no description for the single 'vm' parameter, and coverage is 0%. The description compensates by specifying that 'vm' accepts either a name or a UUID, which is essential for correct invocation.

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 ('Start'), a clear resource ('a registered VM'), and the accepted identifier types ('by name or UUID'). It is easily distinguishable from sibling tools like vm_stop, vm_suspend, and vm_list.

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 tool's purpose: use it when the goal is to power on a VM. However, there is no explicit when/when-not guidance or mention of alternatives such as vm_status to check state or vm_wait_ready after starting.

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

vm_statusGet Parallels VM statusA
Read-onlyIdempotent

Return bounded status details for a VM name or UUID.

ParametersJSON Schema
NameRequiredDescriptionDefault
vmYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
osNo
nameYes
uuidYes
statusYes
home_pathNo
ip_addressNo
uptime_secondsNo
guest_tools_stateNo
guest_tools_versionNo

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds the useful detail that the status returned is 'bounded', but it does not clarify what that bound is or describe any other behavioral nuances such as missing-VM handling.

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 sentence with no filler, and the main purpose is front-loaded. It conveys the key scoping constraint ('VM name or UUID') without wasting words.

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 one-parameter read-only tool with an output schema and read-only/idempotent annotations, the description is largely sufficient to invoke the tool correctly. The main gap is that 'bounded' is vague and there is no guidance on failure or not-found behavior, but the output schema can reasonably cover return details.

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?

Schema coverage is 0%, so the description carries the burden of explaining the single 'vm' parameter. It does this meaningfully by stating that the value can be a VM name or UUID, which is essential information an agent would not get from the bare schema title 'Vm'.

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 uses a clear verb ('Return') and resource ('status details'), and specifies that the target is identified by VM name or UUID. This distinguishes it from vm_list and other sibling tools at a basic level, though it does not explicitly contrast with siblings and the word 'bounded' is somewhat ambiguous.

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 intended use is implied: call this when you have a VM name or UUID and need status details. However, the description gives no explicit guidance about when not to use it or which sibling tool to prefer for related needs like waiting for readiness or listing all VMs.

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

vm_stopGracefully stop Parallels VMB
Destructive

Request an ACPI shutdown; this never uses Parallels force-kill.

ParametersJSON Schema
NameRequiredDescriptionDefault
vmYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
vmYes
uuidYes
actionYes
messageYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the mutation nature is known. The description adds the behavioral detail that it never uses force-kill, which is useful context. However, it does not disclose potential side effects like losing unsaved guest OS data, nor does it mention if the operation is synchronous or asynchronous.

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, well-structured sentence that front-loads the primary action ('Request an ACPI shutdown') and immediately clarifies a key behavioral distinction (no force-kill). No wasted words.

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 destructive operation with a single parameter, the description is minimal but adequate for a basic stop action. It does not mention prerequisites (e.g., VM must be running) or explicitly state the result (VM powers off), but the output schema likely covers return values. The lack of side-effect detail is a moderate gap for a destructive tool.

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 has zero description coverage for the only parameter 'vm', and the description provides no explanation of what the parameter represents (e.g., VM name, UUID, or how to obtain it). The agent is left without any guidance on what value to supply.

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 action ('Request an ACPI shutdown') and the resource (a Parallels VM), and specifies the method (ACPI, not force-kill). This distinguishes it from sibling tools like vm_suspend (suspend) and vm_delete (delete).

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 a graceful stop by stating 'never uses force-kill', but it does not explicitly name alternatives or provide when-to-use vs. when-not-to-use guidance. It leaves it to the agent to infer that this is the graceful shutdown option among stop-like operations.

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

vm_suspendSuspend Parallels VMA
Destructive

Suspend a VM, preserving its current guest memory state.

ParametersJSON Schema
NameRequiredDescriptionDefault
vmYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
vmYes
uuidYes
actionYes
messageYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already mark destructiveHint=true, and the description adds meaningful context by specifying that guest memory state is preserved. This clarifies the impact of the operation beyond the raw annotation, without contradiction.

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 zero wasted words. It states the action and the key side effect immediately.

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?

The tool is simple, an output schema exists (so return values are covered), and the description captures the essential behavior. It does not mention prerequisites like the VM being running, but for a straightforward suspend operation this is a minor gap.

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?

With 0% schema description coverage and no parameter documentation in the description, the agent receives no guidance on the 'vm' parameter. Although the name is self-explanatory, the description fails to compensate for the missing schema documentation, violating the low-coverage rule.

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 a specific verb ('Suspend') and resource ('VM') and adds the clarifying detail 'preserving its current guest memory state,' which distinguishes it from sibling tools like vm_stop. An agent can immediately understand the action and its effect.

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 provides no explicit guidance on when to use this tool versus alternatives such as vm_stop or vm_start. The memory-preservation detail implies a specific use case, but it does not name alternatives or conditions.

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

vm_unshare_folderUnshare a host directory from Parallels VMA
Destructive

Unmount and remove a previously shared folder from the VM.

Args: vm: The VM name or UUID. name: Name of the share to delete.

ParametersJSON Schema
NameRequiredDescriptionDefault
vmYes
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
vmYes
modeYes
nameYes
uuidYes
actionYes
messageYes
host_pathYes

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, and the description adds context by specifying 'previously shared folder' and 'unmount and remove.' It does not disclose side effects or permission requirements, but the destructive nature is covered by annotations.

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 extremely concise: one sentence explaining the action, followed by a two-line argument list. Every sentence earns its place, and the primary purpose is front-loaded.

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 two-parameter tool with an output schema, the description covers the essentials. It could mention that the share must exist or describe error behavior, but given the annotations and simplicity, it is sufficiently complete.

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

Parameters5/5

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

Schema description coverage is 0%, and the description compensates by explicitly defining both parameters: 'vm: The VM name or UUID' and 'name: Name of the share to delete.' This adds clear meaning beyond the bare schema.

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 action: 'Unmount and remove a previously shared folder from the VM.' This specifies a verb, resource, and scope, distinguishing it from vm_share_folder. The title reinforces the purpose.

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 usage for removing an existing share but does not explicitly state when to use this over alternatives or any exclusions. It lacks guidance on prerequisites like the share must exist or error handling.

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

vm_wait_readyWait for Parallels guest readinessB
Read-onlyIdempotent

Poll the guest OS until Parallels Tools and execution answering.

ParametersJSON Schema
NameRequiredDescriptionDefault
vmYes
timeout_sNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
vmYes
uuidYes
actionYes
messageYes

TDQS

B3.1/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true and idempotentHint=true, so the description correctly adds the blocking/polling behavior ('Poll the guest OS') without contradiction. It also gives a concrete readiness condition ('Parallels Tools and execution answering'), which adds value beyond annotations. However, it does not explain timeout behavior (what happens if the guest never becomes ready), which is a minor gap given the annotations already signal safety.

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 sentence with no filler, front-loading the action ('Poll the guest OS'). It is concise but the phrase 'and execution answering' is awkward and could be clearer, though it does not add unnecessary length. Overall it is well-structured for a short description.

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 waiting tool, the description fails to explain critical behavior: what happens on timeout (does it return, raise an error?), whether it returns immediately if already ready, and the exact meaning of 'execution answering'. The output schema may define return values, but the timeout behavior is a key side effect that is unaddressed. Given the tool's purpose, this is a significant omission.

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 explain the parameters, but it does not. It references the 'guest OS' but never explicitly states that 'vm' is the identifier or how to specify it, and it gives no meaning to 'timeout_s' beyond its name and default value. The agent must rely on parameter names and defaults, which is insufficient for parameters not self-explanatory (especially timeout_s semantics).

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 specific verb ('Poll') and resource ('guest OS') with a clear goal ('until Parallels Tools and execution answering'), and the title reinforces the intent. It is distinct from siblings like vm_status (which likely just reports state) and vm_exec (which runs commands), but it does not explicitly differentiate itself by naming 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?

The description gives no guidance on when to use this tool versus alternatives. It does not mention that it should typically be used after starting a VM, nor does it suggest using vm_status for a one-shot readiness check instead of a blocking wait. The lack of any usage context leaves the agent to infer when to invoke 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.

  1. 3 tool updatesv0.3.0
    • Addedvm_changelog
    • Addedvm_doctor
    • Addedvm_optimize_windows
  2. 21 tool updatesv0.1.0
    • First observedsnapshot_create
    • First observedsnapshot_delete
    • First observedsnapshot_list
    • First observedsnapshot_revert
    • First observedvm_clone
    • First observedvm_copy_from_guest
    • First observedvm_copy_to_guest
    • First observedvm_delete
    • First observedvm_exec
    • First observedvm_list
    • First observedvm_screenshot
    • First observedvm_send_keys
    • First observedvm_set_headless
    • First observedvm_set_network_condition
    • First observedvm_share_folder
    • First observedvm_start
    • First observedvm_status
    • First observedvm_stop
    • First observedvm_suspend
    • First observedvm_unshare_folder
    • First observedvm_wait_ready

TDQS

A3.6/5.0

Scored across 24 tools

Disambiguation4/5

Tools are largely distinct — lifecycle, snapshot, file-transfer, and input tools each target a specific action. vm_list and vm_status both surface VM information (all vs. one), and vm_doctor vs. vm_optimize_windows both occupy 'maintenance' territory, creating minor selection ambiguity, but descriptions are clear enough to prevent real misselection.

Naming Consistency3/5

The dominant pattern is object_verb snake_case (vm_start, vm_stop, snapshot_create), which is predictable within each namespace. However, snapshot operations use a snapshot_* prefix instead of the expected vm_snapshot_* style, and vm_changelog is a meta-tool about the server itself that breaks the VM-domain naming entirely.

Tool Count3/5

At 24 tools, the set is on the heavy side, falling in the 16-25 borderline band. Most tools earn their place in a full VM management suite, but vm_changelog is a self-referential filler that doesn't belong, pushing an already large surface slightly beyond its scope.

Completeness4/5

The surface covers the full VM lifecycle (list/start/stop/suspend/delete/clone), complete snapshot CRUD, bidirectional file transfer, shared folder management, guest execution/input, and key configuration. Obvious gaps — no create-VM-from-installer, no restart/reboot, no rename or resource controls — are workaroundable (stop+start) but will force agents to improvise.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    An MCP server that enables managing Parallels Desktop virtual machines, including listing, starting, stopping, suspending, and executing commands inside VMs.
    9
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    MCP server for managing Parallels Desktop VMs, including lifecycle operations and snapshots.
    -