Skip to main content
Glama
CyberKnightLabs

vmware-knight

vm_guest_upload

Destructive

Upload a local file to a VM guest via VMware Tools, replacing an existing destination file. Requires VMware Tools running in the guest OS.

Instructions

[WRITE] Upload a file from local machine to a VM via VMware Tools.

Returns a dict with action, message and blast_radius (a status string before the confirmation gate). Requires VMware Tools running in the guest OS. An existing file at guest_path is replaced. Use vm_guest_download for the reverse direction, and vm_guest_provision instead when uploads and commands belong to one ordered provisioning run.

Without confirm=True this only previews: blast_radius names the VM (name, instance UUID), the guest account, the local path and size, the guest path, VMware Tools status and any blockers; nothing is transferred. Show it to the user. Do not set confirm=True on your own because the user asked earlier: they have not seen the preview yet. Refused outright: VM not powered on, VMware Tools not running, a local file that is missing or unreadable, an unreadable identity or status, or a name that matches more than one VM.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
targetNoOptional vCenter/ESXi target name from config.
confirmNoFalse (default) returns the blast radius and changes nothing. True applies it.
vm_nameYesTarget VM name.
passwordNoGuest OS password.
usernameYesGuest OS account to run as. Required — there is no default, so a call can never act as root without choosing root.
guest_pathYesDestination path inside the guest.
local_pathYesLocal file path to upload.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.12.10

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, and the description adds substantial behavioral context: the confirmation gate behavior, that an existing file at guest_path is replaced, that without confirm=True nothing is transferred, and the exact refusal conditions. It also explicitly warns the agent not to set confirm=True on its own because the user hasn't seen the preview yet. This is rich, honest behavioral disclosure 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.

Conciseness4/5

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

The description is dense but well-organized: it front-loads the core action, then covers the confirmation gate, prerequisites, and refusal conditions. Every sentence earns its place. It is longer than the typical description, but the complexity of the confirmation-gate behavior justifies the length. Slightly verbose in the refusal list, but still efficient.

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 destructive, confirmation-gated write tool with no output schema, the description covers everything an agent needs: what it does, prerequisites, what the preview returns, when to confirm, when to refuse, and how it differs from siblings. The refusal conditions are enumerated. Nothing critical is 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 100%, so the schema already documents all 7 parameters. The description adds meaning beyond the schema by explaining the confirm parameter's role in the preview/apply flow, and by clarifying the username requirement ('there is no default, so a call can never act as root without choosing root'). It doesn't add per-parameter detail for every field, but the schema already covers those, so a 4 is appropriate.

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

Purpose5/5

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

The description opens with a clear verb+resource: 'Upload a file from local machine to a VM via VMware Tools.' It also distinguishes itself from siblings by naming vm_guest_download (reverse direction) and vm_guest_provision (ordered provisioning runs). This is specific and unambiguous.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool vs alternatives: use vm_guest_download for the reverse direction, and vm_guest_provision when uploads and commands belong to one ordered provisioning run. It also gives clear prerequisites (VMware Tools running, VM powered on) and refusal conditions. This is exemplary usage guidance.

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