Skip to main content
Glama

VMware AIops

Author: Wei Zhou, VMware by Broadcom — wei-wz.zhou@broadcom.com This is a community-driven project by a VMware engineer, not an official VMware product. For official VMware developer tools see developer.broadcom.com.

English | 中文

AI-powered VMware vCenter/ESXi VM lifecycle and deployment tool — 60 tools.

Companion skills handle everything else:

Skill

Scope

Install

vmware-monitor

Read-only: inventory, health, alarms, events, metrics

uv tool install vmware-monitor

vmware-storage

Datastores, iSCSI, vSAN management

uv tool install vmware-storage

vmware-vks

Tanzu Namespaces, TKC cluster lifecycle

uv tool install vmware-vks

Need read-only monitoring only? Use VMware-Monitor — zero destructive code in the codebase.

ClawHub Skills.sh Claude Code Marketplace License: MIT

⚡ Quick Investigation Reports (read-only)

Triage → investigate → act, all in one conversation. Five opinionated read-only reports aggregate and correlate server-side and hand back a high-signal result (never raw inventory), so you can decide where to look before changing anything. Each renders a self-contained offline HTML snapshot with --html (no external assets; drill-down detail collapses in native <details>, zero JavaScript). All delegate to the vmware-monitor library using AIops's own vCenter connection.

Question

Command

What it correlates

"What needs attention now?" across all vCenters

vmware-aiops attention

Every vCenter merged into one globally-ranked issue list; unreachable targets degrade gracefully

"Is anything on fire?" across all clusters

vmware-aiops summary

Every cluster's hosts + VM power + live CPU/mem + alarms → ranked top-N issues + per-cluster status

"What's happening around this VM?"

vmware-aiops investigate vm <name>

VM state + host + cluster + backing datastores + snapshots + alarms + performance + a merged event timeline

"What's happening around this host?"

vmware-aiops investigate host <name>

Host state + cluster + the VMs it runs + mounted datastores + alarms + performance + correlated timeline

"What's happening around this datastore?"

vmware-aiops investigate datastore <name>

Capacity/free + mounting hosts + VMs it backs + alarms + correlated timeline

vmware-aiops attention                            # what needs attention now, all vCenters
vmware-aiops investigate vm web-01 --hours 72     # everything around a VM, then act on it
vmware-aiops investigate vm web-01 --html         # → offline snapshot in ~/vmware-health/

Via MCP these are the tools cluster_health_summary, cross_vcenter_attention, vm_investigation_bundle, host_investigation_bundle, datastore_investigation_bundle. (Requires vmware-monitor installed.)

Works with Claude Code, Cursor, Codex, Gemini CLI, Trae, and 30+ AI agents:

# Via Skills.sh
npx skills add vmware-skills/VMware-AIops

# Via ClawHub
clawhub install @zw008/vmware-aiops

PyPI Install (No GitHub Access Required)

# Install via uv (recommended)
uv tool install vmware-aiops

# Or via pip
pip install vmware-aiops

# China mainland mirror (faster)
pip install vmware-aiops -i https://pypi.tuna.tsinghua.edu.cn/simple

Offline / Air-Gapped Install (from source)

This project uses the modern PEP 517 build system (hatchling), so there is no setup.py by design — that is expected, not a missing file. If you cloned the source and hit ERROR: File "setup.py" or "setup.cfg" not found ... editable mode currently requires a setuptools-based build, your pip is older than 21.3 and cannot do an editable (-e) install with a non-setuptools backend. Editable mode is a developer convenience, not needed to run the tool — do one of:

# From the source tree — a normal (non-editable) install builds a wheel:
pip install .              # NOT  pip install -e .

# ...or upgrade pip first, and editable works too:
pip install --upgrade pip && pip install -e .

For a truly air-gapped host, build the wheels on a connected machine and copy them over — the target then needs no network:

# On a connected machine, collect this package + its dependencies as wheels:
pip wheel . -w dist        # → dist/*.whl   (or: uv build, for just this package)

# Copy dist/ to the air-gapped host, then install offline:
pip install --no-index --find-links dist vmware-aiops

Related MCP server: VMWare MCP

Why this over other VMware MCP servers

Most open-source VMware MCP servers (e.g. bright8192/esxi-mcp-server, giuliolibrando/vmware-vsphere-mcp-server) are single-vCenter VM wrappers: list/power/snapshot a VM, basic monitoring, a confirm=True flag. They explicitly do not cover networking, storage, Kubernetes, ops analytics, load balancing, or compliance — and "logging is documented" is not an audit trail.

This is one skill in an 11-package family that covers the whole estate and runs every tool through a governed harness:

Other VMware MCP servers

This family

VM lifecycle + monitoring

NSX networking (segments/gateways/NAT/routing/IPAM)

✅ vmware-nsx

NSX security (DFW/groups/IDS-IPS/traceflow)

✅ vmware-nsx-security

Storage (datastore/iSCSI/vSAN)

✅ vmware-storage

Tanzu Kubernetes (Supervisor/Namespace/TKC)

✅ vmware-vks

Aria Operations (metrics/alerts/capacity)

✅ vmware-aria

AVI / NSX ALB load balancing + AKO

✅ vmware-avi

Compliance baselines + drift (CIS/SCG/等保/PCI)

✅ vmware-harden

Governed harness (unified audit, policy engine, token budget + runaway breaker, graduated risk tiers, undo-token, prompt-injection sanitize)

✅ vmware-policy on every tool

If you only ever power-cycle VMs in one vCenter, a single-file server is fine. If you run a real (regulated, NSX-segmented, multi-domain) VMware estate and need an AI operator an auditor can sign off on, that's what this family is for — see docs/compliance-ready.md.

Capabilities Overview

What This Skill Does

Category

Tools

Count

VM Lifecycle

power on/off, TTL auto-delete, clean slate

6

Deployment

OVA, template, linked clone, batch clone/deploy

8

Guest Ops

exec commands, upload/download files, provision

5

Plan/Apply

multi-step planning with rollback

4

Cluster

create, delete, HA/DRS config, add/remove hosts

6

Datastore

browse files, scan for images

2

Network

dvSwitch portgroup list/create, host VMkernel list/add/remove, DF-bit MTU-path ping

6

CLI vs MCP: Which Mode to Use

Scenario

Recommended

Why

Local/small models (Ollama, Qwen <32B)

CLI

~2K tokens context vs ~10K for MCP; small models struggle with many tool schemas

Token-sensitive workflows

CLI

SKILL.md + Bash tool = minimal overhead

Cloud models (Claude, GPT-4o)

Either

Both work; MCP gives structured JSON I/O

Automated pipelines / Agent chaining

MCP

Type-safe parameters, structured output, no shell parsing

Monitoring / storage / K8s

Companion skills

See vmware-monitor, vmware-storage, vmware-vks

Rule of thumb: Use CLI for cost efficiency and small models. Use MCP for structured automation with large models.

Architecture

User (Natural Language)
  ↓
AI CLI Tool (Claude Code / Gemini / Codex / Aider / Continue / Trae / Kimi)
  ↓ reads SKILL.md / AGENTS.md / rules
  ↓
vmware-aiops CLI
  ↓ pyVmomi (vSphere SOAP API)
  ↓
vCenter Server ──→ ESXi Cluster ──→ VM
    or
ESXi Standalone Host ──→ VM

Version Compatibility

vSphere / VCF Version

Support

Notes

VCF 9.1 / vSphere 9.1

✅ Full

Released 2026-05-12. pyVmomi <10.0 resolves and connects via SOAP; new REST-only features (PATCH /deployment/size, IPv6-only GOSC) not yet wrapped — see VCF Python SDK for those.

VCF 9.0 / vSphere 9.0

✅ Full

pyVmomi 8.0.3+ connects against vSphere 9 SOAP API. From VCF 9, pyVmomi is also bundled inside the unified VCF Python SDK.

8.0 / 8.0U1-U3

✅ Full

CreateSnapshot_Task deprecated → use CreateSnapshotEx_Task

7.0 / 7.0U1-U3

✅ Full

All APIs supported

6.7

✅ Compatible

Backward-compatible, tested

6.5

✅ Compatible

Backward-compatible, tested

pyVmomi auto-negotiates the API version during SOAP handshake — no manual configuration needed. The same codebase manages 7.0 / 8.0 / 9.0 / 9.1 environments seamlessly.

Official Broadcom References


Common Workflows

Deploy a Lab Environment

  1. Browse datastore for OVA images → vmware-aiops datastore browse <ds> --pattern "*.ova"

  2. Deploy VM from OVA → vmware-aiops deploy ova ./image.ova --name lab-vm --datastore ds1

  3. Install software inside VM → vmware-aiops vm guest-exec lab-vm --cmd /bin/bash --args "-c 'apt-get install -y nginx'" --user root

  4. Create baseline snapshot → vmware-aiops vm snapshot-create lab-vm --name baseline

  5. Set TTL for auto-cleanup → vmware-aiops vm set-ttl lab-vm --minutes 480

Batch Clone for Testing

  1. Create plan: vm_create_plan with multiple clone + reconfigure steps

  2. Review plan with user (shows affected VMs, irreversible warnings)

  3. Apply: vm_apply_plan executes sequentially, stops on failure

  4. If failed: vm_rollback_plan reverses executed steps

  5. Set TTL on all clones for auto-cleanup

Migrate VM to Another Host

  1. Check VM info via vmware-monitor → verify power state and current host

  2. Migrate: vmware-aiops vm migrate my-vm --to-host esxi-02

  3. Verify migration completed


VM Lifecycle

Operation

Command

Confirmation

vCenter

ESXi

Power On

vm power-on <name>

Graceful Shutdown

vm power-off <name>

Double

Force Power Off

vm power-off <name> --force

Double

Reset

vm reset <name>

Suspend

vm suspend <name>

Create VM

vm create <name> --cpu --memory --disk

Delete VM

vm delete <name>

Double

Reconfigure

vm reconfigure <name> --cpu --memory

Double

Create Snapshot

vm snapshot-create <name> --name <snap>

List Snapshots

vm snapshot-list <name>

Revert Snapshot

vm snapshot-revert <name> --name <snap>

Delete Snapshot

vm snapshot-delete <name> --name <snap> [--no-wait]

Task Status

vm task-status <task-id>

Clone VM

vm clone <name> --new-name <new>

vMotion

vm migrate <name> --to-host <host>

Set TTL

vm set-ttl <name> --minutes <n>

Cancel TTL

vm cancel-ttl <name>

List TTLs

vm list-ttl

Clean Slate

vm clean-slate <name> [--snapshot baseline]

Double

Guest Exec

vm guest-exec <name> --cmd /bin/bash --args "..."

Guest Exec (with output)

vm guest-exec-output <name> --cmd "df -h"

Guest Upload

vm guest-upload <name> --local f.sh --guest /tmp/f.sh

Guest Download

vm guest-download <name> --guest /var/log/syslog --local ./syslog

Guest Operations require VMware Tools running inside the guest OS. guest-exec-output auto-detects Linux/Windows shell and captures stdout/stderr.

Plan → Apply (Multi-step Operations)

For complex operations involving 2+ steps or 2+ VMs, use the plan/apply workflow instead of executing individually:

Step

What Happens

1. Create Plan

AI calls vm_create_plan — validates actions, checks targets in vSphere, generates plan with rollback info

2. Review

AI shows plan to user: steps, affected VMs, irreversible warnings

3. Apply

vm_apply_plan executes sequentially; stops on failure

4. Rollback (if failed)

Asks user whether to rollback, then vm_rollback_plan reverses executed steps (irreversible steps skipped)

Plans stored in ~/.vmware-aiops/plans/, auto-deleted on success, auto-cleaned after 24h.

VM Deployment & Provisioning

Operation

Command

Speed

vCenter

ESXi

Deploy from OVA

deploy ova <path> --name <vm>

Minutes

Deploy from Template

deploy template <tmpl> --name <vm>

Minutes

Linked Clone

deploy linked-clone --source <vm> --snapshot <snap> --name <new>

Seconds

Attach ISO

deploy iso <vm> --iso "[ds] path/to.iso"

Instant

Convert to Template

deploy mark-template <vm>

Instant

Batch Clone

deploy batch-clone --source <vm> --count <n>

Minutes

Batch Deploy (YAML)

deploy batch spec.yaml

Auto

Cluster Management

Operation

Command

Confirmation

vCenter

ESXi

Cluster Info

cluster info <name>

Create Cluster

cluster create <name> [--ha] [--drs]

Delete Cluster

cluster delete <name>

Double

Add Host

cluster add-host <cluster> --host <host>

Double

Remove Host

cluster remove-host <cluster> --host <host>

Double

Configure HA/DRS

cluster configure <name> [--ha/--no-ha] [--drs/--no-drs]

Double

remove-host requires the host to be in maintenance mode first; the host is moved out of the cluster into the datacenter's host folder as a standalone host.

Alarm Management

Operation

Command

Confirmation

vCenter

ESXi

List Triggered Alarms

alarm list [--target <t>]

Acknowledge Alarm

alarm acknowledge <entity> <alarm>

Clear (Reset) Alarms

alarm reset <entity> <alarm>

Double

Blast radius: vSphere has no per-alarm clear API. alarm reset uses AlarmManager.ClearTriggeredAlarms, which clears all triggered alarms matching the named alarm's entity type (host/VM/all) and current status (red/yellow) — not just the named one. The named alarm is looked up first (typos fail fast), and the output's scope field reports exactly what was cleared. Cleared alarms re-trigger automatically if their underlying condition persists.

Datastore Browser

Feature

vCenter

ESXi

Details

Browse Files

List files/folders in any datastore path

Scan Images

Discover ISO, OVA, OVF, VMDK across all datastores

Scheduled Scanning & Notifications

Feature

Details

Daemon

APScheduler-based, configurable interval (default 15 min)

Multi-target Scan

Sequentially scan all configured vCenter/ESXi targets

Scan Content

Alarms + Events + Host logs (hostd, vmkernel, vpxd)

Log Analysis

Regex pattern matching: error, fail, critical, panic, timeout, corrupt

Structured Log

JSONL output to ~/.vmware-aiops/scan.log

Webhook

Slack, Discord, or any HTTP endpoint

Daemon Management

daemon start/stop/status, PID file, graceful shutdown

Safety Features

Feature

Details

Dry-Run Mode (CLI only)

--dry-run on any destructive CLI command prints exact API calls without executing

Plan → Confirm → Execute → Log

CLI workflow: show current state, confirm changes, execute, audit log

Double Confirmation (CLI only)

Destructive CLI commands (power-off, delete, reconfigure, snapshot-revert/delete, clean-slate, guest-exec, guest-upload, cluster delete/remove-host, alarm clear) require 2 sequential prompts and take no bypass flag

No confirmation on the MCP path

The 43 write tools an agent sees over MCP act on the first call — no confirmed= handshake, no approval tier, no read-only switch. What decides whether a write lands is the privilege of the vCenter account, and what records it is the audit trail. See What protects you

Rejection Logging

Declined CLI confirmations are recorded in the audit trail

Audit Trail

All operations logged to ~/.vmware-aiops/audit.log (JSONL) with before/after state

Input Validation

VM name, CPU (1-128), memory (128-1048576 MB), disk (1-65536 GB) validated

Password Protection

.env file loading with permission check; never in shell history

SSL Self-signed Support

verify_ssl: false — only for ESXi with self-signed certs in isolated labs; production should use CA-signed certificates

Prompt Injection Protection

vSphere event messages and host logs are truncated, stripped of control characters, and wrapped in boundary markers before output

Webhook Data Scope

Sends notifications to user-configured URLs only — no third-party services by default

Task Waiting

All async operations wait for completion and report result

State Validation

Pre-operation checks (VM exists, power state correct)

vCenter vs ESXi Comparison

Capability

vCenter

ESXi Standalone

vMotion migration

Cross-host clone

Cluster management

All VM lifecycle ops

OVA/Template/Linked Clone deploy

Datastore browsing & image scan

Snapshots

Guest operations

Inventory, alarms, events, sensors, host services, and scanning are now in vmware-monitor.

What protects you

The table above lists two different surfaces and it is worth being blunt about which protections apply to which, because getting this wrong is worse than having no protection at all — a guardrail you believe in is one you stop compensating for.

On the CLI, a destructive command asks twice and takes no bypass flag, and --dry-run previews any write. That defends a mistyped command typed by a human. It does not defend against an agent, which satisfies both prompts with yes |.

Over MCP, there is no confirmation step at all. All 43 write tools — vm_delete, cluster_delete, vm_guest_exec among them — act on the first call. Seven host-networking and DRS tools take a confirm argument that defaults to a no-write preview, but that is a preview switch, not an approval gate: one more call is all it takes. This is deliberate. A confirmed= handshake was considered in July 2026 and cut, along with the earlier VMWARE_READ_ONLY switch, because neither was a real boundary — the switch was enforced on the MCP path only and any agent with a shell walked around it via the CLI, and a handshake is a speed-bump a model that intends to act steps over.

What actually decides whether a write lands is the vCenter/ESXi service account. Give the skill an account with the privileges the work needs and no more; vCenter refuses the rest itself, on every surface, with no way around it from inside this skill. To run an agent read-only, give it a read-only vCenter role — one decision, enforced where it is made. Every call is then recorded in ~/.vmware/audit.db before the caller sees a result, which is how you find out what happened.

vm_guest_exec is the one to think hardest about. It runs a caller-supplied command inside the guest OS with the credentials handed to it, which the documentation's own example makes root; nothing bounds what the command may be. The guest account is a separate authorization boundary from the vCenter one — a read-only vCenter role does not constrain what this tool does inside a VM. If you do not need guest operations, do not configure guest credentials.

The full inventory of which tools are gated and which are not is in references/capabilities.md, where the numbers are checked against the live tool registry by the test suite rather than maintained by hand.


Troubleshooting

"VM not found" error

VM names are case-sensitive in vSphere. Use exact name from vmware-monitor inventory vms.

Guest exec returns empty output

Use vm_guest_exec_output instead of vm_guest_exec — it auto-captures stdout/stderr. Basic vm_guest_exec only returns exit code.

Deploy OVA times out

Large OVA files (>10GB) may exceed the default 120s timeout. The upload happens via HTTP NFC lease — ensure network between the machine running vmware-aiops and ESXi is stable.

Plan apply fails mid-way

Run vmware-aiops plan list to see failed plan status. Ask user if they want to rollback with vm_rollback_plan. Irreversible steps (delete_vm) are skipped during rollback.

Connection refused / SSL error

  1. Verify target is reachable: vmware-aiops doctor

  2. For self-signed certs: set verify_ssl: false in config.yaml (lab environments only)


Supported AI Platforms

Platform

Status

Config File

AI Model

Claude Code

✅ Native Skill

skills/vmware-aiops/SKILL.md

Anthropic Claude

Gemini CLI

✅ Context file + MCP

skills/vmware-aiops/SKILL.md

Google Gemini

OpenAI Codex CLI

✅ Skill + AGENTS.md

skills/vmware-aiops/SKILL.md

OpenAI GPT

Aider

✅ Conventions

skills/vmware-aiops/SKILL.md

Any (cloud + local)

Continue CLI

✅ Rules

skills/vmware-aiops/SKILL.md

Any (cloud + local)

Trae IDE

✅ Rules

skills/vmware-aiops/SKILL.md

Claude/DeepSeek/GPT-4o/Doubao

Kimi Code CLI

✅ Skill

skills/vmware-aiops/SKILL.md

Moonshot Kimi

MCP Server

✅ MCP Protocol

vmware_aiops/mcp_server/

Any MCP client

Python CLI

✅ Standalone

N/A

N/A

Platform Comparison

Feature

Claude Code

Gemini CLI

Codex CLI

Aider

Continue

Trae IDE

Kimi CLI

Cloud AI

Anthropic

Google

OpenAI

Any

Any

Multi

Moonshot

Local models

Ollama

Ollama

Skill system

SKILL.md

Context file

SKILL.md

Rules

Rules

SKILL.md

MCP support

Native

Native

Via Skills

Third-party

Native

Free tier

60 req/min

Self-hosted

Self-hosted

MCP Server Integrations

The vmware-aiops MCP server works with any MCP-compatible agent or tool. Ready-to-use configuration templates are in examples/mcp-configs/.

Agent / Tool

Local Model Support

Config Template

Integration Guide

Xiaoguai (小怪)

✅ Self-hosted, any LLM

MCP setup

Guide

Goose

✅ Ollama, LM Studio

goose.json

Guide

LocalCowork

✅ Fully offline

localcowork.json

Guide

mcp-agent

✅ Ollama, vLLM

mcp-agent.yaml

Guide

VS Code Copilot

vscode-copilot.json

Guide

Cursor

cursor.json

Guide

Continue

✅ Ollama

continue.yaml

Guide

Claude Code

claude-code.json

Xiaoguai (小怪) — a self-hostable, audit-first agent platform (Rust, single binary + embedded SQLite) from the same maintainer. It runs the vmware-aiops MCP server as one of its toolboxes; being both an MCP consumer and an MCP server, its HMAC-chained audit log and human-on-the-loop approval gates line up with this skill's own audit + confirm design. See its MCP integration guide.

Fully local operation (no cloud API required):

# Aider + Ollama + vmware-aiops (via SKILL.md)
aider --conventions skills/vmware-aiops/SKILL.md --model ollama/qwen2.5-coder:32b

# Any MCP agent + local model + vmware-aiops MCP server
# See examples/mcp-configs/ for your agent's config format

Installation

Step 0: Prerequisites

# Python 3.10+ required
python3 --version

# Node.js 18+ required for Gemini CLI and Codex CLI
node --version

Step 1: Clone & Install Python Backend

All platforms share the same Python backend.

git clone https://github.com/vmware-skills/VMware-AIops.git
cd VMware-AIops
python3 -m venv .venv
source .venv/bin/activate
pip install -e .

Step 2: Configure

mkdir -p ~/.vmware-aiops
cp config.example.yaml ~/.vmware-aiops/config.yaml
# Edit config.yaml with your vCenter/ESXi targets

Set passwords via .env file (recommended):

# Use the template
cp .env.example ~/.vmware-aiops/.env

# Edit and fill in your passwords, then lock permissions
chmod 600 ~/.vmware-aiops/.env

Security note: Prefer .env file over command-line export to avoid passwords appearing in shell history. The .env file should have chmod 600 (owner-only read/write).

Password environment variable naming convention:

VMWARE_{TARGET_NAME_UPPER}_PASSWORD
# Replace hyphens with underscores, UPPERCASE
# Example: target "home-esxi" → VMWARE_HOME_ESXI_PASSWORD
# Example: target "prod-vcenter" → VMWARE_PROD_VCENTER_PASSWORD

Security Best Practices

  • NEVER hardcode passwords in scripts or config files

  • NEVER pass passwords as command-line arguments (visible in ps)

  • ALWAYS use ~/.vmware-aiops/.env with chmod 600

  • ALWAYS configure connections via config.yaml — credentials are loaded from .env automatically

  • Config File Contents: config.yaml stores target hostnames, ports, and a reference to the .env file. It does not contain passwords or tokens. All secrets are stored exclusively in .env

  • TLS: Enabled by default. Disable only for ESXi hosts with self-signed certificates in isolated lab environments

  • Webhook: Disabled by default. When enabled, sends monitoring summaries to your own configured URL only — payloads contain no credentials, IPs, or PII, only aggregated alert metadata. No data sent to third-party services

  • Least Privilege: Use a dedicated vCenter service account with minimal permissions. For monitoring-only use cases, prefer the read-only VMware-Monitor

  • Prompt Injection Protection: All vSphere-sourced content is truncated, stripped of control characters, and wrapped in boundary markers before output

  • Code Review: We recommend reviewing the source code and commit history before deploying in production

  • Production Safety: For production environments, use the read-only VMware-Monitor instead. AI agents can misinterpret context and execute unintended destructive operations — real-world incidents have shown that AI-driven infrastructure tools without proper isolation can delete production databases and entire environments. VMware-Monitor eliminates this risk at the code level: no destructive functions exist in its codebase

Step 3: Connect Your AI Tool

Choose one (or more) of the following:


Option A: Claude Code

Method 1: Skills.sh or ClawHub (recommended)

Either installer places the skill in Claude Code's skills directory for you:

npx skills add vmware-skills/VMware-AIops
# or
clawhub install @zw008/vmware-aiops

Method 2: Manual skill install

git clone https://github.com/vmware-skills/VMware-AIops.git
cd VMware-AIops

# Copy the skill into Claude Code's personal skills directory
mkdir -p ~/.claude/skills/vmware-aiops
cp -r skills/vmware-aiops/. ~/.claude/skills/vmware-aiops/

For tool access (not just skill context), also register the MCP server:

claude mcp add vmware-aiops -- vmware-aiops mcp

Restart Claude Code, then:

> Show me all VMs on esxi-lab.example.com

Submit to Official Marketplace

This plugin can also be submitted to the Anthropic official plugin directory for public discovery.


Option B: Gemini CLI

# Install Gemini CLI
npm install -g @google/gemini-cli

# Load the skill as project context (Gemini CLI reads GEMINI.md on startup)
cp skills/vmware-aiops/SKILL.md ./GEMINI.md

For tool access (not just context), register the MCP server in ~/.gemini/settings.json:

{
  "mcpServers": {
    "vmware-aiops": {
      "command": "vmware-aiops",
      "args": ["mcp"],
      "env": { "VMWARE_AIOPS_CONFIG": "~/.vmware-aiops/config.yaml" }
    }
  }
}

Then start Gemini CLI:

gemini
> Show me all VMs on my ESXi host

Option C: OpenAI Codex CLI

# Install Codex CLI
npm i -g @openai/codex
# Or on macOS:
# brew install --cask codex

# Copy skill to Codex skills directory
mkdir -p ~/.codex/skills/vmware-aiops
cp skills/vmware-aiops/SKILL.md ~/.codex/skills/vmware-aiops/SKILL.md

# Copy AGENTS.md to project root
cp skills/vmware-aiops/SKILL.md ./AGENTS.md

Then start Codex CLI:

codex --enable skills
> List all VMs on my ESXi

Option D: Aider (supports local models)

# Install Aider
pip install aider-chat

# Install Ollama for local models (optional)
# macOS:
brew install ollama
ollama pull qwen2.5-coder:32b

# Run with cloud API
aider --conventions skills/vmware-aiops/SKILL.md

# Or with local model via Ollama
aider --conventions skills/vmware-aiops/SKILL.md \
  --model ollama/qwen2.5-coder:32b

Option E: Continue CLI (supports local models)

# Install Continue CLI
npm i -g @continuedev/cli

# Copy rules file
mkdir -p .continue/rules
cp skills/vmware-aiops/SKILL.md .continue/rules/vmware-aiops.md

Configure ~/.continue/config.yaml for local model:

models:
  - name: local-coder
    provider: ollama
    model: qwen2.5-coder:32b

Then:

cn
> Check ESXi health and alarms

Option F: Trae IDE

Copy the rules file to your project's .trae/rules/ directory:

mkdir -p .trae/rules
cp skills/vmware-aiops/SKILL.md .trae/rules/project_rules.md

Trae IDE's Builder Mode reads .trae/rules/ Markdown files at startup.

Note: You can also install Claude Code extension in Trae IDE and use .claude/skills/ format directly.


Option G: Kimi Code CLI

# Copy skill file to Kimi skills directory
mkdir -p ~/.kimi/skills/vmware-aiops
cp skills/vmware-aiops/SKILL.md ~/.kimi/skills/vmware-aiops/SKILL.md

Option H: MCP Server (Glama / Claude Desktop)

The MCP server exposes VMware operations as tools via the Model Context Protocol. Works with any MCP-compatible client (Claude Desktop, Cursor, etc.).

After uv tool install vmware-aiops, start the MCP server with one command (v1.5.15+):

# Recommended — single command, no network re-resolve
vmware-aiops mcp

# With a custom config path
VMWARE_AIOPS_CONFIG=/path/to/config.yaml vmware-aiops mcp

Claude Desktop config (claude_desktop_config.json):

{
  "mcpServers": {
    "vmware-aiops": {
      "command": "vmware-aiops",
      "args": ["mcp"],
      "env": {
        "VMWARE_AIOPS_CONFIG": "/path/to/config.yaml"
      }
    }
  }
}
# Run without installing (requires PyPI access each launch)
uvx --from vmware-aiops vmware-aiops mcp

# Legacy entry point (still works, kept for backward compatibility)
vmware-aiops-mcp

Behind a corporate TLS proxy? uvx may fail with invalid peer certificate: UnknownIssuer. Use the recommended vmware-aiops mcp form above (no network needed), or set UV_NATIVE_TLS=true.


Option I: Standalone CLI (no AI)

# Already installed in Step 1
source .venv/bin/activate

vmware-aiops vm power-on my-vm --target home-esxi
vmware-aiops deploy ova ./ubuntu.ova --name my-vm --target home-esxi
vmware-aiops datastore browse datastore1 --target home-esxi

Update / Upgrade

Already installed? Re-run the install command for your channel to get the latest version:

Install Channel

Update Command

ClawHub

clawhub install @zw008/vmware-aiops

Skills.sh

npx skills add vmware-skills/VMware-AIops

Git clone

cd VMware-AIops && git pull origin main && uv pip install -e .

uv

uv tool install vmware-aiops --force

Check your current version: vmware-aiops --version


Chinese Cloud Models

For users in China who prefer domestic cloud APIs or have limited access to overseas services.

DeepSeek

Cost-effective, strong coding capability.

# Set DeepSeek API key (get from https://platform.deepseek.com)
export DEEPSEEK_API_KEY="your-key"

# Run with Aider
aider --conventions skills/vmware-aiops/SKILL.md \
  --model deepseek/deepseek-coder

Persistent config ~/.aider.conf.yml:

model: deepseek/deepseek-coder
conventions: skills/vmware-aiops/SKILL.md

Qwen (Alibaba Cloud)

Alibaba Cloud's coding model, free tier available.

# Set DashScope API key (get from https://dashscope.console.aliyun.com)
export DASHSCOPE_API_KEY="your-key"

aider --conventions skills/vmware-aiops/SKILL.md \
  --model qwen/qwen-coder-plus

Or via OpenAI-compatible endpoint:

export OPENAI_API_BASE="https://dashscope.aliyuncs.com/compatible-mode/v1"
export OPENAI_API_KEY="your-dashscope-key"

aider --conventions skills/vmware-aiops/SKILL.md \
  --model qwen-coder-plus-latest

Doubao (ByteDance)

export OPENAI_API_BASE="https://ark.cn-beijing.volces.com/api/v3"
export OPENAI_API_KEY="your-ark-key"

aider --conventions skills/vmware-aiops/SKILL.md \
  --model your-doubao-endpoint-id

With Continue CLI

Configure ~/.continue/config.yaml:

# DeepSeek
models:
  - name: deepseek-coder
    provider: openai-compatible
    apiBase: https://api.deepseek.com/v1
    apiKey: your-deepseek-key
    model: deepseek-coder

# Qwen
models:
  - name: qwen-coder
    provider: openai-compatible
    apiBase: https://dashscope.aliyuncs.com/compatible-mode/v1
    apiKey: your-dashscope-key
    model: qwen-coder-plus-latest

Local Models (Aider + Ollama)

For fully offline operation — no cloud API, no internet, full privacy.

Aider + Ollama + local Qwen/DeepSeek is ideal for air-gapped environments.

Step 1: Install Ollama

# macOS
brew install ollama

# Linux — download from https://ollama.com/download and install manually
# See https://github.com/ollama/ollama for platform-specific instructions

Step 2: Pull a model

Model

Command

Size

Note

Qwen 2.5 Coder 32B

ollama pull qwen2.5-coder:32b

~20GB

Best local coding model

Qwen 2.5 Coder 7B

ollama pull qwen2.5-coder:7b

~4.5GB

Low-memory option

DeepSeek Coder V2

ollama pull deepseek-coder-v2

~8.9GB

Strong reasoning

CodeLlama 34B

ollama pull codellama:34b

~19GB

Meta coding model

Hardware: 32B → ~20GB VRAM (or 32GB RAM for CPU). 7B → 8GB RAM.

Step 3: Run with Aider

pip install aider-chat
ollama serve

# Aider + local Qwen (recommended)
aider --conventions skills/vmware-aiops/SKILL.md \
  --model ollama/qwen2.5-coder:32b

# Aider + local DeepSeek
aider --conventions skills/vmware-aiops/SKILL.md \
  --model ollama/deepseek-coder-v2

# Low-memory option
aider --conventions skills/vmware-aiops/SKILL.md \
  --model ollama/qwen2.5-coder:7b

Persistent config ~/.aider.conf.yml:

model: ollama/qwen2.5-coder:32b
conventions: skills/vmware-aiops/SKILL.md

Local Architecture

User → Aider CLI → Ollama (localhost:11434) → Qwen / DeepSeek local model
  │                                                    ↓
  │                                          reads AGENTS.md instructions
  │                                                    ↓
  └──────────────────────────────→ vmware-aiops CLI ──→ ESXi / vCenter

Tip: Local models are fully offline — perfect for air-gapped environments or strict data compliance.


CLI Reference

# Diagnostics
vmware-aiops doctor                   # Check environment, config, connectivity
vmware-aiops doctor --skip-auth       # Skip vSphere auth check (faster)

# MCP Config Generator
vmware-aiops mcp-config generate --agent goose        # Generate config for Goose
vmware-aiops mcp-config generate --agent claude-code  # Generate config for Claude Code
vmware-aiops mcp-config list                          # List all supported agents

# VM operations
vmware-aiops vm power-on my-vm                                 # Power on
vmware-aiops vm power-off my-vm                                # Graceful shutdown (2x confirm)
vmware-aiops vm power-off my-vm --force                        # Force power off (2x confirm)
vmware-aiops vm create my-new-vm --cpu 4 --memory 8192 --disk 100  # Create VM
vmware-aiops vm delete my-vm --confirm                         # Delete VM (2x confirm)
vmware-aiops vm reconfigure my-vm --cpu 4 --memory 8192        # Reconfigure (2x confirm)
vmware-aiops vm snapshot-create my-vm --name "before-upgrade"  # Create snapshot
vmware-aiops vm snapshot-list my-vm                            # List snapshots
vmware-aiops vm snapshot-revert my-vm --name "before-upgrade"  # Revert snapshot
vmware-aiops vm snapshot-delete my-vm --name "before-upgrade"  # Delete snapshot (waits ≤30 min for consolidation)
vmware-aiops vm snapshot-delete my-vm --name "old-big" --no-wait  # Fire async, return a task id
vmware-aiops vm task-status task-1234                          # Poll an async task by id
vmware-aiops vm clone my-vm --new-name my-vm-clone             # Clone VM
vmware-aiops vm migrate my-vm --to-host esxi-02                # vMotion
vmware-aiops vm set-ttl my-vm --minutes 60                     # Auto-delete in 60 min
vmware-aiops vm cancel-ttl my-vm                               # Cancel TTL
vmware-aiops vm list-ttl                                       # Show all TTLs
vmware-aiops vm clean-slate my-vm --snapshot baseline          # Revert to baseline (2x confirm)

# Guest Operations (requires VMware Tools in guest)
vmware-aiops vm guest-exec my-vm --cmd /bin/bash --args "-c 'whoami'" --user root
vmware-aiops vm guest-upload my-vm --local ./script.sh --guest /tmp/script.sh --user root
vmware-aiops vm guest-download my-vm --guest /var/log/syslog --local ./syslog.txt --user root

# Plan → Apply (multi-step operations)
vmware-aiops plan list                                        # List pending/failed plans

# Deploy
vmware-aiops deploy ova ./ubuntu.ova --name my-vm --datastore ds1      # Deploy from OVA
vmware-aiops deploy template golden-ubuntu --name new-vm               # Deploy from template
vmware-aiops deploy linked-clone --source base-vm --snapshot clean --name test-vm  # Linked clone (seconds)
vmware-aiops deploy iso my-vm --iso "[datastore1] iso/ubuntu-22.04.iso"  # Attach ISO
vmware-aiops deploy mark-template golden-vm                            # Convert VM to template
vmware-aiops deploy batch-clone --source base-vm --count 5 --prefix lab  # Batch clone
vmware-aiops deploy batch deploy.yaml                                  # Batch deploy from YAML spec

# Cluster
vmware-aiops cluster info my-cluster                                   # Cluster details (HA/DRS status)
vmware-aiops cluster create my-cluster --ha --drs                      # Create cluster with HA+DRS
vmware-aiops cluster delete my-cluster                                 # Delete cluster (2x confirm)
vmware-aiops cluster add-host my-cluster --host esxi-03                # Add host to cluster (2x confirm)
vmware-aiops cluster remove-host my-cluster --host esxi-03             # Remove host (2x confirm)
vmware-aiops cluster configure my-cluster --ha --drs                   # Configure HA/DRS (2x confirm)

# Alarm management
vmware-aiops alarm list                                                # List triggered alarms
vmware-aiops alarm acknowledge esxi-01 "Host memory usage"             # Acknowledge alarm
vmware-aiops alarm reset esxi-01 "Host memory usage"                   # Clear alarms (2x confirm; clears ALL matching entity type + status)

# Datastore (browse and scan only — iSCSI/vSAN moved to vmware-storage)
vmware-aiops datastore browse datastore1 --path "iso/"                 # Browse datastore
vmware-aiops datastore scan-images --target home-esxi                  # Scan all datastores for images

# Scan
vmware-aiops scan now              # One-time scan

# Daemon
vmware-aiops daemon start          # Start scanner
vmware-aiops daemon status         # Check status
vmware-aiops daemon stop           # Stop daemon

# Companion skills for other operations:
#   vmware-monitor: inventory, alarms, events, sensors
#   vmware-storage: datastores, iSCSI, vSAN
#   vmware-vks:     Tanzu/TKC cluster lifecycle

Configuration

See config.example.yaml for all options.

Section

Key

Default

Description

targets

name

Friendly name

targets

host

vCenter/ESXi hostname or IP

targets

type

vcenter

vcenter or esxi

targets

port

443

Connection port

targets

verify_ssl

true

Verify the target's TLS certificate (set false only for self-signed lab hosts)

scanner

interval_minutes

15

Scan frequency

scanner

severity_threshold

warning

Min severity: critical/warning/info

scanner

lookback_hours

1

How far back to scan

scanner

log_types

[vpxd, hostd, vmkernel]

Log sources

notify

log_file

~/.vmware-aiops/scan.log

JSONL log output

notify

webhook_url

Webhook endpoint (Slack, Discord, etc.)


Project Structure

VMware-AIops/
├── skills/                        # Skills index (npx skills add)
│   └── vmware-aiops/
│       ├── SKILL.md               # Slimmed-down skill (progressive disclosure)
│       └── references/            # Detailed docs loaded on-demand
│           ├── capabilities.md    # Full capabilities tables
│           ├── cli-reference.md   # Complete CLI reference
│           └── setup-guide.md     # Install, security, AI platforms
├── vmware_aiops/                  # Python backend
│   ├── config.py                  # YAML + .env config
│   ├── connection.py              # Multi-target pyVmomi
│   ├── cli/                       # Typer CLI (double confirm)
│   ├── ops/                       # Operations
│   │   ├── inventory.py           # VMs, hosts, datastores, clusters
│   │   ├── health.py              # Alarms, events, sensors
│   │   ├── vm_lifecycle.py        # VM CRUD, snapshots, clone, migrate
│   │   ├── vm_deploy.py           # OVA, template, linked clone, batch deploy
│   │   └── datastore_browser.py   # Datastore browsing, image discovery
│   ├── scanner/                   # Log scanning daemon
│   ├── notify/                    # Notifications (JSONL + webhook)
│   └── mcp_server/                # MCP server wrapper
│       ├── server.py              # FastMCP server with tools
│       └── __main__.py
├── examples/mcp-configs/          # MCP client config templates
├── tests/                         # Test suite
├── smithery.yaml                  # Smithery marketplace config
├── RELEASE_NOTES.md
├── config.example.yaml
└── pyproject.toml

API Coverage

Built on pyVmomi (vSphere Web Services API / SOAP).

API Object

Usage

vim.VirtualMachine

VM lifecycle, snapshots, clone, migrate

vim.HostSystem

ESXi host info, sensors, services

vim.Datastore

Storage capacity, type, accessibility

vim.host.DatastoreBrowser

File browsing, image discovery (ISO/OVA/VMDK)

vim.OvfManager

OVA import and deployment

vim.ClusterComputeResource

Cluster, DRS, HA

vim.Network

Network listing

vim.alarm.AlarmManager

Active alarm monitoring

vim.event.EventManager

Event/log queries

Skill

Scope

Tools

Install

vmware-aiops

VM lifecycle, deployment, guest ops, cluster, datastore browse, triage

49

uv tool install vmware-aiops

vmware-monitor

Read-only monitoring, alarms, events, investigation bundles

27

uv tool install vmware-monitor

vmware-storage

Datastores, iSCSI, vSAN

11

uv tool install vmware-storage

vmware-vks

Tanzu Namespaces, TKC cluster lifecycle

20

uv tool install vmware-vks

vmware-nsx

NSX networking: segments, gateways, NAT, routing, IPAM

33

uv tool install vmware-nsx-mgmt

vmware-nsx-security

DFW policies/rules, security groups, Traceflow, IDS/IPS

21

uv tool install vmware-nsx-security

vmware-aria

Aria Operations metrics, alerts, capacity, anomalies

28

uv tool install vmware-aria

vmware-avi

AVI (NSX ALB) load balancing, AKO Kubernetes ops

28

uv tool install vmware-avi

vmware-harden

Compliance baselines (CIS / vSphere SCG / 等保 / PCI-DSS), drift detection

6

uv tool install vmware-harden


Troubleshooting & Contributing

If you encounter any errors or issues, please send the error message, logs, or screenshots to zhouwei008@gmail.com. Contributions are welcome — feel free to join us in maintaining and improving this project!

License

MIT

Available Tools

44 tools
acknowledge_vcenter_alarmA

[WRITE] Acknowledge a triggered vCenter alarm — marks it as seen WITHOUT clearing it.

The alarm stays in the active list with acknowledged=true until its condition clears or it is reset. To remove the alarm entirely after fixing the root cause, use reset_vcenter_alarm instead. Get exact entity_name and alarm_name values from list_vcenter_alarms first; an unknown pair returns a not-found error. Audited to ~/.vmware/audit.db.

Args: entity_name: Name of the VM, ESXi host, or cluster the alarm fired on (from list_vcenter_alarms output). alarm_name: Exact alarm definition name, e.g. "Virtual machine CPU usage". target: vCenter target name from config.yaml; omit to use the default target.

Returns: Dict: entity_name, alarm_name, action ("acknowledged"), acknowledged (true).

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
alarm_nameYes
entity_nameYes

TDQS

A4.8/5.0
Behavior5/5

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

Beyond annotations (which are neutral), the description discloses that this is a write operation ([WRITE]), that the alarm remains active with acknowledged=true, and that the action is audited. No contradictions with 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 efficiently structured with a one-line summary, then behavioral details, prerequisites, alternative, audit note, and an Args section. No unnecessary words or repetition.

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 three parameters, no output schema, and low schema coverage, the description fully covers return format (dict with expected fields), prerequisites, error handling, and alternative tool, making it complete for agent use.

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?

Despite 0% schema coverage, the description adds full semantic meaning for each parameter: entity_name is a VM/host/cluster name from list_vcenter_alarms, alarm_name is exact definition name with example, target is a vCenter target from config with default behavior.

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

Purpose5/5

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

The description clearly states the verb 'acknowledge' and resource 'vCenter alarm' with the critical nuance that it marks as seen without clearing, distinguishing it from the sibling reset_vcenter_alarm.

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: requires prior use of list_vcenter_alarms, error condition for unknown pairs, and directs to reset_vcenter_alarm for full removal. Could briefly state when not to use (e.g., if clearing is needed), but the alternative is well noted.

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

attach_iso_to_vmA

[WRITE] Mount a datastore ISO into a VM's virtual CD-ROM drive.

Reconfigures the existing CD-ROM (replacing any currently mounted ISO) or adds a new CD-ROM on the VM's IDE controller if none exists; fails with a clear message if the VM has no IDE controller. Works whether the VM is powered on or off — the device is set connected and start-connected. Find ISO files first with browse_datastore using pattern "*.iso". Audited to ~/.vmware/audit.db.

Args: vm_name: Exact VM name as shown in vCenter inventory. iso_ds_path: Full datastore path in bracket format, e.g. "[datastore1] iso/ubuntu-22.04.iso" (datastore name in brackets, then the path relative to the datastore root). target: vCenter/ESXi target name from config.yaml; omit to use the default target.

Returns: Status string confirming attachment, or a VM-not-found / no-IDE-controller error.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
vm_nameYes
iso_ds_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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

Discloses write operation, replacement behavior, works on/off state, audit log location, and error conditions beyond annotations, which only indicate not read-only and open world.

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?

Well-structured with clear sections: operation, behavior details, prerequisite, audit info, parameter descriptions. Efficiently uses space without redundancy.

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 annotations and output schema exist, the description covers enough context: behavior, error cases, and parameter details. Complements structured fields well.

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?

Adds detailed meaning for each parameter: vm_name as exact vCenter name, iso_ds_path with bracket format example, target as optional from config. Schema had no descriptions, so this is highly valuable.

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 mounts a datastore ISO into a VM's virtual CD-ROM drive, and distinguishes from sibling tools like browse_datastore which is for finding ISOs.

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 guidance to find ISOs first with browse_datastore, explains behavior with existing CD-ROMs and IDE controller requirement, and notes target can be omitted. Does not explicitly list when not to use.

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

batch_clone_vmsA

[WRITE] Batch clone multiple VMs from a source VM (gold image).

Each clone: full copy → optional reconfigure → optional snapshot → optional power on.

Args: source_vm_name: Source VM to clone from. vm_names: List of names for the new VMs. cpu: Override CPU count for all clones (optional). memory_mb: Override memory for all clones (optional). snapshot_name: Create a baseline snapshot on each clone (optional). power_on: Power on each clone after creation. target: Optional vCenter/ESXi target name from config.

ParametersJSON Schema
NameRequiredDescriptionDefault
cpuNo
targetNo
power_onNo
vm_namesYes
memory_mbNo
snapshot_nameNo
source_vm_nameYes

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?

Describes the clone process steps (full copy, reconfigure, snapshot, power on) beyond annotations. No contradictions with 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?

Concise: one-line purpose, process summary, then structured Args list. No wasted 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?

Covers tool purpose, process, and parameters well. Could mention prerequisites (e.g., source VM exists) but output schema exists for return values, so adequate.

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?

Args section explains all 7 parameters in detail, fully compensating for 0% schema description coverage.

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

Purpose5/5

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

Clearly specifies it batch clones VMs from a source gold image, distinguishing from single clone (vm_clone) and linked clone (batch_linked_clone_vms) siblings.

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?

Implies full clone use case but does not explicitly contrast with batch_linked_clone_vms or vm_clone. No when-not-to-use or alternative guidance.

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

batch_deploy_from_specA

[WRITE] Deploy multiple VMs in one call from a declarative YAML spec file.

Use for fleet provisioning (several VMs, shared defaults); for a single VM prefer deploy_vm_from_template, vm_clone, deploy_vm_from_ova, or deploy_linked_clone. The provisioning channel is chosen by spec keys: top-level "source" (full clone), "template", "linked_clone: {source, snapshot}", per-VM "ova", else empty-VM creation (optionally with "iso"). A "defaults" block sets cpu/memory_mb/disk_gb/network/ datastore/snapshot/power_on, overridable per VM. VMs deploy sequentially; one VM's failure is recorded and the rest continue. Audited to ~/.vmware/audit.db.

Args: spec_path: Local filesystem path to the deploy.yaml specification file. target: vCenter/ESXi target name from config.yaml; omit to use the default target.

Returns: One dict per VM: name, status ("ok" or "error"), and messages with per-step results.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
spec_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior4/5

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

Annotations show readOnlyHint=false and destructiveHint=false. Description adds '[WRITE]' indicating mutation, sequential deployment, failure handling ('one VM's failure is recorded and the rest continue'), and auditing. Good additional context 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?

Well-structured: summary line, usage guidance, behavioral details, then args and returns. No redundant sentences; every line adds value. Front-loaded with purpose.

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?

Covers all aspects: YAML spec structure, defaults and overrides, sequential behavior, error handling, auditing, parameter descriptions, and return format. Given complexity, description is 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?

With 0% schema description coverage, the description compensates fully: explains spec_path as 'Local filesystem path to the deploy.yaml specification file' and target as 'vCenter/ESXi target name from config.yaml; omit to use the default target.' Clear and sufficient.

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 deploys multiple VMs from a YAML spec, using specific verb 'Deploy' and resource 'multiple VMs'. It distinguishes from sibling tools by listing alternatives for single VM deployments.

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?

Explicitly states 'Use for fleet provisioning' and lists when to prefer other tools like deploy_vm_from_template, vm_clone, etc. Provides clear context for when to use this tool versus alternatives.

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

batch_linked_clone_vmsA

[WRITE] Batch create linked clones from a VM snapshot (fastest batch provisioning).

Each clone shares the source disk via copy-on-write.

Args: source_vm_name: Source VM to clone from. snapshot_name: Snapshot to use as clone base. vm_names: List of names for the new linked clones. cpu: Override CPU count (optional). memory_mb: Override memory (optional). power_on: Power on each clone. baseline_snapshot: Create a new snapshot on each clone (optional). target: Optional vCenter/ESXi target name from config.

ParametersJSON Schema
NameRequiredDescriptionDefault
cpuNo
targetNo
power_onNo
vm_namesYes
memory_mbNo
snapshot_nameYes
source_vm_nameYes
baseline_snapshotNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

The description explicitly states '[WRITE]' indicating mutation, and explains the copy-on-write sharing behavior. Annotations (readOnlyHint=false, destructiveHint=false) are consistent with the write operation. No contradictions. The description adds valuable context about the disk sharing mechanism 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.

Conciseness4/5

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

The description is two paragraphs: a summary line, a behavioral note, and a parameter list. It is mostly concise but repeats parameter names unnecessarily in the bullet list. Front-loading is good with the summary. Could be slightly tighter but overall 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 purpose, parameters, and key behavioral info (copy-on-write). It does not mention prerequisites (e.g., source VM and snapshot existence) or error conditions. Given the tool has an output schema (so return values are documented elsewhere) and annotation depth, it is largely adequate for an agent to use correctly.

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

Parameters5/5

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

With 0% schema description coverage, the description provides a bullet list explaining each of the 8 parameters, including optional overrides and defaults. This adds substantial meaning beyond the schema's name and type alone, fully compensating for the lack of schema 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 '[WRITE] Batch create linked clones from a VM snapshot (fastest batch provisioning),' which clearly states the action (batch create), resource (linked clones from VM snapshot), and key differentiator (fastest). This distinguishes it from sibling tools like batch_clone_vms (likely full clones) and deploy_linked_clone (single clone).

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 for fast batch provisioning by mentioning 'fastest batch provisioning' and specifying linked clones via copy-on-write. However, it does not explicitly state when to use this tool over alternatives or provide when-not-to-use guidance. It lacks explicit exclusions or comparisons with siblings like batch_clone_vms.

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

browse_datastoreA
Read-onlyIdempotent

[READ] Browse files in a vSphere datastore directory.

Use this to discover OVA, ISO, VMDK, and other files on datastores before deploying VMs.

Args: datastore_name: Name of the datastore to browse. path: Subdirectory path (empty string for root). pattern: Glob pattern to filter files (e.g. ".ova", ".iso", "*"). target: Optional vCenter/ESXi target name from config.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNo
targetNo
patternNo*
datastore_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, fully covering the tool's safe, non-destructive nature. The description adds the '[READ]' prefix which reinforces this but does not introduce new behavioral traits. While the description provides operational context (discovering files), it does not disclose additional behaviors like rate limits or authentication requirements, which are not needed given 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 extremely concise: a single-line header and a short paragraph with a bulleted argument list. Every sentence adds value, and there is no redundant or extraneous text. The structure front-loads the purpose and immediately provides actionable details, making it easy for an agent to parse quickly.

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

Completeness4/5

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

Given the tool's complexity (4 params, output schema present), the description covers all essential aspects: purpose, usage context, and parameter details. The existence of an output schema means the description doesn't need to explain return values. The description is complete for its scope, though it could optionally mention that it lists file metadata (implied by 'browse'). There are no significant gaps.

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 no descriptions for any of the 4 parameters (0% coverage). The description compensates with a clear docstring explaining each parameter: datastore_name (required), path (default root), pattern (with glob examples), and target (optional). The examples for pattern are particularly helpful. While the explanations are functional and minimal, they add necessary meaning that the schema lacks, meriting a score of 4.

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: 'Browse files in a vSphere datastore directory.' It specifies the resource (datastore directory) and the operation (browse, implied read). It also gives context by mentioning file types (OVA, ISO, VMDK) and a typical use case (before deploying VMs). This provides a specific and unambiguous purpose, differentiating it from sibling tools like 'scan_datastore_images'.

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 explicitly says 'Use this to discover...files on datastores before deploying VMs,' which gives a clear context for when to use the tool. However, it does not provide exclusions or compare it directly to sibling tools like 'scan_datastore_images' or 'vm_deploy_from_ova', leaving some ambiguity about when to choose this over alternatives.

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

cluster_add_hostA

[WRITE] Move an ESXi host that vCenter already manages into a cluster.

The host must already be in vCenter inventory (standalone or in another cluster) — this tool does NOT register brand-new hosts and takes no host credentials; use the vCenter UI for first-time host registration. Idempotent: a host already in the cluster returns success without change. Maintenance mode is not required to join (it IS required by cluster_remove_host). Check membership with cluster_info. Audited to ~/.vmware/audit.db.

Args: cluster_name: Existing destination cluster name (create with cluster_create). host_name: Host name exactly as shown in vCenter inventory, typically the FQDN, e.g. "esxi-01.lab.local". target: vCenter target name from config.yaml; omit to use the default target.

Returns: Status string: moved, already-in-cluster, or host/cluster-not-found error.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
host_nameYes
cluster_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior1/5

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

Description claims idempotent behavior, but annotations set idempotentHint to false. This is a direct contradiction. Other behavioral details are fine but the contradiction outweighs.

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?

Description is well-structured with sections, but slightly verbose. However, every sentence adds value. Could be tightened without losing clarity.

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?

Covers purpose, prerequisites, idempotency, comparison to siblings, parameters, and return values. Output schema exists but description still adds helpful return examples. Complete for a write tool with these constraints.

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?

Input schema has 0% description coverage, but description fully explains each parameter: cluster_name (destination, created with cluster_create), host_name (FQDN example), target (from config.yaml, optional). Adds crucial context beyond 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 explicitly states the verb 'Move' and resource 'ESXi host into a cluster', and distinguishes from registering new hosts and from cluster_remove_host. It clearly differentiates itself among siblings.

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?

Provides explicit when to use (move managed host into cluster), when not to use (first-time registration), alternatives (cluster_remove_host, cluster_info), and prerequisite (host already in vCenter inventory).

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

cluster_configureA

[WRITE] Reconfigure cluster HA/DRS settings.

Args: name: Cluster name. ha: Enable (True) or disable (False) HA, or None to leave unchanged. drs: Enable (True) or disable (False) DRS, or None to leave unchanged. drs_behavior: DRS behavior: "fullyAutomated", "partiallyAutomated", or "manual". target: Optional vCenter target name from config.

ParametersJSON Schema
NameRequiredDescriptionDefault
haNo
drsNo
nameYes
targetNo
drs_behaviorNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate write (readOnlyHint=false). Description adds detail about modifiable settings (HA, DRS, drs_behavior) and target parameter. No mention of side effects or permissions, but adequate given 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?

Well-structured with header and list. Every sentence adds value, but could be slightly more compact. Still very clear.

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

Completeness4/5

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

Covers inputs comprehensively. Output schema exists, so return not needed. Lacks mention of preconditions or limitations, but overall sufficient for a reconfig tool.

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 has 0% coverage, so description fully explains all 5 parameters, including allowed values for drs_behavior and acceptable inputs for ha and drs.

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 'Reconfigure cluster HA/DRS settings' with specific verb and resource. Differentiates from siblings like cluster_create, cluster_delete, etc.

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?

Purpose is obvious from description, but no explicit when-to-use or exclusionary guidance relative to siblings. Still, the context is clear enough for an agent to infer usage.

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

cluster_createA

[WRITE] Create a new empty cluster in a datacenter, optionally enabling HA and DRS.

Fails with a clear error (no partial state) if a cluster with that name already exists or drs_behavior is invalid. After creation, add hosts with cluster_add_host; change HA/DRS later with cluster_configure; verify with cluster_info. Audited to ~/.vmware/audit.db.

Args: name: Name for the new cluster; must be unique in the datacenter. datacenter: Datacenter name; omit to use the first datacenter on the target. ha: True enables vSphere HA (default False). drs: True enables DRS (default False). drs_behavior: "fullyAutomated" (default), "partiallyAutomated", or "manual". Only takes effect when drs=True. target: vCenter target name from config.yaml; omit to use the default target.

Returns: Status string confirming creation and which features (HA/DRS) were enabled.

ParametersJSON Schema
NameRequiredDescriptionDefault
haNo
drsNo
nameYes
targetNo
datacenterNo
drs_behaviorNofullyAutomated

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

The description adds behavioral context beyond annotations: it notes the tool fails on duplicate names or invalid drs_behavior, ensures no partial state, and mentions audit logging. It does not contradict 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 well-structured with a front-loaded purpose, followed by error details, next steps, and parameter documentation. It is slightly lengthy but every sentence adds value.

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's complexity (6 parameters, write operation), the description is complete: it covers creation, error handling, subsequent actions, audit, parameter meanings, and return value. No gaps.

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's Args section fully documents each parameter, including defaults, constraints (e.g., drs_behavior only effective when drs=True), and optional behavior (datacenter defaults to first). This adds significant meaning.

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 creates a new empty cluster with optional HA/DRS. It uses a specific verb+resource and distinguishes from sibling tools like cluster_configure and cluster_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?

The description explains when to use the tool (creation), mentions failure conditions, and references sibling tools (cluster_add_host, cluster_configure) for subsequent steps. It does not explicitly state when not to use it, but provides enough context.

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

cluster_deleteA
Destructive

[WRITE] Delete an empty cluster (no hosts must remain).

Args: name: Name of the cluster to delete. target: Optional vCenter target name from config.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
targetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

The description goes beyond annotations by specifying the [WRITE] operation and the condition for deletion. Annotations indicate destructiveHint=true, and the description reinforces that. No contradictions.

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, with a clear first line summarizing the purpose and condition, followed by a brief parameter list. Every sentence adds value without redundancy.

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 delete tool with an output schema (not shown), the description covers the precondition, basic operation, and parameters. It does not explain return values, but that is acceptable given the output schema's presence.

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 description explains both parameters ('name' as the cluster to delete, 'target' as optional vCenter target) despite the schema having 0% description coverage. This adds meaningful semantics beyond the raw 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 verb 'Delete' and the resource 'cluster', with a specific condition 'empty cluster (no hosts must remain)'. It distinguishes itself from sibling tools like cluster_create and cluster_add_host by specifying deletion and the prerequisite.

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 explicitly states the precondition 'no hosts must remain', which guides when to use the tool. However, it does not mention alternatives or explicitly state when not to use it, but the context is clear.

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

cluster_infoA
Read-onlyIdempotent

[READ] Get detailed cluster information: member hosts, HA/DRS config, resource capacity.

Read-only, no side effects. Use before cluster_add_host / cluster_remove_host (shows membership and per-host maintenance mode) and to verify cluster_configure changes.

Args: name: Exact cluster name. target: vCenter target name from config.yaml; omit to use the default target.

Returns: Dict with name, host_count, hosts (each: name, connection_state, power_state, maintenance_mode), ha_enabled, ha_admission_control, drs_enabled, drs_behavior, total/effective CPU (MHz) and memory (GB). Errors return a dict with "error" + hint.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
targetNo

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already label it as read-only and idempotent. The description reinforces that (no side effects) and adds details about what the return contains and error handling. No contradiction.

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 well-structured with a header, usage hints, and parameter/return details. It is slightly verbose but front-loaded with the essential purpose. Not wasteful, but could be tightened.

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 no output schema, the description fully specifies return format (Dict with name, host_count, hosts, ha_enabled, etc.) and error handling. Combined with annotations, it provides complete 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?

Despite 0% schema coverage, the description explains each parameter: 'Exact cluster name' for 'name' and 'vCenter target name from config.yaml; omit to use the default target' for 'target', adding critical usage context not present in the 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 begins with 'GET detailed cluster information' and lists specific components (member hosts, HA/DRS config, resource capacity), clearly stating its purpose. It distinguishes itself from sibling tools like cluster_add_host and cluster_configure by explicitly mentioning usage context.

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 'Read-only, no side effects' and advises use before cluster_add_host/cluster_remove_host and to verify cluster_configure changes. This provides clear when-to-use and when-not-to-use guidance.

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

cluster_remove_hostA
Destructive

[WRITE] Remove a host from a cluster (host must be in maintenance mode).

Args: cluster_name: Cluster to remove the host from. host_name: ESXi host name to remove. target: Optional vCenter target name from config.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
host_nameYes
cluster_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

The description aligns with annotations (readOnlyHint=false, destructiveHint=true) by prefixing with '[WRITE]' and detailing removal. It adds context about the maintenance mode requirement, which annotations do not cover. No contradictions.

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 very concise (two sentences plus parameter list) and front-loaded with the action and condition. Every sentence adds value.

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 key prerequisite and parameter semantics. With an output schema present, return values are not needed. However, it does not mention error conditions if the host is not in maintenance mode, which would be helpful for complete context.

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

Parameters3/5

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

Given 0% schema description coverage, the description provides basic explanations for each parameter (e.g., 'Cluster to remove the host from'). However, it lacks detail on formatting or constraints, and the description for target is minimal.

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 ('Remove a host from a cluster') and the necessary condition ('host must be in maintenance mode'). It effectively distinguishes this from sibling tools like cluster_add_host.

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 a clear prerequisite (maintenance mode) but does not explicitly mention when not to use this tool or suggest alternatives. It implicitly differentiates from sibling tools focused on adding hosts.

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

convert_vm_to_templateA

[WRITE] Convert a powered-off VM to a vSphere template.

After conversion the VM cannot be powered on — it serves as a clone source for deploy_vm_from_template.

Args: vm_name: Name of the VM to convert (must be powered off). target: Optional vCenter/ESXi target name from config.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
vm_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations indicate write, non-destructive, non-idempotent. The description adds that the converted VM cannot be powered on, providing context beyond annotations. It does not mention potential irreversibility or return format, but output schema exists.

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, starting with '[WRITE]' prefix, then a clear action sentence, a note on post-conversion behavior, and parameter details. No wasted 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 simple conversion tool, the description covers action, prerequisite, and outcome. It mentions the relationship with deploy_vm_from_template. Missing are permissions or error conditions, but output schema handles return info.

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%, but the description adds meaning for both parameters: 'vm_name' must be powered off, and 'target' is optional and from config. This compensates for the lack of schema 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 clearly states the tool converts a powered-off VM to a vSphere template, using specific verb and resource. It distinguishes from the sibling deploy_vm_from_template by noting the template serves as a clone source, establishing differentiation.

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 specifies the prerequisite (VM must be powered off) and the outcome (cannot be powered on). It implies use when a template is needed for cloning, but does not explicitly exclude alternatives like vm_clone or deploy_vm_from_ova.

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

deploy_linked_cloneA

[WRITE] Create a linked clone from a VM snapshot — near-instant, minimal disk usage.

The clone shares the source's base disk and writes changes to a copy-on-write delta disk, so it depends on the source VM staying intact. Fastest provisioning method for test/dev fleets; use vm_clone or deploy_vm_from_template for fully independent copies. Requires the source VM to have the named snapshot — run vm_list_snapshots first; unknown names return the available list. Audited to ~/.vmware/audit.db.

Args: source_vm_name: Exact name of the source VM (must have at least one snapshot). snapshot_name: Snapshot on the source to use as the clone base (from vm_list_snapshots). new_name: Name for the new linked clone; must not already exist. cpu: Override vCPU count; omit to keep the source's value. memory_mb: Override memory in MB; omit to keep the source's value. power_on: True powers the clone on after creation (default False). baseline_snapshot: If set, creates a snapshot with this name on the new clone. target: vCenter/ESXi target name from config.yaml; omit to use the default target.

Returns: Status string with the new clone name, or a snapshot/VM-not-found error.

ParametersJSON Schema
NameRequiredDescriptionDefault
cpuNo
targetNo
new_nameYes
power_onNo
memory_mbNo
snapshot_nameYes
source_vm_nameYes
baseline_snapshotNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

Discloses write nature ([WRITE]), near-instant characteristics, dependency on source VM, and audit trail. Annotations confirm readOnlyHint=false, no contradictions. Could mention consequences if source VM is deleted, but overall good.

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?

Well-structured with summary, detailed explanation, Args list, and Returns. Efficient but slightly long; however, every sentence adds value.

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?

Covers cloning process, dependencies, alternatives, parameter details, and return values. Output schema exists but description also explains return. No gaps for an 8-parameter tool.

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 has 0% description coverage, but the 'Args' section explains each parameter's purpose, constraints, and defaults, adding significant meaning beyond the schema titles. For example, 'target: vCenter/ESXi target name from config.yaml'.

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?

Description clearly states 'Create a linked clone from a VM snapshot' and contrasts with siblings: 'use vm_clone or deploy_vm_from_template for fully independent copies'. The verb and resource are specific.

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?

Explicitly states when to use ('fastest provisioning method for test/dev fleets') and when not ('for fully independent copies'). Provides prerequisite: 'Requires the source VM to have the named snapshot — run vm_list_snapshots first'.

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

deploy_vm_from_ovaA

[WRITE] Create a new VM by importing a local .ova file (OVF parse + VMDK upload).

Use for OVA appliance files on the local machine. For vSphere templates use deploy_vm_from_template; to copy an existing VM use vm_clone or deploy_linked_clone. Upload time scales with OVA size. Fails before creating anything if the datastore is not found. Audited to ~/.vmware/audit.db.

Args: ova_path: Local filesystem path to the .ova file (must be readable by this server). vm_name: Name for the new VM; must not already exist. datastore_name: Target datastore name; discover with browse_datastore. network_name: Port group for the VM's NICs (default "VM Network"). folder_path: vCenter VM folder path; omit to use the datacenter's root VM folder. power_on: True powers the VM on after import (default False). snapshot_name: If set, creates a baseline snapshot with this name after deploy. target: vCenter/ESXi target name from config.yaml; omit to use the default target.

Returns: Status string with the deployed VM name, or an error naming the missing resource.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
vm_nameYes
ova_pathYes
power_onNo
folder_pathNo
network_nameNoVM Network
snapshot_nameNo
datastore_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

Discloses upload time scaling with OVA size, failure behavior before resource creation, and audit logging. Annotations already indicate non-read-only; description adds valuable context 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.

Conciseness4/5

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

Description is thorough but not overly verbose; the 'Args' section is well-structured. A minor reduction in explanation length could improve conciseness, but every sentence serves a purpose.

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?

Covers purpose, usage, behavior, all parameters, return value, and references to config.yaml. Even with an output schema, the description provides complete context for the tool's operation.

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 description fully compensates by explaining all 8 parameters with constraints (e.g., local path must be readable, vm_name must not exist, defaults for optional params).

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?

Description clearly states it creates a VM by importing a local .ova file, using 'Create' as the verb and specifying the resource type. It distinguishes itself from siblings like deploy_vm_from_template and vm_clone.

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?

Explicitly specifies when to use this tool (for local .ova files) and when not (for vSphere templates, cloning existing VMs), naming alternative tools directly.

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

deploy_vm_from_templateA

[WRITE] Deploy a new VM by cloning from a vSphere template.

Args: template_name: Name of the source vSphere template. new_name: Name for the new VM. datastore_name: Target datastore (uses template's datastore if omitted). cpu: Override CPU count (optional). memory_mb: Override memory in MB (optional). power_on: Power on after deployment. snapshot_name: Create a baseline snapshot with this name (optional). target: Optional vCenter/ESXi target name from config.

ParametersJSON Schema
NameRequiredDescriptionDefault
cpuNo
targetNo
new_nameYes
power_onNo
memory_mbNo
snapshot_nameNo
template_nameYes
datastore_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already indicate write operation (readOnlyHint=false). The description adds value by listing optional behaviors like power_on and snapshot creation, which go beyond the annotation information. No contradictions.

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 main action, followed by a concise list of arguments. Every sentence is informative and necessary, with no wasted words. Well-structured for agent parsing.

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 all input parameters and the main action. With an output schema present, the return type is handled. Missing are prerequisites or error scenarios, but overall it is sufficiently complete for a tool of this complexity.

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?

With 0% schema description coverage, the description fully explains all 8 parameters in the Args section, providing clear meaning for each. This adds essential value beyond the input 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 'Deploy a new VM by cloning from a vSphere template' which is a specific verb-resource combination. It distinguishes this from sibling tools like deploy_linked_clone and deploy_vm_from_ova by specifying the source as a template.

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 explicit guidance on when to use this tool versus alternatives such as vm_clone or deploy_linked_clone. It lists parameters but does not mention use cases, prerequisites, or trade-offs.

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

list_vcenter_alarmsA
Read-onlyIdempotent

[READ] List active/triggered alarms across the vCenter inventory.

Returns alarms with severity (critical/warning/info), entity name and type, alarm name, acknowledged flag, and trigger time.

Args: target: Optional vCenter target name from config. Uses default if omitted. limit: Max number of alarms to return (None = all). Use when many alarms are active.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
targetNo

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?

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds useful behavioral details: it returns alarms with severity, entity name/type, alarm name, acknowledged flag, and trigger time. No contradiction with 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 very concise: one-line summary, then a clean list of return fields, then args. Every sentence adds value with no fluff.

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 presence of an output schema (not shown but indicated), the description covers the tool's purpose, return fields, parameters, and usage hints. It is adequately complete for a read-only listing tool.

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 fully compensates by explaining each parameter: target is an optional vCenter target name defaulting to config, limit is a max count with a hint to use when many alarms are active. This adds significant 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 verb 'List' and the resource 'active/triggered alarms across the vCenter inventory'. It distinguishes from sibling tools like acknowledge_vcenter_alarm and reset_vcenter_alarm by focusing on listing.

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 usage guidance for the optional parameters (target defaults, limit use case). It does not explicitly state when not to use this tool versus alternatives, but the sibling tools are clearly different actions, making it adequate.

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

reset_vcenter_alarmA

[WRITE] Clear triggered vCenter alarms back to normal state.

Uses AlarmManager.ClearTriggeredAlarms. The named alarm no longer appears in the active alarm list. Use this after resolving the underlying issue. Use list_vcenter_alarms to find entity_name and alarm_name values.

Gotcha: vSphere has no per-alarm clear — this clears ALL triggered alarms matching the named alarm's entity type (host/VM/all) and current status (red/yellow). The response's 'scope' field states exactly what was cleared.

Args: entity_name: Name of the entity with the alarm (VM name, host name, or cluster name). alarm_name: Exact alarm definition name from list_vcenter_alarms output. target: Optional vCenter target name from config.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
alarm_nameYes
entity_nameYes

TDQS

A4/5.0
Behavior4/5

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

Annotations indicate write operation. Description adds valuable behavioral details: gotcha about clearing all matching alarms, response 'scope' field, and that it clears back to normal. Exceeds what annotations provide.

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?

Concise with front-loaded purpose. Uses [WRITE] marker, gotcha, and Args list. Could be more structured but efficient overall.

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

Completeness4/5

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

Given no output schema, mentions response 'scope' field. Covers pre-requisite actions and clearing behavior. Missing permission requirements but adequate for sibling 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?

Input schema has 0% description coverage, but description includes a dedicated Args section with explanations for all three parameters, adding full meaning beyond schema types.

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?

Clearly states it clears triggered vCenter alarms to normal state. Uses specific verb and resource. Does not explicitly differentiate from sibling 'acknowledge_vcenter_alarm', but the write nature is clear.

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?

Provides usage context: use after resolving underlying issue, and use list_vcenter_alarms to find parameters. But does not mention when to use alternatives like acknowledge_vcenter_alarm, missing explicit exclusions.

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

scan_datastore_imagesA
Read-onlyIdempotent

[READ] Scan all accessible datastores for deployable images (OVA/ISO/OVF/VMDK).

Results are cached locally in ~/.vmware-aiops/image_registry.json for fast lookup via list_cached_images. Run this to refresh the cache.

Args: target: Optional vCenter/ESXi target name from config.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate a safe read operation (readOnlyHint=true, destructiveHint=false). The description adds specific caching behavior (file location ~/.vmware-aiops/image_registry.json) and scope (all accessible datastores). No 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 four concise sentences. The first sentence states the purpose, second and third explain caching and usage, and the last defines the parameter. No extraneous information.

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

Completeness4/5

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

Given one optional parameter, rich annotations, and no output schema, the description covers purpose, caching behavior, and parameter meaning. It could mention what the tool returns, but the caching explanation partially addresses that.

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?

With 0% schema description coverage, the description compensates by clearly explaining the single optional parameter 'target' as a vCenter/ESXi target name from config. This adds meaning beyond the schema's type and nullability.

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 explicitly states '[READ]' and specifies scanning all accessible datastores for deployable images (OVA/ISO/OVF/VMDK). This clearly distinguishes it from siblings like browse_datastore, which browses files generally.

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 says results are cached for fast lookup via list_cached_images and to run this to refresh the cache. This provides clear usage context, though it does not explicitly state when not to use it.

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

vm_apply_planA

[WRITE] Execute a previously created plan step by step.

Steps run sequentially. On failure: stops immediately, keeps the plan file with per-step results, and returns rollback_available flag. On success: deletes the plan file.

If a step fails and rollback_available is true, ask the user whether to rollback, then call vm_rollback_plan if confirmed.

Args: plan_id: The plan ID returned by vm_create_plan. target: Optional vCenter/ESXi target name from config.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
plan_idYes

TDQS

A4.8/5.0
Behavior5/5

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

Discloses sequential execution, failure behavior (stops immediately, keeps plan file, returns rollback_available flag), and success behavior (deletes plan file). No contradiction with 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 well-structured with a clear title line and bulleted Args section. However, it is slightly verbose; minor trimming could improve conciseness.

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?

Lacks explicit output schema, but describes return of rollback_available flag. Could mention more about return value structure or open world behavior, but adequate for a plan execution tool.

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?

With 0% schema description coverage, the description fully explains both parameters: plan_id is the ID from vm_create_plan, and target is an optional vCenter/ESXi target. This adds critical context beyond the 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?

Description clearly states 'Execute a previously created plan step by step.' The verb 'execute' and resource 'plan' are specific, and it distinguishes itself from sibling tools like vm_create_plan and vm_rollback_plan by describing the execution step and post-failure behavior.

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?

Explicitly states when to use (after vm_create_plan), what happens on failure (stops, returns rollback_available flag), and directs to ask user and call vm_rollback_plan if needed. Provides clear context and alternatives.

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

vm_cancel_ttlA
Destructive

[WRITE] Cancel an existing TTL for a VM (prevents auto-deletion).

Args: vm_name: Name of the VM whose TTL should be cancelled.

ParametersJSON Schema
NameRequiredDescriptionDefault
vm_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

The description adds context beyond annotations by explaining that cancelling a TTL prevents auto-deletion. Annotations already indicate it is destructive and not read-only, so the description aligns and adds value.

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 very concise: two lines with a clear purpose statement and a parameter explanation. No wasted 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?

The tool has a single parameter, and the description covers its role. An output schema exists but is not described, which is acceptable as the description focuses on input. The context is sufficient for an agent to invoke the tool 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?

The only parameter, vm_name, is described as 'Name of the VM whose TTL should be cancelled.' The input schema provides no description for this parameter, so the description fully compensates and explains its role.

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

Purpose5/5

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

The description clearly states the verb 'Cancel' and the resource 'TTL for a VM', and includes a parenthetical explaining the effect. It distinguishes from sibling tools like vm_set_ttl and vm_list_ttl.

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 indicates when to use the tool (to cancel a TTL) but does not explicitly state when not to use it or mention alternatives. However, the context is clear for the intended use case.

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

vm_clean_slateA
Destructive

[WRITE] Revert a VM to its baseline snapshot (Clean Slate).

Powers off the VM first if it is running, then reverts to the named snapshot. Use this to reset a lab/dev VM to a clean starting state after a task completes.

Args: vm_name: Name of the VM to revert. snapshot_name: Snapshot name to revert to (default: "baseline"). target: Optional vCenter/ESXi target name from config.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
vm_nameYes
snapshot_nameNobaseline

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

The description adds behavioral details beyond annotations: 'Powers off the VM first if it is running, then reverts to the named snapshot.' This supplements the destructiveHint=true annotation. No contradictions with 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: a titleline, two explanatory sentences, and an Args block. Each sentence adds value with no redundancy.

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 purpose, behavior, and parameters adequately for a VM reset tool. It could explicitly mention that the snapshot must exist or error conditions, but it is sufficient given the output schema is present.

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?

Despite 0% schema description coverage, the description includes an Args block explaining all three parameters: vm_name (required), snapshot_name (default 'baseline'), and target (optional vCenter/ESXi target). This adds meaning beyond the input 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 'Revert a VM to its baseline snapshot (Clean Slate)' using a specific verb and resource, distinguishing it from the sibling general revert tool vm_revert_snapshot by specifying the baseline snapshot and including the power-off behavior.

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 says 'Use this to reset a lab/dev VM to a clean starting state after a task completes,' providing clear context for when to use it. However, it does not explicitly state when not to use it or compare with alternatives like vm_revert_snapshot.

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

vm_cloneA

[WRITE] Clone a VM. Without to_host/to_datastore the clone lands on the source's host+datastore.

Args: vm_name: Source VM (or template) name. new_name: Name for the new clone. to_host: Target ESXi host name (default: source's host). to_datastore: Target datastore name (default: source's datastore). power_on: Power on the clone after creation. target: vCenter/ESXi target name from config.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
to_hostNo
vm_nameYes
new_nameYes
power_onNo
to_datastoreNo

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?

Annotations indicate non-readOnly (write), non-destructive, non-idempotent. The description adds value by specifying the default placement behavior, the power_on option, and the target parameter for connection. It does not contradict annotations and provides useful context beyond structured fields.

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: a brief summary line followed by a structured parameter list. Every sentence provides necessary information without redundancy. It is front-loaded with the core action and efficiently uses markdown-like formatting.

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 tool with 6 parameters (2 required) and an output schema, the description covers all parameters, defaults, and basic behavior. It could mention potential side effects (e.g., cloning time) but is sufficiently complete given the annotations and output schema presence.

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?

With 0% schema description coverage, the description fully compensates by listing each parameter with clear explanations (e.g., 'vm_name: Source VM (or template) name'). This adds significant meaning beyond the raw schema types and defaults.

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

Purpose5/5

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

The description clearly states 'Clone a VM' with a [WRITE] prefix, specifying the core action. It distinguishes itself from sibling tools like batch_clone_vms and deploy_linked_clone by detailing the full clone behavior and optional placement parameters, making the purpose unambiguous.

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

Usage Guidelines3/5

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

The description explains when to omit to_host/to_datastore ('lands on source's host+datastore'), providing some guidance. However, it does not explicitly contrast with alternatives like batch_clone_vms or deploy_linked_clone, leaving the agent to infer when to use this tool over them.

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

vm_createA

[WRITE] Create a new empty VM with the given hardware sizing.

Creates a powered-off VM with one disk and one NIC. To populate it, attach an ISO (attach_iso_to_vm) and power it on, or use deploy_vm_from_ova / deploy_vm_from_template / vm_clone for a ready-to-run guest. Fails before creating anything if the datastore is not found. Audited to ~/.vmware/audit.db.

Args: vm_name: Name for the new VM; must not already exist. cpu: vCPU count (default 2). memory_mb: Memory in MB (default 4096). disk_gb: Primary disk size in GB (default 40). network_name: Port group for the VM's NIC (default "VM Network"). datastore_name: Target datastore name; omit to use the first accessible datastore. folder_path: vCenter VM folder path; omit to use the datacenter's root VM folder. target: vCenter/ESXi target name from config.yaml; omit to use the default target.

Returns: Status string with the new VM name, or an error naming the missing resource.

ParametersJSON Schema
NameRequiredDescriptionDefault
cpuNo
targetNo
disk_gbNo
vm_nameYes
memory_mbNo
folder_pathNo
network_nameNoVM Network
datastore_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior4/5

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

The description discloses key behaviors: creates a powered-off VM, fails before creation if datastore not found, and audit logging. Annotations provide readOnlyHint=false and destructiveHint=false, which align. The description adds context about failure and auditing but could mention other side effects like resource consumption.

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 well-structured with a leading summary, detailed behavior, Args section, and Returns. Every sentence adds value, no redundancy. It is concise yet comprehensive.

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 complexity (8 params, many sibling tools, output schema present), the description covers all necessary aspects: purpose, usage, parameters, behavior, and error conditions. It is complete without reliance on output schema details.

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 provides detailed explanations for all 8 parameters, including defaults, constraints (vm_name must not exist), and advice on omitting optional parameters. With schema coverage at 0%, this is essential and adds significant meaning beyond the input 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 tool creates an empty VM with specific hardware sizing, and distinguishes it from related tools like deploy_vm_from_ova and vm_clone. The verb 'Create' and the resource 'empty VM' are specific, and it differentiates from sibling tools.

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: to create a blank VM for manual setup, and when to use alternatives (attach_iso_to_vm, deploy_vm_from_ova, deploy_vm_from_template, vm_clone) for ready-to-run guests. This provides clear guidance on tool selection.

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

vm_create_planA

[WRITE] Create an execution plan for multi-step VM operations.

Auto-triggered when operations involve 2+ steps or 2+ VMs. Validates actions, checks target existence in vSphere, and generates a plan with rollback info for each step.

Each operation is a dict with "action" key plus action-specific params. Allowed actions: power_on, power_off, reset, suspend, create_vm, delete_vm, reconfigure, create_snapshot, delete_snapshot, revert_snapshot, clone, migrate, deploy_ova, deploy_template, linked_clone, attach_iso, convert_to_template.

Example: operations=[ {"action": "power_off", "vm_name": "test-1"}, {"action": "revert_snapshot", "vm_name": "test-1", "snapshot_name": "baseline"}, {"action": "power_on", "vm_name": "test-1"} ]

Returns plan dict with plan_id, steps, summary (vms_affected, irreversible_steps, rollback_available). Show to user for confirmation before calling vm_apply_plan.

Args: operations: List of operation dicts, each with "action" + params. target: Optional vCenter/ESXi target name from config.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
operationsYes

TDQS

A4.7/5.0
Behavior5/5

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

Adds [WRITE] marker, describes validation, target existence check, rollback info generation. No annotation contradictions. Provides rich behavior 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.

Conciseness4/5

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

Well-structured with front-loaded info, but slightly verbose. Each sentence adds value, but could be more concise without losing meaning.

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?

Even without output schema, describes return value (plan dict with plan_id, steps, summary). Covers all necessary context for a complex multi-step tool.

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?

Fully compensates for 0% schema coverage by explaining operations as list of dicts with 'action' key, listing allowed actions, giving example, and describing target as optional vCenter/ESXi target.

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 creates an execution plan for multi-step VM operations, lists allowed actions, and provides an example. It distinguishes from siblings like vm_apply_plan and vm_rollback_plan.

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?

Explicitly states auto-trigger when 2+ steps or 2+ VMs, and mentions showing plan to user before calling vm_apply_plan. Lacks explicit when-not-to-use, but context implies it's for planning multi-step operations.

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

vm_create_snapshotA
Idempotent

[WRITE] Create a snapshot of a VM.

Args: vm_name: VM to snapshot. snapshot_name: Snapshot name. description: Optional description. memory: Include memory state (heavier, allows resume). quiesce: Quiesce guest filesystem (requires running VMware Tools). target: vCenter/ESXi target name from config.

ParametersJSON Schema
NameRequiredDescriptionDefault
memoryNo
targetNo
quiesceNo
vm_nameYes
descriptionNo
snapshot_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Beyond annotations, the description discloses that memory snapshots are heavier and allow resume, quiesce requires VMware Tools, and target specifies the vCenter/ESXi target. However, it does not mention prerequisites like VM power state for memory snapshots.

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 very concise, front-loading the purpose with a single sentence and then listing parameters with brief explanations. Every sentence is informative with no wasted 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?

Given the complexity (6 parameters, related sibling tools, output schema exists), the description covers the main aspects. It explains parameter effects but could mention that a memory snapshot requires the VM to be powered on. Overall, very good.

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?

With 0% schema description coverage, the description must explain parameters. It provides useful explanations for memory, quiesce, and target, and clarifies vm_name and snapshot_name. While minimal, it adds meaning beyond the schema titles.

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 'Create a snapshot of a VM', providing a specific verb and resource. It distinguishes from sibling tools like vm_delete_snapshot and vm_list_snapshots by focusing on creation.

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 creating snapshots but lacks explicit guidance on when to use this tool versus alternatives like vm_revert_snapshot or vm_delete_snapshot. No 'when not to' or alternative suggestions are provided.

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

vm_deleteA
Destructive

[WRITE] Delete a VM (irreversible). VM must be powered off.

Args: vm_name: VM to delete. Must be powered off. target: vCenter/ESXi target name from config.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
vm_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/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. The description adds 'irreversible' and the power-off precondition, which are valuable behavioral traits 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, with two sentences and a brief args list. It front-loads the purpose and is free of fluff, making it efficient for an AI agent to process.

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

Completeness4/5

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

Given the tool's simplicity, the description covers the main purpose, preconditions, and parameters. It assumes the output schema handles return values, but omits potential error scenarios. Overall adequate for this context.

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?

With 0% schema description coverage, the description compensates by briefly explaining both parameters: 'vm_name: VM to delete. Must be powered off.' and 'target: vCenter/ESXi target name from config.' This adds meaning beyond the schema structure, though more detail on valid values could help.

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 it deletes a VM irreversibly, with a specific verb and resource. It distinguishes from sibling tools like vm_power_off or vm_clone by explicitly mentioning 'Delete' and 'irreversible'.

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 a precondition (VM must be powered off) but does not explicitly compare to alternatives or state when not to use. While it implies usage for permanent deletion, lack of direct comparison to siblings like vm_power_off or vm_create_snapshot limits guidance.

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

vm_delete_snapshotA
Destructive

[WRITE] Permanently delete a named snapshot, consolidating its delta disk into the parent.

Frees disk space and does NOT change the VM's current state (unlike vm_revert_snapshot, which discards changes since the snapshot). Works while the VM is powered on. Run vm_list_snapshots first for exact names — unknown names return the available list. Irreversible: confirm with the user before calling. Audited to ~/.vmware/audit.db.

Snapshot consolidation is slow for old/large delta disks (often minutes). By default (wait=False) this fires the delete and returns a task id immediately so it does not block your context — poll completion with vm_task_status. Set wait=True only for small snapshots where you want the final confirmation inline (blocks up to 30 min, then returns the task id).

Args: vm_name: Exact name of the VM owning the snapshot. snapshot_name: Exact snapshot name from vm_list_snapshots output. remove_children: False (default) = children are kept and consolidated; True = delete the entire snapshot subtree below this one as well. wait: False (default) = async, return task id immediately; True = block on consolidation. target: vCenter/ESXi target name from config.yaml; omit to use the default target.

Returns: Status string with a task id (poll via vm_task_status), or a not-found message.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNo
targetNo
vm_nameYes
snapshot_nameYes
remove_childrenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

Disclosure includes that it frees disk space, does not change VM state, consolidation can be slow, operation is irreversible, audited to audit.db, and async behavior with task IDs. This adds significant context 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.

Conciseness4/5

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

The description is well-structured with clear sections, but slightly lengthy. However, each sentence adds value, so it is only marginally penalized.

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?

Covers preconditions (run vm_list_snapshots), side effects (slow consolidation), error handling (returns not-found message), async behavior, and audit logging. Complete given the tool's complexity and available 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?

With 0% schema description coverage, the description fully explains all 5 parameters: vm_name, snapshot_name, remove_children (default and effect), wait (default and blocking behavior), and target (usage). Adds meaning beyond the 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 (Permanently delete a named snapshot) and the resource (snapshot). It distinguishes from the sibling vm_revert_snapshot by noting it does not change VM state, and references vm_list_snapshots for exact names.

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?

Explicitly explains when to use (to free disk space), contrasts with vm_revert_snapshot, advises running vm_list_snapshots first, warns about irreversibility and user confirmation, and explains async vs sync with wait parameter.

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

vm_guest_downloadA
Read-onlyIdempotent

[READ] Download a file from a VM to local machine via VMware Tools.

Requires VMware Tools running in the guest OS.

Args: vm_name: Target VM name. guest_path: File path inside the guest to download. local_path: Local destination path. username: Guest OS username (default "root"). password: Guest OS password. target: Optional vCenter/ESXi target name from config.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
vm_nameYes
passwordNo
usernameNoroot
guest_pathYes
local_pathYes

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?

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds the requirement of VMware Tools, which is useful behavioral context beyond annotations. No contradictions.

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 efficiently structured: two lines for purpose/prerequisite, followed by a bullet-style Args list. Every sentence adds value with no redundancy.

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 6 parameters and the presence of an output schema, the description covers prerequisites, parameter semantics, and read-only nature. It is complete for the tool's purpose.

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 lists each parameter with concise explanations, e.g., 'vm_name: Target VM name.' This adds meaning beyond the schema's titles and types, fully compensating for the lack of schema 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 starts with '[READ] Download a file from a VM to local machine via VMware Tools', providing a clear verb and resource. It distinguishes from siblings such as vm_guest_upload (uploads) and aligns with readOnlyHint annotation.

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?

It states the prerequisite 'Requires VMware Tools running in the guest OS', which guides when the tool can be used. While it doesn't explicitly contrast with siblings, the context of file download is clear from the name and description.

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

vm_guest_execA

[WRITE] Execute a command inside a VM via VMware Tools.

Requires VMware Tools running in the guest OS. Returns exit_code, stdout, stderr, and timed_out flag.

Note: VMware Guest Ops API does not capture stdout/stderr directly. To capture output, redirect to a file and use vm_guest_download: command="/bin/bash", arguments="-c 'ls -la /tmp > /tmp/output.txt'" Then download /tmp/output.txt.

Args: vm_name: Target VM name. command: Full path to program (e.g. "/bin/bash", "C:\Windows\System32\cmd.exe"). arguments: Command arguments (e.g. "-c 'whoami'"). username: Guest OS username (default "root"). password: Guest OS password. working_directory: Working directory inside guest (optional). target: Optional vCenter/ESXi target name from config.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
commandYes
vm_nameYes
passwordNo
usernameNoroot
argumentsNo
working_directoryNo

TDQS

A4.1/5.0
Behavior3/5

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

Annotations provide readOnlyHint=false and destructiveHint=false. The description adds that it requires VMware Tools and that output is not captured directly, but does not disclose potential risks of arbitrary command execution or timeout behavior.

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 front-loaded with the purpose, includes a prerequisite, return fields, and a practical note with example. It is concise but the note could be slightly condensed.

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

Completeness4/5

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

Given no output schema, the description lists return fields (exit_code, stdout, stderr, timed_out) and explains the output limitation. However, it omits details on command timeout duration and possible output truncation.

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%, but the description includes an Args section with brief descriptions for all 7 parameters, adding meaning beyond the plain schema (e.g., 'Full path to program' for command). Defaults are mentioned for username.

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 starts with '[WRITE]' and clearly states 'Execute a command inside a VM via VMware Tools,' providing a specific verb and resource. It distinguishes from siblings like vm_guest_download by explaining that output is not directly captured.

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 notes the prerequisite (VMware Tools running), provides an example of capturing output via vm_guest_download, but does not explicitly mention when not to use this tool or alternatives like vm_guest_exec_output.

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

vm_guest_exec_outputA

[WRITE] Execute a shell command inside a VM and capture stdout + stderr.

Automatically detects guest OS (Linux/Windows) and selects the correct shell. Output is captured by redirecting to a temp file, downloading it, then cleaning up — no manual redirection needed.

Returns exit_code, stdout, stderr, timed_out, os_family.

Args: vm_name: Target VM name. command: Shell command (e.g. "df -h", "ls /etc", "ipconfig"). username: Guest OS username (default "root"). password: Guest OS password. timeout: Max wait seconds (default 300). target: Optional vCenter/ESXi target name from config.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
commandYes
timeoutNo
vm_nameYes
passwordNo
usernameNoroot

TDQS

A4.5/5.0
Behavior4/5

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

The description discloses that the tool redirects output to a temp file, downloads it, and cleans up, which adds behavioral context beyond annotations. Annotations already indicate it's a write operation (readOnlyHint=false) and open-world (openWorldHint=true). The description does not contradict annotations and provides additional detail about the implementation.

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 well-structured with a one-line summary, bulleted process explanation, and a clear Args list. Every sentence provides value, and there is no verbose or redundant content. It is appropriately sized for the tool's complexity.

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

Completeness4/5

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

The tool has no output schema, but the description lists return fields (exit_code, stdout, stderr, timed_out, os_family). It explains the execution flow and OS detection. For a 6-parameter tool with no output schema, the description is nearly complete, though it could mention that the command may have side effects on the VM.

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 must compensate. It includes an Args section that explains each parameter: vm_name, command, username (default 'root'), password, timeout (default 300), target (optional). This adds significant meaning beyond the schema's bare titles and defaults, fully covering all six 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 'Execute a shell command inside a VM and capture stdout + stderr.' It uses a specific verb (Execute) and resource (VM guest), and the [WRITE] tag distinguishes it from read-only siblings like vm_guest_download. The purpose is unambiguous and differentiated from vm_guest_exec by emphasizing output capture.

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 explains the automatic OS detection and output capture mechanism, which helps the agent decide when to use this tool. However, it does not explicitly state when not to use it or mention alternatives like vm_guest_exec for fire-and-forget commands. The guidance is clear but lacks exclutions.

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

vm_guest_provisionA

[WRITE] Provision a VM by running a sequence of guest operations (exec / upload / service).

Combines key injection, software installation, and service startup into a single call. Steps execute in order; stops on first failure.

Step types:

  • exec: {"type": "exec", "command": "apt-get install -y nginx"}

  • upload: {"type": "upload", "local_path": "/tmp/id_rsa.pub", "guest_path": "/root/.ssh/authorized_keys"}

  • service: {"type": "service", "name": "nginx", "action": "start"}

Args: vm_name: Target VM name. username: Guest OS username. password: Guest OS password. steps: Ordered list of step dicts. timeout: Per-step timeout in seconds (default 300). target: Optional vCenter/ESXi target name from config.

Returns: dict with success, completed_steps, total_steps, results, error.

Example: steps = [ {"type": "upload", "local_path": "~/.ssh/id_rsa.pub", "guest_path": "/root/.ssh/authorized_keys"}, {"type": "exec", "command": "chmod 600 /root/.ssh/authorized_keys"}, {"type": "exec", "command": "apt-get install -y nginx"}, {"type": "service", "name": "nginx", "action": "enable"}, {"type": "service", "name": "nginx", "action": "start"}, ]

ParametersJSON Schema
NameRequiredDescriptionDefault
stepsYes
targetNo
timeoutNo
vm_nameYes
passwordYes
usernameYes

TDQS

A4.2/5.0
Behavior4/5

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

Discloses steps execute in order, stop on first failure, per-step timeout, and return dict structure. Annotations already indicate write (readOnlyHint=false) and non-destructive (destructiveHint=false); description adds behavioral details beyond annotations. No contradictions.

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?

Concise at ~15 lines with clear sections: purpose, step types, arguments, return, example. No redundant sentences; every part adds value. Front-loaded with key info.

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

Completeness4/5

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

Given 6 parameters, complex steps array, and no output schema, the description provides return format, step examples, and default timeout. Minor gap: prerequisites (e.g., VM must exist) not stated, but otherwise complete.

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?

With 0% schema description coverage, the description explains each parameter (vm_name, username, password, steps, timeout, target) and provides detailed step type examples. Adds meaning beyond bare schema, though could elaborate on target selection.

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 explicitly states 'Provision a VM by running a sequence of guest operations' with a clear verb (provision) and resource (VM), and distinguishes from sibling tools like vm_guest_exec (single exec) and vm_guest_upload (single upload) by combining multiple step types.

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 use for multi-step provisioning ('Combines key injection, software installation, and service startup into a single call') but does not explicitly state when not to use or name alternatives like vm_guest_exec for single commands. Guidelines are implied but not explicit.

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

vm_guest_uploadA

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

Requires VMware Tools running in the guest OS.

Args: vm_name: Target VM name. local_path: Local file path to upload. guest_path: Destination path inside the guest. username: Guest OS username (default "root"). password: Guest OS password. target: Optional vCenter/ESXi target name from config.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
vm_nameYes
passwordNo
usernameNoroot
guest_pathYes
local_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already indicate this is a write operation (readOnlyHint false) and not destructive. The description adds the prerequisite of VMware Tools and parameter explanations, but does not disclose side effects like file overwriting or permission requirements beyond the guest OS username/password.

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 yet comprehensive, structured with a header, prerequisite note, and parameter list. Every sentence adds value without redundancy.

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 core functionality, prerequisites, and all parameters. An output schema exists, so return value detail is optional. Minor gap: could mention expected output (e.g., success status), but overall it is sufficiently complete for a file upload tool.

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?

With 0% schema description coverage, the description fully compensates by explaining each parameter's purpose in the 'Args:' section, adding significant 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 tool uploads a file from local machine to a VM via VMware Tools, using specific verb and resource. It distinguishes from siblings like vm_guest_download and vm_guest_exec which handle downloads and commands.

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 mentions the prerequisite of VMware Tools running in the guest OS, providing clear context. However, it does not explicitly state when to use this tool vs alternatives or when not to use it, leaving usage guidance implied.

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

vm_list_plansA
Read-onlyIdempotent

[READ] List all pending/failed plans.

Returns plan summaries (plan_id, created_at, status, steps count, VMs affected). Stale plans (>24h) are auto-cleaned.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint, destructiveHint, idempotentHint, openWorldHint), the description adds that stale plans older than 24 hours are auto-cleaned, which is valuable behavioral context not captured 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 with two sentences, front-loads the [READ] tag, and every word adds value. No superfluous information.

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 list tool with no parameters and an output schema, the description fully covers functionality, return format, and an important behavioral note (auto-clean). Complete for the context.

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?

There are no parameters, so the description adds no parameter details. However, schema coverage is 100% and the description explains what the list returns, compensating for the lack of 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 it lists pending/failed plans with a [READ] tag, and summarizes returned fields like plan_id, created_at, status, steps count, and VMs affected. This distinguishes it from sibling tools like vm_create_plan or vm_apply_plan.

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 for inspecting pending/failed plans, but does not explicitly state when not to use it or mention alternatives. However, the purpose is clear enough to guide selection among siblings.

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

vm_list_snapshotsA
Read-onlyIdempotent

[READ] List the full snapshot tree of a VM, including nested child snapshots.

Read-only, no side effects. Call this before vm_revert_snapshot, vm_delete_snapshot, or deploy_linked_clone to get exact snapshot names. Returns an empty list when the VM has no snapshots.

Args: vm_name: Exact VM name as shown in vCenter inventory. target: vCenter/ESXi target name from config.yaml; omit to use the default target.

Returns: One dict per snapshot: name, description, created (timestamp), state (poweredOn/poweredOff at snapshot time), level (0 = root, higher = nesting depth). No pagination — snapshot trees are small.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
vm_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

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

Annotations already provide readOnlyHint, destructiveHint, idempotentHint, openWorldHint. Description adds value by stating no side effects, empty list behavior, and lack of pagination, complementing the annotations 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 well-structured with a clear summary line, bullet points for usage, and separate sections for args and returns. It is front-loaded with '[READ]' and every sentence adds value without being verbose.

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 existence of an output schema, the description still details the return format (one dict per snapshot with name, description, created, state, level) and mentions no pagination. Sibling tools are numerous, but this tool's role is clearly isolated. The description is complete for the tool's complexity.

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?

Despite 0% schema description coverage, the description thoroughly explains both parameters: vm_name as the exact VM name from vCenter inventory, and target as an optional vCenter/ESXi target from config.yaml, with a default behavior. This adds significant meaning beyond the 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 tool lists the full snapshot tree of a VM, including nested children. It specifies it is read-only and distinguishes itself from sibling tools by being a prerequisite for revert, delete, and linked clone operations.

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?

Explicitly instructs to call before vm_revert_snapshot, vm_delete_snapshot, or deploy_linked_clone. Also mentions it returns an empty list when no snapshots exist, providing clear context.

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

vm_list_ttlA
Read-onlyIdempotent

[READ] List all VMs with TTLs registered, including expiry time and status.

Returns a list of TTL entries with remaining_minutes and expired flag.

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?

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true. The description adds value by specifying the return structure (list with remaining_minutes and expired flag), which is consistent with annotations and provides additional behavioral context.

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

Conciseness5/5

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

The description is two short, front-loaded sentences. The first states the purpose with a clear verb, and the second describes the output. No unnecessary words.

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's low complexity (no parameters, simple list), the description fully covers what it does and what it returns. Annotations and output schema exist, and the description complements them adequately.

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?

No parameters exist (0 params), so baseline is 4. Schema description coverage is 100% trivially, and the description does not need to add parameter semantics.

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 it lists all VMs with TTLs, includes output details (expiry time, status, remaining_minutes, expired flag), and distinguishes from sibling tools like vm_set_ttl and vm_cancel_ttl.

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 listing TTL entries, but it does not explicitly state when to use this tool versus alternatives or when not to use it. The context is self-evident from sibling names, but no direct guidance is provided.

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

vm_migrateA

[WRITE] Migrate (vMotion) a VM to another host, optionally with storage vMotion.

If the target host has no access to the VM's current datastore, you MUST pass to_datastore — vCenter rejects cross-host vMotion without shared storage.

Args: vm_name: VM to migrate. to_host: Target ESXi host name. to_datastore: Target datastore (required for cross-storage hosts). target: vCenter/ESXi target name from config.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
to_hostYes
vm_nameYes
to_datastoreNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior4/5

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

Annotations already indicate write operation (readOnlyHint=false) and non-destructive. Description reinforces with [WRITE] prefix and clarifies condition for storage vMotion, adding context 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?

Concise, front-loaded with purpose, followed by conditions and bullet-pointed arguments. No wasted words.

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 output schema exists and annotations are present, the description covers purpose, key conditions, and parameter semantics sufficiently. Complete for this tool's complexity.

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 has no property descriptions (0% coverage), but description explains each parameter's role and the conditional requirement for to_datastore, adding significant value.

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 it migrates a VM to another host with optional storage vMotion. Uses specific verb+resource and distinguishes from sibling tools which cover other VM operations like clone, snapshot, etc.

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?

Explicitly says when to use to_datastore (if target host lacks access to current datastore) and why (vCenter rejects cross-host vMotion without shared storage). Provides clear guidance.

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

vm_power_offA
Destructive

[WRITE] Power off a VM — graceful guest shutdown by default, hard power-off with force=True.

Graceful mode calls VMware Tools guest shutdown and waits up to 120s; if Tools is not running or shutdown stalls, the response tells you to retry with force=True. An already-off VM returns success without change. Audited to ~/.vmware/audit.db. Use vm_power_on to start a VM; vm_delete requires the VM to be off first.

Args: vm_name: Exact VM name as shown in vCenter inventory (case-sensitive). force: False (default) = graceful guest shutdown via VMware Tools; True = immediate hard power-off (risks guest filesystem damage). target: vCenter/ESXi target name from config.yaml; omit to use the default target.

Returns: Status string: shut down, force powered off, already off, or a Tools-unavailable hint.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNo
targetNo
vm_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

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

Discloses graceful shutdown uses VMware Tools with 120s wait, that force risks filesystem damage, and that audit logging occurs. Adds significant context beyond destructiveHint annotation.

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?

Well-structured: [WRITE] tag, summary, detailed explanation, Args section, Returns. Every sentence adds value; no redundancy.

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?

Fully explains behavior, prerequisites, side effects, and return value. Differentiates well from 30+ sibling tools. No gaps given annotations and output schema hints.

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?

Covers all 3 parameters despite 0% schema coverage: vm_name is case-sensitive exact name, force defaults false with explanation, target from config.yaml with default. Provides complete semantics.

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?

Explicitly states 'Power off a VM' with two modes (graceful and hard). Distinguishes from siblings like vm_power_on and vm_delete by referencing them directly.

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?

Provides clear guidance on when to use graceful vs force, mentions retry with force if tools fail, and explains prerequisites (vm_delete requires VM off). Also advises use of vm_power_on for starting.

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

vm_power_onA
Idempotent

[WRITE] Power on a virtual machine.

Args: vm_name: Exact name of the virtual machine. target: Optional vCenter/ESXi target name from config. Uses default if omitted.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
vm_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations provide readOnlyHint false, destructiveHint false, idempotentHint true, openWorldHint true. The description adds a [WRITE] tag and explains target parameter behavior, which aligns with annotations. It does not detail idempotent behavior or state requirements, but adds value 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 very concise with a clear [WRITE] prefix and structured parameter explanations. No unnecessary text.

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 essential aspects for a simple power-on tool with output schema present. It could mention prerequisites like VM must exist or behavior if already powered on, but overall is adequate.

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. It clearly explains both parameters: 'Exact name' for vm_name and optional target with default behavior.

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 explicitly says 'Power on a virtual machine', which is a specific verb and resource. It clearly distinguishes from sibling tools like vm_power_off.

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 context on the tool's purpose (power on a VM) but does not explicitly state when not to use it or mention alternatives. The [WRITE] prefix adds clarity.

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

vm_reconfigureA

[WRITE] Change a VM's vCPU count and/or memory.

Pass only the fields you want to change; omitted fields are left untouched. Hot-add of CPU/memory requires it to be enabled on the VM and a running guest; otherwise power the VM off first (vm_power_off). Audited to ~/.vmware/audit.db.

Args: vm_name: Exact name of the VM to reconfigure. cpu: New vCPU count; omit to leave unchanged. memory_mb: New memory in MB; omit to leave unchanged. target: vCenter/ESXi target name from config.yaml; omit to use the default target.

Returns: Status string describing the applied change, or a VM-not-found error.

ParametersJSON Schema
NameRequiredDescriptionDefault
cpuNo
targetNo
vm_nameYes
memory_mbNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

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

Beyond annotations (readOnlyHint=false, destructiveHint=false), the description adds details: it labels itself as [WRITE], explains hot-add requirements, and mentions audit logging. No annotation contradictions.

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 purpose, followed by behavioral notes, prerequisites, and a clear parameter list. Every sentence adds value with no redundancy.

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's complexity (mutation, prerequisites, optional parameters), the description covers all necessary context: hot-add conditions, audit logging, parameter behavior, and return value. The output schema existence is noted, but the description still briefly describes the return.

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 explains each parameter in plain language (e.g., 'omit to leave unchanged'), adding meaning beyond the input schema. It compensates for the 0% schema description coverage by fully detailing all four 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 explicitly states the tool changes a VM's vCPU count and/or memory, using a clear verb and resource. It distinguishes from siblings like vm_create and vm_power_off by specifying CPU/memory reconfiguration.

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 provides explicit when-to-use and when-not-to-use guidance, including prerequisites for hot-add and a pointer to vm_power_off if power-off is needed. It also explains the optional target parameter.

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

vm_revert_snapshotA
Destructive

[WRITE] Revert a VM to a named snapshot (loses changes since snapshot).

Args: vm_name: VM to revert. snapshot_name: Snapshot to revert to. target: vCenter/ESXi target name from config.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
vm_nameYes
snapshot_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

The description explicitly mentions 'loses changes since snapshot', which directly aligns with the destructiveHint annotation and adds context beyond it. It also implies non-idempotency. No side effects like power state requirements are mentioned, but the core destructive behavior is well-disclosed.

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 and well-structured: a [WRITE] prefix, a single sentence stating the action and effect, followed by a clear Args list. Every sentence is informative; no wasted 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 simple revert tool with 3 parameters, the description covers purpose, effect, and parameter meanings. An output schema exists but is not needed in the description. Potential missing details include prerequisites (e.g., VM and snapshot existence) and error conditions, but overall the description is adequate for selecting and using the tool.

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?

With 0% schema coverage, the description compensates by listing and explaining each parameter: vm_name, snapshot_name, and target. The target is described as a vCenter/ESXi target name from config, adding real-world context not present in the schema. However, the explanations are minimal and could be more detailed.

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: reverting a VM to a named snapshot, with a specific verb ('Revert') and resource ('VM'). The warning 'loses changes since snapshot' distinguishes it from non-destructive snapshot operations like listing or creating snapshots, and fits well among sibling 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 does not explicitly state when to use this tool versus alternatives such as vm_create_snapshot or vm_delete_snapshot. While the destructive hint suggests careful use, no guidance on prerequisites or scenarios to avoid is provided, leaving the agent to infer context.

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

vm_rollback_planA
Destructive

[WRITE] Rollback executed steps of a failed plan in reverse order.

Only call this after vm_apply_plan returns status='failed' and the user confirms they want to rollback. Irreversible steps (delete_vm, revert_snapshot, etc.) are skipped with a warning.

Args: plan_id: The plan ID of the failed plan. target: Optional vCenter/ESXi target name from config.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
plan_idYes

TDQS

A4.5/5.0
Behavior4/5

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

The description adds behavioral context beyond annotations: it rolls back in reverse order, skips irreversible steps with warnings, and marks itself as [WRITE]. This complements the destructiveHint=true annotation effectively.

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 concise and front-loaded with [WRITE] and core purpose. The Args section is necessary given 0% schema coverage, but it could be integrated more cleanly. Still, no wasted sentences.

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 rollback tool, it covers when to use, what it does (reverse order, skip irreversible), and parameters. Missing return value details, but no output schema exists. Overall sufficient for the context.

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%, but the description explains both parameters: plan_id is 'the plan ID of the failed plan', and target is 'Optional vCenter/ESXi target name from config'. This adds meaning beyond the schema titles.

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 specifies the action ('rollback'), the resource ('executed steps of a failed plan'), and the order ('reverse order'). It distinguishes from sibling tools like vm_apply_plan and vm_create_plan by being specifically for rollback after failure.

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?

Explicit guidance is provided: call only after vm_apply_plan returns status='failed' and user confirms. It also warns that irreversible steps are skipped with a warning, which helps the agent decide when to invoke.

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

vm_set_ttlA

[WRITE] Set a Time-To-Live (TTL) for a VM. The daemon auto-deletes it when expired.

The scheduler daemon must be running (vmware-aiops daemon start) for automatic deletion. TTLs are persisted in ~/.vmware-aiops/ttl.json.

Args: vm_name: Name of the VM to auto-delete. minutes: Minutes until deletion (minimum 1). target: Optional vCenter/ESXi target name from config.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
minutesYes
vm_nameYes

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 description adds context beyond annotations: it's a write operation, auto-deletion depends on daemon, and TTLs persist to a JSON file. However, it does not explain behavior if daemon is not running, or idempotency of multiple calls. The annotations already provide safety signals; description complements them well.

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 short, well-structured with bold opening, prerequisite section, and parameter list. Every sentence adds value; no redundancy.

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?

While the description covers prerequisites, parameters, and persistence, it omits details on error handling, overwriting behavior for existing TTLs, and explicit return value description (though output schema may cover that). Minor gaps prevent a perfect score.

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?

With 0% schema description coverage, the description fully compensates by explaining each parameter's purpose, minimum for minutes, and optional nature of target. This 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 clearly states the verb 'Set' and resource 'VM', explains the TTL concept and auto-deletion behavior. It distinguishes itself from sibling tools like vm_cancel_ttl and vm_list_ttl through its unique action.

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 mentions a prerequisite (daemon must be running) and persistence details, but does not explicitly compare to siblings or provide when-to-use/not-use guidance. This leaves the agent without clear direction on choosing this tool over alternatives.

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

vm_task_statusA
Read-onlyIdempotent

[READ] Poll a long-running vSphere task by its id (from an async vm_delete_snapshot).

Use after vm_delete_snapshot returns a task id to check whether the consolidation has finished, instead of re-running the delete. Returns state (queued/running/success/error/ gone), progress percent, and the entity name. 'gone' means vCenter already garbage-collected a completed task — re-list the resource to confirm the final state.

Args: task_id: The task id string returned by an async write operation. target: vCenter/ESXi target name from config.yaml; omit to use the default target.

Returns: Dict with task_id, state, progress_pct, operation, entity, and error/note when relevant.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
task_idYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=true, indicating safe, read-only, idempotent behavior. The description adds details beyond annotations: lists possible states (queued/running/success/error/gone), progress percent, and entity name. It explains what 'gone' means and the appropriate next step. No contradiction with 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?

Approximately 150 words, well-structured with a one-line purpose statement, usage guidance, parameter list, and return description. Front-loaded with key information. Every sentence contributes value; no redundancy or irrelevant 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?

Given two simple parameters and no output schema, the description fully covers the tool's behavior. It specifies return fields: task_id, state, progress_pct, operation, entity, and error/note. Context signals indicate no nested objects or enums, so the description is complete and sufficient for an AI agent to use the tool 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?

Input schema has two parameters with 0% description coverage, but the description compensates well. It explains 'task_id' as 'the task id string returned by an async write operation' and 'target' as 'vCenter/ESXi target name from config.yaml; omit to use the default target'. This adds meaningful context beyond the schema, though no format examples are given.

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 starts with '[READ] Poll a long-running vSphere task by its id (from an async vm_delete_snapshot)', clearly specifying the verb ('poll'), resource ('vSphere task'), and origin context. It distinguishes itself from sibling tools by tying directly to an async operation from 'vm_delete_snapshot'.

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?

Explicitly states when to use: 'Use after vm_delete_snapshot returns a task id to check whether the consolidation has finished'. It also tells when not to use: 'instead of re-running the delete'. Additionally explains the 'gone' state and recommends re-listing the resource to confirm final state.

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

TDQS

A4.3/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose, and the descriptions thoroughly differentiate between similar operations (e.g., various deploy methods, guest exec variants). An agent can reliably select the correct tool for a given task without ambiguity.

Naming Consistency4/5

The naming convention predominantly follows a consistent verb_noun pattern with category prefixes (e.g., vm_*, cluster_*, batch_*). Minor deviations exist, such as 'vm_clean_slate' and 'reset_vcenter_alarm', but overall the pattern is clear and predictable.

Tool Count4/5

With 43 tools, the set is large but well-scoped for comprehensive vSphere management. The tools cover VM lifecycle, guest operations, cluster management, alarms, plans, and TTLs without feeling bloated. A slight reduction could improve conciseness, but each tool earns its place.

Completeness4/5

The tool surface covers the vast majority of common vSphere operations, including CRUD for VMs, cloning, snapshots, guest interaction, cluster management, and alarms. Minor gaps exist (e.g., no standalone host registration, no network or resource pool management), but core workflows are well-supported.

Maintenance

ActivityActive
ResponsivenessResponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to manage VMware vSphere virtual infrastructure through comprehensive operations including VM power control, snapshot management, resource monitoring, performance analytics, and bulk operations with built-in safety confirmations for destructive actions.
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to manage VMware vSphere infrastructure through 55 typed tools built on the govc CLI. It supports comprehensive operations including VM lifecycle management, snapshot control, datastore navigation, and networking configuration.
    25
    3
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Read-only VMware vCenter/ESXi monitoring. 8 MCP tools for VM inventory, host status, datastore capacity, cluster info, alarms, events, and VM details. Code-level enforced safety — no destructive operations exist in the codebase. Supports vSphere 6.5–8.0. Works with local models via Ollama/LM Studio.
    32
    12
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/vmware-skills/VMware-AIops'

If you have feedback or need assistance with the MCP directory API, please join our Discord server