Skip to main content
Glama
vmware-skills

VMware-Monitor

vm_performance

Read-onlyIdempotent

Fetch real-time CPU, memory, disk, and network usage per virtual machine, sorted by busiest first, to rank load across VMs.

Instructions

[READ] Real-time CPU/memory/disk/network utilisation per virtual machine.

Returns the list envelope with a real total (VMs that reported metrics) — with the default limit of 25, truncated tells you whether more VMs sit behind it. LIVE data (cpu_usage_pct, mem_usage_pct, mem_consumed_mb, mem_ballooned_mb, mem_swapped_mb, disk_read_kbps, disk_write_kbps, net_kbps), busiest first. mem_usage_pct is mem.usage.average — ACTIVE guest memory over configured, not consumed, so it can read low on a VM under pressure; non-zero mem_ballooned_mb (mem.vmmemctl.average) or mem_swapped_mb (mem.swapped.average) is the pressure signal. counters names the counter behind every field. Only powered-on VMs have a real-time provider; powered-off VMs are skipped. Point-in-time only.

Use this to rank load across VMs; for one VM's configuration use vm_info, and to see the same VM correlated with its host, alarms and events use vm_investigation_bundle.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoMax VM rows to return (default 25; None = all).
targetNovCenter/ESXi target from config (default if omitted).
vm_nameNoFilter to a single VM by exact name (None = all powered-on VMs).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changedv1.9.2
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / limit / description
      Added value: +"Max VM rows to return (default 25; None = all)."
    • addedInput schema / properties / target / description
      Added value: +"vCenter/ESXi target from config (default if omitted)."
    • addedInput schema / properties / vm_name / description
      Added value: +"Filter to a single VM by exact name (None = all powered-on VMs)."
    • changedOutput schema / (root)
      Previous value: -{
      -  "properties": {
      -    "result": {
      -      "items": {
      -        "additionalProperties": true,
      -        "type": "object"
      -      },
      -      "title": "Result",
      -      "type": "array"
      -    }
      -  },
      -  "required": [
      -    "result"
      -  ],
      -  "title": "vm_performanceOutput",
      -  "type": "object"
      -}New value: +null
  2. Addedv1.6.1

TDQS

A4.9/5.0
Behavior5/5

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

While annotations already declare readOnlyHint and idempotentHint, the description adds substantial behavioral context beyond those hints: the envelope structure with total and truncated, the meaning of mem_usage_pct (can read low under pressure), the ballooning/swapping signals as pressure indicators, and the point-in-time nature. It also names the specific counters behind fields, giving deep insight into data semantics.

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 lead sentence stating purpose, then a logical breakdown of the return envelope, data fields, and special semantics. Every sentence adds value, including the final routing sentence. It is dense but not wordy, and the information is front-loaded with the core purpose before diving into details.

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 (multiple metrics, envelope, counter names, memory semantics) and no output schema, the description covers all necessary context: what the return envelope contains, how to interpret mem_usage_pct versus ballooning/swapping, and the limitation to powered-on VMs. An agent can call this tool and interpret its results correctly without external documentation.

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

Parameters4/5

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

Schema description coverage is 100%, so the schema already documents all three parameters. However, the description adds important semantic context: it explains that the default limit of 25 can cause truncation and that vm_name filters to a single VM. This goes beyond simple field descriptions and helps an agent understand the effect of parameter choices.

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 reads real-time CPU/memory/disk/network utilization per VM and ranks them busiest first. It explicitly distinguishes from siblings by naming vm_info for configuration and vm_investigation_bundle for correlated host/alarms/events. The verb 'rank load' and resource 'per virtual machine' are specific and unambiguous.

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

Usage Guidelines5/5

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

Explicitly states when to use this tool ('rank load across VMs') and provides direct alternatives for different use cases: vm_info for a single VM's configuration, vm_investigation_bundle for correlated data. It also notes the constraint that only powered-on VMs are included, which is a key usage condition.

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