Skip to main content
Glama
soyrageagency

Proxmox MCP Server

πŸ–₯️ Proxmox MCP Server

Chat with your Proxmox VE cluster. A Model Context Protocol server that turns any MCP‑capable AI β€” Claude Desktop, Cursor, Continue, Zed β€” into a natural‑language operator for Proxmox Virtual Environment: nodes, QEMU VMs, LXC containers, storage, tasks and snapshots.

β€œList my VMs and which are down.” Β· β€œHow much RAM is web (VMID 101) using?” Β· β€œSnapshot db before I upgrade it.” Β· β€œGracefully shut down container 200.”

πŸ’» The built‑in proxmox-mcp-tui terminal dashboard β€” tabbed views (Guests Β· Nodes Β· Storage Β· Tasks), live CPU/memory/disk gauges, guest OS, search, snapshots and one‑key actions. More screenshots ↓

CI Node TypeScript MCP Proxmox VE npm npm downloads License: MIT

Designed, built & maintained by SoyRage Agency Β· https://soyrage.es/

⚑ New here? Install in one command β†’ Quick install.

🐳 Looking for the Docker equivalent? See the sister project docker-mcp-server β€” same philosophy, for Docker & Compose.


✨ New in this release

🌐

Run it on the cluster, not on your laptop

MCP normally means one server process per client, on the client's machine β€” backwards when the thing you are managing is the server. Set PROXMOX_MCP_HTTP=true and one instance serves every machine on your network over HTTP. Bearer token, loopback by default. β†’ Run it over the network

🩺

"Is anything wrong?" in one call

cluster_health checks quorum, node pressure, storage headroom, stopped guests and backup coverage, then reports only what needs attention. Plus find_idle_guests (long uptime, zero CPU, holding RAM) and find_orphaned_disks (images whose VM no longer exists). β†’ Diagnostics

πŸ’¬

Workflows your client offers you

MCP prompts β€” audit my cluster, plan a maintenance window, explain this guest, free up space. You no longer have to know which tool to ask for. β†’ Guided workflows

See the roadmap for what comes next.


Related MCP server: ProxmoxEmCP

πŸ›‘οΈ NEW β€” Resilience & Compliance

Stop hoping your backups work. Prove it β€” with signed evidence auditors accept.

Three new capabilities turn Proxmox MCP Server from β€œoperate the cluster” into β€œprove the cluster survives a disaster” β€” each one producing a cryptographically-signed, dated report mapped to ISO 27001 Β· NIS2 Β· DORA:

Capability

What it does

βœ…

Automated backup verification

Restores your latest vzdump into an isolated, ephemeral VM, boots it, runs health checks (service up, database responds, key-file checksums), destroys it, and signs a dated report. Almost nobody tests their restores β€” now it's automatic.

πŸ”

Patch orchestration with auto-rollback

Snapshot β†’ apply updates β†’ health check β†’ if it fails, roll back automatically. In dependency order, within a maintenance window. Kills the β€œI don't touch that server because I can't undo it” fear.

🎯

Scheduled DR drills

Executes a declarative YAML runbook against an isolated test env and generates the drill minutes (β€œacta”). No more DR plan rotting in a 2019 Word doc nobody ever ran.


πŸ“‘ Table of contents


⚑ Quick install (one command)

Already use an MCP client? Point it at the published package β€” nothing to clone or build:

"proxmox": {
  "command": "npx",
  "args": ["-y", "@soyrageagency/proxmox-mcp"],
  "env": { "PROXMOX_HOST": "https://192.168.1.10:8006", "PROXMOX_TOKEN_ID": "root@pam!mcp", "PROXMOX_TOKEN_SECRET": "…" }
}

Or try the terminal dashboard straight away: npx -y -p @soyrageagency/proxmox-mcp proxmox-mcp-tui

Just want the terminal dashboard? No Node required. Install the standalone rageprox binary β€” a Node runtime and the app fused into one file:

Windows (PowerShell):

irm https://raw.githubusercontent.com/soyrageagency/proxmox-mcp-server/main/scripts/install.ps1 | iex

macOS / Linux:

curl -fsSL https://raw.githubusercontent.com/soyrageagency/proxmox-mcp-server/main/scripts/install.sh | sh

Then run rageprox (preview with PROXMOX_MCP_DEMO=true rageprox). Re-run the installer any time to update β€” and the app tells you when a new version ships.

Prefer the MCP-server-for-Claude-Desktop path (with the config wizard)? Use the Node installer below.

Never done this before? It's 3 steps and about 3 minutes. You do not need to touch any config file β€” a friendly wizard asks you a few questions and sets up everything.

βœ… Step 1 β€” Install the two things you need (once)

  • Node.js (click the big green β€œLTS” button, next‑next‑finish).

  • Git.

βœ… Step 2 β€” Run one command

irm https://raw.githubusercontent.com/soyrageagency/proxmox-mcp-server/main/install.ps1 | iex
curl -fsSL https://raw.githubusercontent.com/soyrageagency/proxmox-mcp-server/main/install.sh | bash

βœ… Step 3 β€” Copy‑paste your details when the wizard asks

That's it β€” the wizard walks you through it and tests the connection for you:

  This wizard sets everything up in under a minute. You'll need:
    1. Your Proxmox web address (the one you log in to).
    2. An API token (safest) β€” or your Proxmox username + password.

  Proxmox address (e.g. https://192.168.1.10:8006): https://10.0.0.11:8006
  Do you have an API token? (Y/n): y
  Token ID (user@realm!name, e.g. root@pam!mcp): root@pam!mcp
  Token secret (paste the UUID): β€’β€’β€’β€’β€’β€’β€’β€’-β€’β€’β€’β€’-β€’β€’β€’β€’-β€’β€’β€’β€’-β€’β€’β€’β€’β€’β€’β€’β€’β€’β€’β€’β€’
  Verify the TLS certificate? (most Proxmox use self-signed β†’ No) (y/N): n
  Read-only mode? (view only β€” safest) (y/N): n

  Testing the connection…
  βœ“ Connected to Proxmox VE (8.2.4)
  βœ“ Saved credentials to .env
  βœ“ Added the "proxmox" server in your Claude config.

  All set!  β†’  restart Claude Desktop and ask "List my Proxmox VMs."

Then restart Claude Desktop and say: β€œList my Proxmox VMs and containers.” πŸŽ‰

In the Proxmox web UI: Datacenter β†’ Permissions β†’ API Tokens β†’ Add, pick user root@pam, name it mcp, and copy the secret (shown once). Your token ID is root@pam!mcp. Full details in Create a Proxmox API token. Prefer not to now? The wizard also accepts your username + password.

Run npm run setup from the project folder. The installer backs up and merges your existing Claude config, so other MCP servers are preserved.

Try demo mode β€” realistic fake data, no host needed.


🧭 What is this?

The Model Context Protocol (MCP) is an open standard that lets AI assistants talk to external tools over a well‑defined JSON‑RPC interface. Proxmox MCP Server is an MCP server that speaks that protocol over stdio and exposes your Proxmox VE cluster as a set of safe, richly‑described tools.

Point any MCP‑capable assistant at it and you can operate your virtualization stack in plain language β€” the model reads each tool's schema, decides which to call against the Proxmox REST API, and reports the results back to you. Built for home‑labbers and sysadmins who'd rather ask than remember qm and pct flags.


πŸš€ Feature overview

Area

Capabilities

🧭 Cluster

List nodes with load, node status, cluster quorum/membership, and a consolidated cluster_resources view.

πŸ–₯️ Guests

List QEMU VMs and LXC containers (filter by kind / running), live status, full config, and guest OS (via the QEMU agent β€” name, version, IPs).

βš™οΈ Lifecycle

Start Β· graceful shutdown Β· hard stop Β· reboot Β· suspend/resume β€” for VMs and containers.

🚚 Management

Migrate to another node Β· clone (from templates) Β· resize CPU/RAM Β· delete.

πŸ“¦ Backups

Backup (vzdump) Β· list archives Β· restore into a VMID.

🧱 Provisioning

List templates/ISOs Β· create LXC containers and QEMU VMs.

πŸ“Έ Snapshots

List, create (optionally with RAM), rollback and delete snapshots.

πŸ›‘οΈ Resilience & Compliance

Restore-test backups in an isolated VM Β· patch with automatic rollback Β· run DR drills β€” each producing a signed ISO 27001 / NIS2 / DORA evidence report. See ↑

πŸ’Ύ Storage

List storages per node with type, content and usage.

🧾 Tasks

Recent task log per node (backups, migrations, actions…).

⌨️ Terminal UI

A creative, lazydocker‑style TUI (proxmox-mcp-tui) with live gauges, guest OS, and one‑key actions.

πŸ›‘οΈ Safety

Global read‑only mode Β· guest allowlist (by VMID or name) Β· TLS verification control.

πŸ” Auth

API token (recommended) or username/password ticket auth.

🧩 Modular

Every capability is a toggleable plugin β€” expose exactly the surface you want.

🧱 Engineering

100% TypeScript, strict mode Β· tiny dependency surface Β· stderr‑only logging.


πŸ› οΈ How it works

                 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
   You  ◀──────▢ β”‚  AI assistant (Claude / Cursor / Continue …)  β”‚
                 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                              stdio Β· JSON‑RPC (MCP)
                 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                 β”‚              Proxmox MCP Server               β”‚
                 β”‚   config β†’ auth β†’ tool call β†’ Proxmox API     β”‚
                 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                          HTTPS Β· /api2/json (token or ticket)
                 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                 β”‚        Proxmox VE node / cluster (:8006)      β”‚
                 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

The server calls the Proxmox VE REST API (https://<host>:8006/api2/json). It resolves each guest's node automatically from /cluster/resources, so you address VMs and containers simply by VMID or name β€” no need to know which node they live on.


βœ… Requirements

Requirement

Notes

Node.js β‰₯ 18

ES modules + global fetch. Node 20+ recommended.

A Proxmox VE 7/8 node or cluster

Reachable on its API port (8006).

An API token (recommended)

Or a user/password. See Create a Proxmox API token.

An MCP client

Claude Desktop, Cursor, Continue, Zed, or the MCP Inspector.


πŸ“¦ Installation

git clone https://github.com/soyrageagency/proxmox-mcp-server.git
cd proxmox-mcp-server
npm install
npm run build

πŸ§ͺ Try it instantly β€” demo mode (no Proxmox needed)

Want to evaluate it right now without a cluster? Run in demo mode β€” the server serves a believable 2‑node lab (VMs, containers, storage, snapshots):

npm run build
PROXMOX_MCP_DEMO=true npm run inspect     # explore every tool in the MCP Inspector

Or point Claude Desktop at it with "PROXMOX_MCP_DEMO": "true" in the env block and ask β€œList my Proxmox VMs and containers.” You'll get output like:

VMID  KIND  NAME           NODE  STATUS   CPU   MEMORY          UPTIME
100   VM    web            pve   running  3.1%  1.8 GB/4.0 GB   22d 23h
101   VM    db             pve   running  8.7%  6.2 GB/8.0 GB   22d 23h
200   CT    nginx-proxy    pve   running  0.4%  96.0 MB/512 MB  22d 22h
201   CT    grafana        pve   running  1.2%  240 MB/2.0 GB   13d 21h

When you're ready, set PROXMOX_MCP_DEMO=false and add your real host + token.

With a real cluster

npm run inspect     # after setting PROXMOX_HOST + token (see below)

⌨️ The terminal UI (TUI)

Prefer the terminal? Launch proxmox-mcp-tui β€” a creative, professional, lazydocker‑style dashboard for your cluster that opens with a SoyRage Agency welcome, then drops you into a live, keyboard‑driven view. Hand‑rolled ANSI, zero UI dependencies.

npm run build
npm run tui        # β†’ interactive terminal dashboard
npm run tui:demo   # same, with realistic mock data (no cluster needed)

A warm welcome

Guests β€” OS, live gauges & one‑key actions

Tabbed views β€” Nodes Β· Storage Β· Tasks

πŸ€– Give orders to the AI β€” in plain language

πŸ›‘οΈ Resilience tab β€” restore-tests, patch runs & DR drills at a glance

Rendered in demo mode Β· watermarked Β© SoyRage Agency Β· soyrage.es

Features

  • Tabbed views β€” 1 Guests Β· 2 Nodes Β· 3 Storage Β· 4 Tasks Β· 5 Resilience (or Tab to cycle), each with column headers and usage bars.

  • πŸ›‘οΈ Resilience tab β€” the last verdict for backup verification, patch orchestration and DR drills, with measured RTO/RPO and the signing fingerprint. Press g to run the selected capability and write fresh signed evidence.

  • πŸ€– AI command bar β€” press a and type an order in plain English: β€œrestart db”, β€œshutdown 200”, β€œwhich VMs are down?”, β€œhow much RAM is web using?”. The AI proposes the action and asks you to confirm before it runs β€” questions get an instant answer. Powered by any OpenAI‑compatible endpoint (OpenAI, Ollama, LM Studio…); demo mode simulates it.

  • Live β€” a clock and cluster name in the header, auto‑refreshing every 5 s.

  • Search β€” press / to filter guests by name or VMID.

  • Help overlay β€” press ? for a keyboard cheat‑sheet.

  • Safe actions β€” destructive stop and every AI action ask for a y/n confirmation; read‑only mode hides all action keys.

  • Rich details β€” the selected guest shows its OS (via the QEMU agent), CPU/memory/disk gauges, cores and uptime; press s for its snapshots.

Keys: 1‑5/Tab views Β· ↑/↓ (or j/k) navigate Β· / filter Β· a ask AI Β· g run resilience Β· s snapshots Β· S start Β· d shutdown Β· x stop Β· b reboot Β· r refresh Β· ? help Β· q quit. VMs are cyan, containers magenta.

πŸ’‘ Enable the AI with PROXMOX_MCP_AI_ENDPOINT (+ _KEY, _MODEL). Works with Ollama locally for free. Without it, the bar still understands common orders via a built‑in rule engine.


πŸ›‘οΈ Resilience & Compliance (NEW)

Anyone can take a backup. The hard part β€” the part regulators now ask you to prove β€” is that you can recover. This module adds three capabilities that generate exactly that proof: a cryptographically-signed, dated evidence report (JSON + Markdown + printable HTML) mapped onto ISO 27001, NIS2 and DORA controls.

Every report is signed with an Ed25519 key (auto-generated on first use). An auditor can verify β€” offline, with only the bundled public key β€” that the report was produced by your system on the stated date and hasn't been altered since. Zero new dependencies.

Run any capability three ways: from your AI client (the tools below), from the TUI (Resilience tab β†’ press g), or wire it into cron/CI.

βœ… 1. Automated backup verification β€” restore-testing

Almost nobody tests their restores; they find out on the day of the disaster.

verify_backups takes the latest vzdump for each guest, restores it into an ephemeral VM fenced onto an isolated bridge (it can never touch production), boots it, and runs health checks:

  • Service up β€” the guest boots and its agent responds.

  • Database responds β€” e.g. pg_isready accepts connections.

  • Key-file checksums β€” critical files match a recorded baseline (drift is flagged, not rubber-stamped).

Then it destroys the ephemeral guest and signs a report with the measured RTO per guest. Supports ISO 27001 A.8.13 / A.5.29 Β· NIS2 Art. 21(2)(c) Β· DORA Art. 12.

verify_backups                    # test the latest backup of every guest
verify_backups { "vmid": 101 }    # just this guest

πŸ” 2. Patch orchestration with automatic rollback

β€œI don't touch that server, because if it breaks I don't know how to get back.”

orchestrate_patching removes the fear. For each guest, in dependency order, within an optional maintenance window:

snapshot β†’ apply updates β†’ health check β†’ if it fails, roll back to the snapshot automatically.

You get a report showing exactly what was patched and what was rolled back. Supports ISO 27001 A.8.8 / A.8.32 Β· NIS2 Art. 21(2)(e) Β· DORA Art. 9.

orchestrate_patching
orchestrate_patching { "guests": ["web", "db"], "window": "Sat 02:00-05:00" }

🎯 3. Scheduled DR drills

Many companies have their DR plan in a 2019 Word document that nobody has ever executed.

run_dr_drill executes a declarative YAML runbook against an isolated test environment, times every recovery step, measures RTO/RPO and produces the signed drill minutes (β€œacta”). The engine refuses to run if the runbook's environment looks like production. A ready-to-edit runbook lives in examples/dr-runbook.yaml:

name: Quarterly failover drill
environment: staging          # never "production" β€” the engine refuses
rpoHours: 24
steps:
  - action: restore
    guest: db
    from: latest
  - action: start
    guest: db
  - action: healthcheck
    guest: db
    check: db
  - action: failover
    guest: web
  - action: teardown
run_dr_drill                                   # built-in sample runbook
run_dr_drill { "path": "examples/dr-runbook.yaml" }
run_dr_drill { "runbook": "name: ...\nsteps: ..." }

Supports ISO 27001 A.5.30 Β· NIS2 Art. 21(2)(c) Β· DORA Art. 11 / 24-25.

πŸ“„ The evidence

Each run writes to PROXMOX_MCP_RESILIENCE_DIR (default ./resilience-reports/):

File

For

<id>.html

A branded report that prints straight to PDF for an auditor (shown above).

<id>.md

A diff-able Markdown report that lives in git.

<id>.json

The machine-readable record, including the signature block.

list_resilience_reports (available even in read-only mode) shows the most recent verdict per capability.

πŸ”’ Safety. The three run tools are mutating and are hidden in PROXMOX_MCP_READONLY mode (report listing stays available). Backup verification and DR drills operate on ephemeral, isolated guests; patching always snapshots first and rolls back on failure.

βš™οΈ Configuration

Variable

Default

Purpose

PROXMOX_MCP_RESILIENCE_DIR

resilience-reports

Where signed evidence is written.

PROXMOX_MCP_SIGNING_KEY

(auto)

Path to the Ed25519 signing key (generated if absent).

PROXMOX_MCP_EPHEMERAL_VMID_BASE

90000

First VMID of the ephemeral restore range.

PROXMOX_MCP_ISOLATED_BRIDGE

vmbr9

Isolated bridge ephemeral guests are fenced onto.

PROXMOX_MCP_MAINT_WINDOW

(anytime)

Default patching window, e.g. Sat 02:00-05:00.


πŸ”‘ Create a Proxmox API token

An API token is the safest way to authenticate (no password stored, revocable, scopable).

  1. In the Proxmox web UI go to Datacenter β†’ Permissions β†’ API Tokens β†’ Add.

  2. Pick a User (e.g. root@pam) and a Token ID (e.g. mcp). Copy the generated secret β€” it's shown only once.

    • Your PROXMOX_TOKEN_ID is then root@pam!mcp.

  3. Give the token permissions. For full control assign the PVEAdmin role at path /; for read‑only use PVEAuditor. (Uncheck Privilege Separation to inherit the user's privileges, or add an ACL for the token.)

  4. Put the values in your MCP client config / .env:

    PROXMOX_HOST=https://192.168.1.10:8006
    PROXMOX_TOKEN_ID=root@pam!mcp
    PROXMOX_TOKEN_SECRET=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Prefer least privilege: pair a PVEAuditor token with PROXMOX_MCP_READONLY=true for a safe, view‑only assistant.


πŸ”Œ Connecting to your AI client

Add the server to your MCP client. Example for Claude Desktop (%APPDATA%\Claude\claude_desktop_config.json on Windows, ~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "proxmox": {
      "command": "npx",
      "args": ["-y", "@soyrageagency/proxmox-mcp"],
      "env": {
        "PROXMOX_HOST": "https://192.168.1.10:8006",
        "PROXMOX_TOKEN_ID": "root@pam!mcp",
        "PROXMOX_TOKEN_SECRET": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "PROXMOX_VERIFY_TLS": "false",
        "PROXMOX_MCP_READONLY": "false"
      }
    }
  }
}

No install step needed: npx fetches the package on first run and keeps it up to date. A ready‑to‑edit copy lives in examples/claude_desktop_config.json. Restart your client and ask: β€œWhat Proxmox nodes and VMs do I have?”


🌐 Run it over the network (HTTP)

By default an MCP server talks over stdio: your AI client starts a copy of it as a child process, on your machine. That is fine for a laptop tool and awkward for a homelab, where the cluster you want to manage is a different machine entirely β€” and where you probably want your desktop, your laptop and your phone all talking to the same thing.

Set one variable and it serves Streamable HTTP instead:

PROXMOX_MCP_HTTP=true PROXMOX_MCP_HTTP_TOKEN="$(openssl rand -hex 32)" PROXMOX_HOST=https://192.168.1.10:8006 PROXMOX_TOKEN_ID='root@pam!mcp' PROXMOX_TOKEN_SECRET=… npx -y @soyrageagency/proxmox-mcp

Then point any MCP client at it:

{
  "mcpServers": {
    "proxmox": {
      "type": "http",
      "url": "http://10.0.0.5:8619/mcp",
      "headers": { "Authorization": "Bearer <the token you generated>" }
    }
  }
}

Variable

Default

What it does

PROXMOX_MCP_HTTP

false

Serve over HTTP instead of stdio.

PROXMOX_MCP_HTTP_HOST

127.0.0.1

Interface to bind. Use 0.0.0.0 only behind a VPN.

PROXMOX_MCP_HTTP_PORT

8619

TCP port.

PROXMOX_MCP_HTTP_PATH

/mcp

Endpoint path.

PROXMOX_MCP_HTTP_TOKEN

(none)

Bearer token required on every request. Set this.

PROXMOX_MCP_HTTP_ALLOWED_HOSTS

derived

Host headers accepted (DNS-rebinding protection).

PROXMOX_MCP_HTTP_ALLOWED_ORIGINS

(none)

Origin values accepted, for browser clients.

Read this before you expose it. Anyone who can reach the port can control your cluster. It binds loopback by default and warns loudly if you start it without a token. Put it behind your VPN β€” this is not a service to publish to the Internet, and combining it with PROXMOX_MCP_READONLY=true is a good idea for anything you do not fully trust.

There is also GET /health, which needs no token, for LXC and container healthchecks.


🩺 Diagnostics

Three read-only tools aimed at the questions you actually ask, rather than at the API surface:

cluster_health β€” one call that answers is anything wrong? It checks quorum, per-node CPU and memory pressure, storage headroom, guests that are not running, how stale the newest backup is, and which guests have no backup at all. It reports findings ranked by severity, not a data dump:

MOSTLY HEALTHY β€” 2 warning(s), nothing critical.

   AREA     DETAIL
-  -------  -----------------------------------------------------------------
!  guests   2 of 7 guest(s) not running: 102 windows-rdp, 203 backup-runner.
!  backups  4 guest(s) have no backup at all: 102, 200, 202, 203.
βœ“  quorum   Cluster "soyrage-lab" is quorate (2 nodes).
βœ“  nodes    All 2 node(s) online.
βœ“  storage  All 3 storage(s) below 85.0%.

find_idle_guests β€” guests with long uptime and near-zero CPU, sorted by the memory they are holding. It also says out loud that idle-by-design services exist, so the assistant does not cheerfully suggest shutting down your DNS resolver.

find_orphaned_disks β€” disk images whose owning VMID has no guest. Deleting a VM does not always remove every volume, and the leftovers are invisible in the web UI. On a lab that has been running a while this routinely finds tens of GB.

All three are read-only, so they stay available with PROXMOX_MCP_READONLY=true, and all three work in demo mode.


πŸ’¬ Guided workflows (prompts & resources)

Tools only answer a question you already knew how to ask. MCP prompts are the other half: your client lists them, so the workflow is discoverable without knowing which of the 39 tools to reach for or in what order.

Prompt

What it does

audit-cluster

Full read-only sweep β€” health, waste, idle guests, backup coverage β€” ending in a prioritised list of what to do. Narrow it with capacity, reliability or waste.

plan-maintenance

Works out the safe order to reboot or patch, what to snapshot first, and what breaks while each guest is down.

explain-guest

Everything about one VM or container in plain language, including whether it is actually protected.

free-up-space

Finds reclaimable space and ranks it by space returned Γ· risk, with the command for each.

Each prompt also tells the assistant what a good answer looks like: verdict first, findings ranked, no padding, and an explicit instruction not to change anything.

Resources expose the cluster as attachable context, so the model can be handed the current picture instead of spending three tool calls rebuilding it:

  • proxmox://cluster/overview β€” nodes, guests and storage in one snapshot.

  • proxmox://server/capabilities β€” which plugins are loaded, whether the server is read-only, and what the allowlist permits.


βš™οΈ Configuration reference

Every setting is an environment variable. A local .env is loaded automatically; a JSON config file (proxmox-mcp.config.json) provides defaults. Precedence (low β†’ high): defaults β†’ config file β†’ .env β†’ environment. See .env.example.

Variable

Default

Description

PROXMOX_HOST

β€”

API base URL, e.g. https://192.168.1.10:8006.

PROXMOX_TOKEN_ID

β€”

API token id user@realm!tokenname (recommended).

PROXMOX_TOKEN_SECRET

β€”

API token secret (UUID).

PROXMOX_USER

β€”

user@realm for ticket auth (used only if no token).

PROXMOX_PASSWORD

β€”

Password for ticket auth.

PROXMOX_VERIFY_TLS

false

Verify the node's TLS certificate.

PROXMOX_MCP_READONLY

false

Hide all state‑changing tools.

PROXMOX_MCP_DEMO

false

Serve fabricated demo data (no real host needed).

PROXMOX_MCP_ALLOWLIST

β€”

Comma‑separated VMIDs/names the AI may touch (empty = all).

PROXMOX_MCP_PLUGINS

β€”

Load only these plugins (empty = all).

PROXMOX_MCP_DISABLED_PLUGINS

β€”

Disable these plugins. about is locked.

PROXMOX_MCP_LOG_LEVEL

info

debug | info | warn | error.

PROXMOX_MCP_AI_ENDPOINT

β€”

OpenAI‑compatible base URL for the TUI's AI copilot (empty = rule‑based).

PROXMOX_MCP_AI_KEY

β€”

Bearer key for the AI endpoint.

PROXMOX_MCP_AI_MODEL

gpt-4o-mini

Model name for the AI endpoint.

PROXMOX_MCP_CONFIG

proxmox-mcp.config.json

Path to the optional JSON config file.


πŸ”’ TLS & self‑signed certificates

Proxmox ships a self‑signed certificate by default, so PROXMOX_VERIFY_TLS=false (the default) is expected for most home‑labs β€” the connection is still encrypted, just not certificate‑verified. TLS control is per‑request (via undici), so it does not disable verification globally for your process.

Set PROXMOX_VERIFY_TLS=true only when your node presents a certificate your system trusts (e.g. a Let's Encrypt cert, or an internal CA / reverse proxy in front of :8006).


πŸ›‘οΈ Security model & networking

This server can control your infrastructure β€” treat access like root SSH.

Control

What it does

Read‑only mode (PROXMOX_MCP_READONLY=true)

Hides every lifecycle/snapshot‑mutating tool. Pair with a PVEAuditor token.

Guest allowlist (PROXMOX_MCP_ALLOWLIST)

Restricts all guest tools to matching VMIDs/names; anything else returns a clear error.

Scoped API token

Grant the token only the privileges it needs; revoke instantly from the UI.

Least privilege

PVEAuditor + read‑only = a safe, view‑only assistant.

Networking: the Proxmox API listens on :8006. Reach a remote node over a VPN (WireGuard / Tailscale) rather than exposing 8006 to the Internet. The MCP server runs locally beside your AI client and connects out to Proxmox β€” it opens no inbound ports of its own.

Safety recipes

# View-only assistant (great for demos / dashboards)
PROXMOX_MCP_READONLY=true          # + a PVEAuditor token

# Only let the AI manage two specific guests
PROXMOX_MCP_ALLOWLIST=101,web

# Expose only cluster/guest insight, no storage/tasks
PROXMOX_MCP_PLUGINS=nodes,guests,cluster

🧰 Complete tool reference

Tools marked W change state and are hidden when PROXMOX_MCP_READONLY=true. Guests are addressed by VMID or name.

Identity

Tool

Description

about

Version, credits and the welcome banner.

list_plugins

The modular plugins and whether each is enabled.

Insight (read‑only)

Tool

Parameters

Description

list_nodes

β€”

Cluster nodes with status, CPU and memory.

node_status

node

Detailed status of one node.

list_guests

kind? (qemu/lxc), runningOnly?

All VMs & containers with live stats.

guest_status

guest

Live status of one VM/container.

guest_config

guest

Full configuration of one guest.

guest_osinfo

guest

The guest's operating system (agent name/version + IPs).

list_storage

node

Storages on a node with usage.

list_tasks

node, limit?

Recent tasks on a node.

cluster_status

β€”

Cluster membership & quorum.

cluster_resources

type?

Consolidated nodes/guests/storage view.

list_snapshots

guest

Snapshots of a VM/container.

list_backups

node?, storage?

vzdump backup archives with VMID, size, age.

list_templates

node?

Container templates (vztmpl) and install ISOs.

list_resilience_reports

β€”

Recent signed resilience evidence (verify / patch / DR).

Lifecycle (W)

Tool

Parameters

Description

start_guest

guest

Power on a VM/container.

shutdown_guest

guest, timeout?

Graceful ACPI/OS shutdown (preferred).

stop_guest

guest

Hard stop (power‑cord). Destructive β€” confirm first.

reboot_guest

guest

Graceful reboot.

suspend_guest

guest, toDisk?

Pause a VM in RAM (or hibernate to disk).

resume_guest

guest

Resume a suspended VM.

Management (W)

Tool

Parameters

Description

migrate_guest

guest, target, online?

Move a guest to another node (live if running).

clone_guest

guest, newid, name?, full?, target?

Clone a VM/CT (e.g. from a template).

set_guest_resources

guest, cores?, memory?

Quickly change CPU cores / RAM (MB).

backup_guest

guest, storage, mode?, compress?

Create a vzdump backup to a storage.

delete_guest

guest, confirm, purge?

Destroy a guest (guarded: confirm must equal the VMID).

Backups & provisioning (W)

Tool

Parameters

Description

restore_backup

volid, vmid, node?, storage?, force?

Restore a vzdump archive into a VMID.

create_container

vmid, ostemplate, storage, hostname?, cores?, memory?, diskGb?, …

Create an LXC container from a template.

create_vm

vmid, storage, name?, diskGb?, cores?, memory?, iso?, ostype?, …

Create a QEMU VM (with a disk + optional install ISO).

Snapshots (W)

Tool

Parameters

Description

create_snapshot

guest, name, description?, withRam?

Take a snapshot (optionally with VM RAM).

rollback_snapshot

guest, name

Revert to a snapshot (destructive).

delete_snapshot

guest, name

Remove a snapshot.

Resilience & Compliance (W) β€” details ↑

Tool

Parameters

Description

verify_backups

vmid?, node?

Restore-test the latest backup(s) in an isolated ephemeral VM; sign the report.

orchestrate_patching

guests?, window?

Snapshot β†’ patch β†’ health-check β†’ auto-rollback on failure; sign the report.

run_dr_drill

runbook?, path?

Execute a declarative YAML DR runbook; sign the drill minutes.


πŸ’¬ Example conversations

You say…

The assistant calls…

β€œShow me all my VMs and containers.”

list_guests

β€œWhich containers are running?”

list_guests { kind: "lxc", runningOnly: true }

β€œIs node pve healthy?”

node_status { node: "pve" }

β€œHow is VMID 101 doing?”

guest_status { guest: "101" }

β€œSnapshot db before the upgrade.”

create_snapshot { guest: "db", name: "pre-upgrade" }

β€œGracefully shut down container 200.”

shutdown_guest { guest: "200" }

β€œHow full is storage on pve?”

list_storage { node: "pve" }

β€œWhat happened on pve recently?”

list_tasks { node: "pve" }

β€œWho built this?”

about


🧩 Modular plugin architecture

The server is assembled from independent plugins, each owning one capability group; which load is driven entirely by configuration. The about plugin is locked β€” it carries the SoyRage Agency identity and cannot be disabled.

Plugin

Category

Type

Tools

about πŸ”’

identity

read

about, list_plugins

nodes

nodes

read

list_nodes, node_status

guests

guests

read

list_guests, guest_status, guest_config, guest_osinfo

storage

storage

read

list_storage

tasks

tasks

read

list_tasks

cluster

cluster

read

cluster_status, cluster_resources

snapshots

snapshots

read/write

list_snapshots, create/rollback/delete_snapshot

lifecycle

lifecycle

write

start/shutdown/stop/reboot/suspend/resume_guest

management

management

write

migrate/clone/backup/delete_guest, set_guest_resources

backups

backups

read/write

list_backups, restore_backup

provisioning

provisioning

read/write

list_templates, create_container, create_vm

resilience

resilience

read/write

list_resilience_reports, verify_backups, orchestrate_patching, run_dr_drill

PROXMOX_MCP_PLUGINS=                                # (env) empty = load all
PROXMOX_MCP_DISABLED_PLUGINS=lifecycle,snapshots    # insight only

Ask the assistant β€œlist the plugins” any time to see what's enabled.


πŸ—‚οΈ Project structure

proxmox-mcp-server/
β”œβ”€β”€ assets/soyrage-banner.svg  # SoyRage Agency identity banner
β”œβ”€β”€ examples/                  # Claude config + config-file examples
β”œβ”€β”€ install.sh / install.ps1   # One-command bootstrap for beginners
β”œβ”€β”€ scripts/install.mjs        # Cross-platform Claude Desktop configurator
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ index.ts               # Entry point: banner, wiring
β”‚   β”œβ”€β”€ branding.ts            # SoyRage identity, ASCII banner, MCP instructions
β”‚   β”œβ”€β”€ plugins.ts             # Modular plugin catalogue & loader
β”‚   β”œβ”€β”€ config.ts              # Layered config (defaults β†’ file β†’ .env β†’ env)
β”‚   β”œβ”€β”€ logger.ts              # stderr-only structured logger
β”‚   β”œβ”€β”€ proxmox/
β”‚   β”‚   └── client.ts          # Typed Proxmox VE API client (token/ticket, TLS)
β”‚   β”œβ”€β”€ tools/                 # One module per plugin's tools
β”‚   β”‚   β”œβ”€β”€ context.ts Β· about.ts Β· nodes.ts Β· guests.ts Β· cluster.ts
β”‚   β”‚   β”œβ”€β”€ storage.ts Β· tasks.ts Β· snapshots.ts Β· lifecycle.ts
β”‚   β”‚   β”œβ”€β”€ management.ts Β· backups.ts Β· provisioning.ts Β· resilience.ts
β”‚   β”œβ”€β”€ resilience/            # Resilience & Compliance engine
β”‚   β”‚   β”œβ”€β”€ engine.ts          # FaΓ§ade: run β†’ sign β†’ persist β†’ summarise
β”‚   β”‚   β”œβ”€β”€ backup-verifier.ts # Restore-test into an isolated ephemeral VM
β”‚   β”‚   β”œβ”€β”€ patch-orchestrator.ts  # Snapshot β†’ patch β†’ health β†’ auto-rollback
β”‚   β”‚   β”œβ”€β”€ dr-drill.ts        # Execute a declarative recovery runbook
β”‚   β”‚   β”œβ”€β”€ runbook.ts         # Dependency-free YAML runbook parser
β”‚   β”‚   β”œβ”€β”€ report.ts          # Control mapping + Markdown/HTML rendering
β”‚   β”‚   β”œβ”€β”€ signing.ts         # Ed25519 evidence signing (node:crypto)
β”‚   β”‚   └── types.ts Β· util.ts
β”‚   └── utils/                 # format.ts (tables/units) Β· result.ts (MCP helpers)
β”œβ”€β”€ examples/dr-runbook.yaml   # Ready-to-edit DR drill runbook
β”œβ”€β”€ .env.example Β· LICENSE Β· README.md

πŸ§ͺ Development

npm run dev        # hot-reload with tsx
npm run typecheck  # strict type check, no emit
npm run build      # compile to dist/
npm run start      # run the built server
npm run inspect    # launch the MCP Inspector
npm run setup      # build + configure Claude Desktop

Design notes: stdout is reserved for the JSON‑RPC stream (logs β†’ stderr); the Proxmox client resolves guest β†’ node automatically; failing tool calls return a clean isError result instead of crashing the connection; TLS control is per‑request via undici.


🩺 Troubleshooting & FAQ

Check PROXMOX_HOST (include https:// and :8006), that the node is reachable (VPN?), and your token/credentials. With a self‑signed cert keep PROXMOX_VERIFY_TLS=false. The server keeps running so tool calls return a friendly error in your chat client.

The token/user lacks privileges for that path. Assign an appropriate role (PVEAuditor for read, PVEAdmin/PVEVMAdmin for control) at path / or on the specific VM, and make sure the token isn't limited by Privilege Separation without an ACL.

You're in read‑only mode (PROXMOX_MCP_READONLY=true) or the lifecycle plugin is disabled. Adjust and restart your MCP client.

No. The server talks only to your Proxmox API and your MCP client over local stdio. It makes no other outbound calls.


πŸ—ΊοΈ Roadmap

The full roadmap β€” what is shipped, what is next, and what is deliberately not planned β€” lives in ROADMAP.md.

The short version: one-command install into an LXC on any Proxmox host, then finer-grained permissions than the current read-only/read-write switch. Metrics history and multi-cluster are further out because they need real design first.

Explicitly not planned: replacing the Proxmox web UI, autonomous action without confirmation, and telemetry of any kind.


🧰 More from the SoyRage self‑hosting suite

Proxmox MCP Server is part of a family of open‑source infrastructure tools built with the same care β€” same design language, same safety‑first defaults, same "chat with your infra" philosophy:

Project

What it does

πŸ–§ Proxmox MCP Server

(you are here) Chat with your Proxmox VE cluster β€” nodes, VMs & LXC, snapshots and full guest CRUD, plus a tabbed terminal dashboard with an AI command bar.

🐳 Docker MCP Server

Chat with your Docker host β€” containers, logs, Compose, a live web panel and a TUI with an AI copilot.

🚚 VMware β†’ Proxmox Toolkit (V2P)

Leaving vSphere after the Broadcom price hikes? Inventory vCenter, score compatibility, estimate cost & time, plan disk conversion and export a professional PDF assessment.

πŸ—ΊοΈ NetAtlas

Living infrastructure documentation β€” agentless discovery that auto-generates a network diagram, inventory, VLAN & service-dependency maps, and tells you what changed since last time.

πŸ›‘οΈ MailAegis

Corporate email threat analyzer β€” VirusTotal, ClamAV and an in-house phishing/BEC engine, inside a mail client.


πŸ’™ Support the project

Proxmox MCP Server is free and MIT licensed. If it saves you time, you can support development on PayPal β€” a ⭐ on the repo helps just as much.


πŸ–‹οΈ Credits & License

Designed, built and maintained by SoyRage Agency β€” https://soyrage.es/

Released under the MIT License β€” use it, modify it, self-host it, ship it commercially.

If you build something on top of it, a link back to soyrage.es is appreciated but never required.

Β© 2026 SoyRage Agency β€” https://soyrage.es/ Β· Made with care in Valencia, Spain.

Available Tools

27 tools
aboutAbout this serverA

Show who built this Proxmox MCP Server and how it is licensed. Call this to greet the user with the SoyRage Agency welcome banner.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It accurately describes the tool as showing builder and license info, with no side effects or destructive behavior. It is straightforward and honest.

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?

Two sentences, front-loaded with purpose and followed by usage guidance. No wasted words. Structure is optimal for a simple tool.

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

Completeness5/5

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

For a zero-parameter tool with no output schema, the description gives all necessary information: what the tool does and when to use it. No gaps given the simplicity.

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 schema coverage is 100% trivially. The description adds no parameter info, but none is needed. Baseline is 3, but the absence of parameters makes this perfectly adequate.

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 shows who built the server and its license, and distinguishes it from sibling Proxmox management tools by being purely informational about the server itself.

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 to call this tool to greet the user with a welcome banner, providing clear context. It does not explicitly exclude alternatives, but the context is sufficient given siblings are operational tools.

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

backup_guestBackup guest (vzdump)A

Create a backup of a VM or container to a storage using vzdump. mode snapshot (default, no downtime), suspend, or stop.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoBackup mode (default: snapshot).
guestYesVMID or name.
storageYesTarget storage id (must allow 'backup').
compressNoCompression (default: zstd).

TDQS

A3.7/5.0
Behavior3/5

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

No annotations exist, so the description must disclose behavioral traits. It mentions that snapshot mode 'has no downtime' and lists three modes, but does not elaborate on other behaviors like whether the backup is synchronous, effect on guest performance, permission requirements, or if the tool can cause data loss. Some context is provided but not comprehensive.

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?

Two sentences with zero waste. The first sentence gives the core purpose, the second adds essential detail about the mode parameter. Every word is necessary and informative.

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

Completeness3/5

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

The description covers the basic action and key parameter details, but lacks information about output/return value (e.g., task ID, success indication). Since there is no output schema, the description should at least mention what the agent can expect upon successful invocation. The description is sufficient for a simple backup command but incomplete for automated usage.

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 100%, so the schema already describes all parameters. The description adds meaningful context: it explains that mode 'snapshot' is the default with 'no downtime', and enumerates the modes again. This goes beyond the raw enum description in the schema by clarifying the default and the no-downtime benefit, helping the agent understand 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?

Clearly states 'Create a backup of a VM or container to a storage using vzdump.' The verb 'create a backup', resource 'VM or container', and method 'vzdump' are specific. Distinguishes from sibling tools like clone_guest or create_snapshot by focusing on backup. Also mentions the three modes, adding clarity.

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

Usage Guidelines2/5

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

No explicit guidance on when or when not to use this tool versus alternatives. The sibling tools list includes many related actions (e.g., clone, snapshot, shutdown) but the description does not differentiate. The modes are described but without context for choosing between them. Implicit usage for backing up is clear, but no exclusionary context.

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

clone_guestClone guestA

Clone a VM or container into a new one. Great for deploying from a template. full makes an independent full clone (vs. a linked clone).

ParametersJSON Schema
NameRequiredDescriptionDefault
fullNoFull clone (independent copy).
nameNoName/hostname for the clone.
guestYesSource VMID or name (often a template).
newidYesVMID for the new guest (must be free).
targetNoTarget node for the clone.

TDQS

A3.6/5.0
Behavior3/5

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

Explains the 'full' parameter (full vs. linked clone) but omits other behavioral traits like prerequisites, side effects (e.g., resource usage), or whether the source must be powered off. No annotations provided.

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?

Extremely concise at two sentences, front-loaded with action. No wasted words.

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

Completeness2/5

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

No output schema, yet description fails to mention what the tool returns (e.g., new VMID or status). Does not cover important operational context like resource requirements or potential conflicts.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline 3. The description adds context for the 'full' parameter but does not enhance meaning for other parameters (guest, newid, name, 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?

Description clearly states the verb 'Clone' and resource 'VM or container'. It highlights deployment from a template, distinguishing it from sibling tools like backup_guest or migrate_guest.

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?

Indicates good use case ('deploying from a template') but lacks explicit when-not-to-use or alternatives. Sibling tools exist for backup or migration, but no exclusion guidance.

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

cluster_resourcesCluster resourcesA

A single consolidated view of the cluster's resources β€” nodes, VMs, containers and storage β€” with status and utilisation. Filter by type.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoRestrict to one resource type.

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must bear the full burden. It declares a read-only view, but lacks details on authorization, resource consumption, or any side effects. Behavioral context is minimal.

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?

Two sentences efficiently convey purpose, scope, and filtering capability with no extraneous words. Information is front-loaded and well-structured.

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

Completeness3/5

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

The description mentions 'status and utilisation' but does not detail the output structure. With no output schema and moderate complexity, more detail on returned data would improve completeness.

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?

The schema covers the single parameter 'type' with full coverage via enum and description. The tool description adds 'filter by type', which is largely redundant with the schema parameter description. Minimal added 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?

The description clearly states it provides a consolidated view of cluster resources (nodes, VMs, containers, storage) with status and utilization. It distinguishes itself from sibling tools like list_nodes or list_storage by offering a combined overview with filtering.

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 a high-level overview via 'single consolidated view' and 'filter by type', but does not explicitly state when to prefer this over specific list tools or provide exclusions.

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

cluster_statusCluster statusA

Report cluster membership and quorum: each node's online state and whether the cluster is quorate. On a single node it reports standalone.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

No annotations exist, so the description carries full burden. It discloses that on a single node it reports standalone, which is a behavioral nuance. However, it does not mention idempotency, auth requirements, or side effects, though as a read-only status tool, these are less critical.

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?

Two concise sentences, front-loaded with the main purpose. Every sentence adds value with no waste.

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

Completeness5/5

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

Given the tool has no parameters, no output schema, and a simple purpose, the description fully covers what the tool does and what information it reports (membership, quorum, standalone). No 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 zero parameters with 100% coverage. With no parameters, the description need not add parameter details. The baseline of 4 for zero parameters is appropriate.

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

Purpose5/5

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

The description clearly states it reports cluster membership and quorum, specifying each node's online state and whether quorate. It also covers the standalone case, distinguishing it from sibling tools like node_status or cluster_resources.

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 checking cluster health but does not explicitly state when to use this tool vs alternatives like cluster_resources. No exclusions or situational guidance are provided.

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

create_snapshotCreate snapshotA

Take a snapshot of a VM or container. Optionally include the VM's RAM (vmstate) so it can be resumed exactly.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesSnapshot name (letters/digits/_/-).
guestYesVMID or name.
withRamNoInclude VM RAM state (QEMU only).
descriptionNoOptional description.

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It discloses the optional behavior of including RAM state ('vmstate') but does not describe other behavioral traits like storage impact, prerequisites, or error handling. This is adequate but minimal.

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 sentences, front-loaded with the core action, and contains no unnecessary words. It efficiently conveys the purpose and optional behavior.

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 essential purpose and optional RAM inclusion. No output schema exists, so return values are not required. However, it could mention prerequisites (e.g., guest must exist) or limitations, but for a simple snapshot tool, it is sufficiently complete.

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?

Input schema has 100% description coverage, so baseline is 3. The description adds no additional meaning beyond the schema; it only restates that withRam is for QEMU guests, but that is already in the schema description.

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

Purpose5/5

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

The description clearly states the tool's function: creating a snapshot of a VM or container. It distinguishes from sibling tools like delete_snapshot and rollback_snapshot by specifying the action of taking a snapshot and including optional RAM state inclusion.

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 (to take a snapshot) and optionally include RAM state. It does not explicitly mention when not to use it or alternative tools, but the context is clear given the sibling tools.

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

delete_guestDelete guestA

PERMANENTLY destroy a VM or container and its disks. IRREVERSIBLE. You must pass confirm equal to the guest's VMID to proceed.

ParametersJSON Schema
NameRequiredDescriptionDefault
guestYesVMID or name.
purgeNoAlso remove from backup jobs / HA (default: true).
confirmYesMust equal the guest's VMID to confirm.

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It discloses the destructive, irreversible nature and the confirm guard. However, it does not mention the purge parameter's behavior (removal from backups/HA, default true) or other side effects. Partial coverage.

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?

Two concise sentences with key information front-loaded (permanent destruction) followed by the critical guard requirement. 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 destructive tool without annotations or output schema, the description covers the essential aspects: what it does, the irreversible nature, and the confirmation mechanism. It lacks mention of the purge parameter's implications, but overall fairly complete.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for all three parameters. The description reinforces the confirm parameter requirement but adds no meaningful extra meaning beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states 'PERMANENTLY destroy a VM or container and its disks. IRREVERSIBLE.' This provides a specific verb (destroy) and resource (VM/container and its disks), distinguishing it from siblings like backup_guest or clone_guest.

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 emphasizes that the action is permanent and irreversible and notes the confirm parameter requirement, but does not explicitly contrast with alternatives (e.g., shutdown vs. delete) or provide when-not-to-use guidance. Usage is implied rather than explicit.

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

delete_snapshotDelete snapshotB

Remove a snapshot from a VM or container.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesSnapshot to delete.
guestYesVMID or name.

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It does not mention that deletion is permanent or destructive, whether the guest must be stopped, or any side effects. The description is insufficient for a mutation operation.

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

Conciseness4/5

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

The description is a single, clear sentenceβ€”very concise. However, it is slightly underspecified, but still effectively communicates the core purpose without unnecessary words.

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

Completeness2/5

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

For a simple tool with two parameters and no output schema, the description is too brief. It omits critical context like permanence, prerequisites, and relationship to sibling tools (e.g., rollback). Incomplete for an agent to fully understand usage.

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

Parameters3/5

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

Schema coverage is 100% and both parameters have clear descriptions. The tool description adds no additional meaning beyond the schema, meeting the baseline of 3.

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'), the resource ('a snapshot'), and the scope ('from a VM or container'). It effectively distinguishes from sibling tools like 'create_snapshot' and 'rollback_snapshot'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., 'rollback_snapshot'), prerequisites (e.g., snapshot must exist), or scenarios where deletion is inappropriate. The description lacks context for decision-making.

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

guest_configGuest configA

Return the full configuration of a VM or container (cores, memory, disks, network interfaces, boot order, …).

ParametersJSON Schema
NameRequiredDescriptionDefault
guestYesVMID or name of the VM/container.

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations to rely on, the description only indicates a read operation without side effects. It lacks details on authentication requirements, error handling (e.g., what happens if the guest doesn't exist), or response structure.

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

Conciseness5/5

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

The description is a single, efficient sentence that conveys the core functionality without redundancy or unnecessary details.

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 compensates by listing example configuration fields (cores, memory, disks, etc.). This helps the agent understand the richness of the return value, though the exact structure is not specified.

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?

The input schema provides a clear description for the 'guest' parameter (VMID or name). The tool description adds no additional semantic information about the parameter beyond the schema, but schema coverage is 100% so the baseline is adequate.

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 returns the full configuration of a VM or container, listing specific fields like cores, memory, disks, and network interfaces. This distinguishes it from sibling tools that perform actions like backup, clone, or delete.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives. While the context of siblings implies it is for reading configuration, there is no direct guidance on when to choose this over other similar reading tools or prerequisites.

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

guest_osinfoGuest OS infoA

What operating system does a guest run? Returns the configured OS type and, for running QEMU VMs with the guest agent, the detected OS name/version and IP addresses. Answers 'what OS is VMID 101?'.

ParametersJSON Schema
NameRequiredDescriptionDefault
guestYesVMID or name of the VM/container.

TDQS

A3.6/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It discloses conditional behavior (only for QEMU VMs with guest agent) and return values (OS type, detected OS, IP addresses). However, it does not mention permissions, rate limits, or safety profile, which is acceptable for a read-only tool but could be more explicit.

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?

Two sentences, front-loaded with a question, no redundancy. Every sentence adds value: first explains what it returns, second gives a concrete example. Highly 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?

For a simple one-parameter tool with no output schema or annotations, the description covers the return values, conditions (guest agent), and examples. It lacks specification of output format but is sufficiently complete for its simplicity.

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

Parameters3/5

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

Schema coverage is 100% with clear description of 'guest' parameter as 'VMID or name of the VM/container'. Description adds an example ('VMID 101') but does not provide additional semantics beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

Description clearly states the tool returns OS type and detected OS info for QEMU VMs with guest agent, answering the question 'what OS is VMID 101?'. It distinguishes from sibling tools like guest_config or guest_status by focusing specifically on OS information.

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?

Description lacks explicit guidance on when to use this tool versus alternatives such as guest_config or guest_status. It does not mention prerequisites or exclusions, leaving the agent to infer usage from the purpose alone.

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

guest_statusGuest statusA

Live runtime status of a single VM or container: run state, CPU %, memory, disk, uptime and (for VMs) QEMU guest-agent availability.

ParametersJSON Schema
NameRequiredDescriptionDefault
guestYesVMID or name of the VM/container.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It indicates a read-only operation ('live runtime status') and includes specific metrics, adding useful behavioral context. 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?

Single sentence, front-loaded with purpose, no wasted words. Every word 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?

For a simple status tool with one required param and no output schema, the description adequately lists the returned metrics. Missing error conditions or format, but still sufficient.

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

Parameters3/5

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

Schema coverage is 100%, so baseline 3. The description does not add meaning beyond the schema's parameter description. It mentions 'single VM or container' but that's about the resource, not the parameter.

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 returns live runtime status of a single VM or container, listing specific metrics (run state, CPU%, memory, disk, uptime, QEMU guest-agent for VMs). It differentiates from sibling tools that perform actions or list resources.

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?

While no explicit when-to-use or alternatives are given, the name and description make it clear this is for querying current status, not modifying. The context is implied but not fully explicit.

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

list_guestsList VMs & containersA

List all QEMU virtual machines and LXC containers across the cluster with their VMID, type, node, status and live CPU/memory. Optionally filter by kind ('qemu' or 'lxc') or only running guests.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoOnly VMs ('qemu') or only containers ('lxc').
runningOnlyNoOnly running guests (default: false).

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It describes a read operation (list) but does not disclose potential side effects, permissions, pagination, or response size. The description is adequate for a simple listing but lacks deeper 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?

Two concise sentences that are front-loaded with the main action. Every word contributes, and there is 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?

For a simple listing tool with two optional parameters and no output schema, the description is adequate. It specifies the returned fields and filter options. Could mention pagination or sorting if applicable, but not strictly necessary.

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

Parameters3/5

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

Schema coverage is 100% with clear descriptions for both parameters. The description adds minimal value by restating the filter options. Baseline of 3 is appropriate as the schema already documents the parameters well.

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 (QEMU VMs and LXC containers across the cluster) and specifies the returned fields (VMID, type, node, status, live CPU/memory). It distinguishes itself from sibling tools like 'guest_status' by focusing on cluster-wide 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 implies usage: when you need an overview of all guests with optional filters. It does not explicitly exclude cases or name alternatives, but the context (siblings are mostly action tools) makes it clear enough.

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

list_nodesList nodesA

List the Proxmox VE cluster nodes with their online status, CPU load and memory usage. The best starting point to understand the cluster.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It indicates the tool lists nodes and what data is returned, implying a read-only operation. However, it does not explicitly state the absence of side effects, required permissions, or any potential rate limits. For a simple list tool, this is minimally adequate but could be more transparent.

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?

Two sentences, no wasted words. First sentence clearly states purpose and output, second adds contextual value ('best starting point'). Every sentence earns its place.

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

Completeness4/5

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

Given no output schema and no annotations, the description adequately explains the tool's function and return value (nodes with status, CPU, memory). It also provides usage context. While it could mention that it operates on a cluster, for a no-param list tool it is sufficiently 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?

The input schema has no parameters (0 params, 100% coverage). According to guidelines, baseline is 4. The description does not need to add parameter details since there are none, and it correctly describes the output rather than parameters.

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

Purpose4/5

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

The description clearly states the verb 'List' and resource 'nodes', specifying the fields returned (online status, CPU load, memory usage). It positions itself as the best starting point, which implies a high-level overview, but does not explicitly differentiate from the sibling 'node_status' tool, so it's clear but lacks explicit sibling distinction.

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 by stating 'The best starting point to understand the cluster', guiding agents to use it as an initial exploratory step. No when-not or alternative tools are mentioned, but the context is clear enough for basic usage.

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

list_pluginsList pluginsA

Show the modular capability plugins this server exposes and whether each is currently enabled.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

The description discloses the tool's read-only behavior (shows without modifying) and what it returns (plugins with enabled status). Without annotations, it provides adequate transparency for a simple list tool, though more detail on the return format would help.

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

Conciseness5/5

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

The description is a single, concise sentence that delivers the key purpose and output upfront with no redundant 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 zero-parameter tool, the description fully covers the purpose and output. Combined with the resource name and sibling context, it is completely adequate.

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 does not need to add meaning. The baseline of 4 is appropriate as the description is not required to elaborate on non-existent 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 uses the specific verb 'Show' and resource 'modular capability plugins', clearly distinguishing it from sibling list tools like list_guests or list_nodes. It also specifies the output includes enabled status.

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 context is clear: use this tool to list plugins. While no explicit alternatives or exclusions are mentioned, the resource name and sibling tools make the purpose unambiguous. A brief note on when not to use would improve it.

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

list_snapshotsList snapshotsA

List the snapshots of a VM or container, including their name, parent and description. The synthetic 'current' entry marks the live state.

ParametersJSON Schema
NameRequiredDescriptionDefault
guestYesVMID or name of the VM/container.

TDQS

A4/5.0
Behavior4/5

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

Without annotations, the description adds behavioral context by mentioning the synthetic 'current' entry and the fields included. It implies a read-only operation, but could detail idempotency or auth requirements. Still, it goes beyond minimal.

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, no redundancy, and essential information front-loaded. Every word 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?

Given the single parameter, well-described schema, and lack of output schema, the description sufficiently conveys what the tool returns. Minor omission of sorting or limits, but adequate for the tool's simplicity.

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

Parameters3/5

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

Schema coverage is 100% with a clear description of the 'guest' parameter. The tool description adds no additional context about the parameter beyond the schema, so baseline score applies.

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 snapshots of a VM or container, including specific fields (name, parent, description), and notes the synthetic 'current' entry. This distinguishes it from sibling tools like create_snapshot or 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 Guidelines3/5

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

The description does not provide explicit guidance on when to list snapshots versus using other tools. Usage is implied by the purpose, but no alternatives or context are mentioned, leaving ambiguity for the AI.

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

list_storageList storageA

List the storages configured on a node β€” type (dir/lvm/zfs/ceph/nfs…), what content they hold, and how full they are.

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeYesNode name (e.g. 'pve').

TDQS

A3.7/5.0
Behavior2/5

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

With no annotations provided, the description carries full responsibility for behavioral disclosure. It mentions the output (type, content, fullness) but does not state that the operation is read-only, any authentication requirements, or potential side effects. The minimal disclosure leaves an agent without safety guarantees.

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

Conciseness5/5

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

The description is a single concise sentence (15 words) that front-loads the verb and resource, with no wasted words. Every part serves a clear 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?

Despite no output schema, the description adequately explains the return values (type, content, fullness). Given the simple parameter set and one required input, the description provides sufficient context for an agent to understand what the tool does and what to expect.

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

Parameters3/5

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

Schema coverage is 100% (one parameter, 'node', described as 'Node name'). The description adds no further semantic value for the parameter beyond what the schema already provides, so it meets the baseline of 3.

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

Purpose5/5

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

The description uses a specific verb ('List') and resource ('storages configured on a node'), and clearly distinguishes from sibling tools like list_guests or list_nodes by specifying the resource type and the information returned (type, content, fullness).

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 storages but provides no explicit guidance on when to use versus alternatives, nor any exclusions or prerequisites. It relies on the tool's name and context to indicate its purpose.

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

list_tasksList recent tasksA

List the most recent tasks on a node (VM starts, backups, migrations, snapshots…) with their type, status and who ran them. Great for answering 'what happened on this node lately?'.

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeYesNode name (e.g. 'pve').
limitNoHow many tasks (default: 25).

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so description carries burden. It hints at read-only behavior by listing historical tasks, but does not explicitly state it is safe. Missing details on pagination or ordering.

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?

Two efficient sentences: first states purpose, second provides usage context. No unnecessary 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?

Adequately covers purpose and parameter context. Lacks explicit mention of output format/fields, though it lists some attributes (type, status, who). Minor gap for a simple tool.

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

Parameters3/5

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

Schema coverage is 100% with clear parameter descriptions. The description adds examples of task types but no additional parameter semantics 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?

States 'List the most recent tasks on a node' with examples of task types (VM starts, backups, etc.), clearly defining the resource and action. No sibling tool performs this exact function, so it stands alone.

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 a clear usage hint: 'Great for answering "what happened on this node lately?"' but does not specify when to avoid using it or mention alternatives.

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

migrate_guestMigrate guestA

Migrate a VM or container to another cluster node. Running guests are migrated online (live) when possible.

ParametersJSON Schema
NameRequiredDescriptionDefault
guestYesVMID or name.
onlineNoForce online/offline (default: online if running).
targetYesTarget node name.

TDQS

A3.6/5.0
Behavior2/5

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

No annotations provided, and description only adds that running guests are migrated online when possible. Lacks details on destructive behavior (e.g., source removal), authorization needs, or failure modes.

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?

Two concise sentences clearly convey the purpose and a key behavioral aspect. No unnecessary 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?

Adequately covers core functionality for a 3-parameter tool. Could mention preconditions or failure scenarios, but not essential for basic usage.

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 has 100% coverage with clear parameter descriptions. Description adds context about live migration behavior, complementing the online parameter's schema description.

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 the action (migrate), resource (VM or container), and destination (another cluster node). It distinguishes from sibling tools like clone_guest or backup_guest by specifying migration to a node.

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

Usage Guidelines2/5

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

No explicit guidance on when to use or not use this tool. No mention of prerequisites, alternatives, or when to prefer this over other migration methods.

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

node_statusNode statusA

Detailed status for a single node: CPU/memory/swap, load average, uptime, kernel and PVE versions.

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeYesNode name (e.g. 'pve').

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose whether the tool is read-only, requires authentication, or has side effects. While the listed metrics suggest a read-only operation, the lack of explicit behavioral context reduces transparency.

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

Conciseness5/5

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

The description is a single sentence that efficiently lists all relevant metrics. No wasted words, clearly front-loaded with the tool's purpose.

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 status tool with one parameter and no output schema, the description is reasonably complete by listing the exact returned metrics. However, it lacks behavioral disclosures (e.g., read-only, error handling), which would make it fully complete.

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?

The input schema has 100% coverage with a description for the 'node' parameter. The description adds context ('single node') but does not elaborate on how to determine node names (e.g., from list_nodes). Thus, it meets the baseline without extra 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?

The description specifies 'detailed status for a single node' and lists specific metrics (CPU/memory/swap, load average, uptime, kernel/PVE versions). This clearly distinguishes it from sibling tools like list_nodes (lists nodes) and cluster_status (cluster-wide).

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 it is for single-node detailed status but does not explicitly state when to use it vs alternatives (e.g., list_nodes for all nodes). No exclusions or when-not-to-use guidance are provided.

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

reboot_guestReboot guestA

Gracefully reboot a running VM or container.

ParametersJSON Schema
NameRequiredDescriptionDefault
guestYesVMID or name of the VM/container.

TDQS

A3.8/5.0
Behavior3/5

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

No annotations exist, so description is the sole source. It discloses 'gracefully' (suggests clean OS-level reboot), but omits key behaviors: what if guest is not running? Does it use ACPI, agent, or force? Side effects undefined.

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?

Single sentence, zero wasted words. All information is front-loaded and necessary.

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?

Tool is simple with one parameter and no output schema. Description is minimal but sufficient for basic understanding. Could mention container support (already in description) or any prerequisites.

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

Parameters3/5

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

Schema covers 100% of parameters with description 'VMID or name'. Tool description adds no extra meaning beyond schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('Reboot') and resource ('running VM or container'), clearly distinguishing it from sibling tools like shutdown_guest, stop_guest, or suspend_guest.

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 a running guest needing a graceful reboot, but provides no explicit when-to-use vs alternatives (e.g., shutdown then start, or forced reset). No exclusions or context given.

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

resume_guestResume guestB

Resume a suspended/paused VM.

ParametersJSON Schema
NameRequiredDescriptionDefault
guestYesVMID or name of the VM/container.

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description bears full burden but only says 'resume' without detailing side effects, permissions, or state constraints. Lacks transparency about behavior.

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

Conciseness5/5

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

Single sentence, no fluff, front-loaded with key action and resource. Efficient.

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

Completeness3/5

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

For a simple one-param tool with no output schema, it is minimally adequate but could mention that the guest must be suspended. Lacks completeness regarding return or state.

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

Parameters3/5

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

Schema coverage is 100% with adequate parameter description, and the tool description does not add extra 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 'Resume' and the resource 'suspended/paused VM', with specific verb and resource, and it distinguishes from sibling tools like suspend_guest, start_guest, etc.

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

Usage Guidelines2/5

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

No guidance on when to use vs alternatives, no prerequisites or conditions mentioned, and no explicit exclusions.

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

rollback_snapshotRollback snapshotA

Revert a VM or container to a snapshot. This is DESTRUCTIVE β€” any changes made since the snapshot are lost. Confirm with the user first.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesSnapshot to roll back to.
guestYesVMID or name.

TDQS

A4.4/5.0
Behavior5/5

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

The description explicitly states the destructive nature: 'This is DESTRUCTIVE β€” any changes made since the snapshot are lost.' Since no annotations are provided, the description fully bears the transparency burden and does so effectively.

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, consisting of two short sentences that convey purpose and a critical warning without any fluff. Every word serves a purpose.

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 essential behavioral detail (destructive nature) and usage instruction (confirm with user). It doesn't mention prerequisites or return values, but given the tool's simplicity and lack of output schema, it is sufficiently complete.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description does not add extra meaning beyond the schema's descriptions for 'name' and 'guest'. No additional format or usage details are provided.

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 'Revert a VM or container to a snapshot' using a specific verb and resource. It distinguishes itself from sibling tools like create_snapshot, delete_snapshot, and list_snapshots by focusing on the rollback action.

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 includes the important guideline to 'Confirm with the user first.' This implies when to use (after confirmation) but does not explicitly state when not to use or mention alternative tools. The guidance is strong but lacks exclusions.

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

set_guest_resourcesSet guest resourcesB

Quickly change a guest's CPU cores and/or memory. For VMs, memory is in MB. Some changes need a reboot to take effect.

ParametersJSON Schema
NameRequiredDescriptionDefault
coresNoNumber of CPU cores.
guestYesVMID or name.
memoryNoMemory in MB.

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided, so the description carries full burden. It discloses memory units and reboot needs, but omits critical details like prerequisites (e.g., guest state), side effects, reversibility, or asynchronous behavior.

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

Conciseness5/5

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

Two short sentences with critical information front-loaded. No redundant phrases; every sentence adds value.

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

Completeness2/5

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

For a mutation tool with no output schema, the description should explain return behavior, potential errors, and prerequisites (e.g., guest state). It lacks these, leaving the agent underinformed.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description adds only minor context (VM specificity, reboot note) beyond what the schema already provides for each parameter.

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 changes a guest's CPU cores and/or memory, using specific verbs and resources. It's distinct from siblings like guest_config which covers broader settings.

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 implicitly suggests usage for CPU/memory adjustments, but lacks explicit guidance on when to use vs alternatives (e.g., guest_config). It does mention reboot requirements, which adds some usage context.

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

shutdown_guestShutdown guest (graceful)A

Gracefully shut down a VM or container via ACPI/guest OS. This is the safe way to power off β€” prefer it over stop_guest.

ParametersJSON Schema
NameRequiredDescriptionDefault
guestYesVMID or name of the VM/container.
timeoutNoSeconds to wait before giving up.

TDQS

A3.9/5.0
Behavior3/5

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

Describes 'gracefully' and 'via ACPI/guest OS', indicating soft shutdown. No annotations provided, so description carries full burden; but it doesn't detail behavior on success/failure, timeout handling, or required permissions.

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

Conciseness5/5

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

Two sentences, no redundant words. Front-loaded with action and key differentiator. Highly concise.

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

Completeness3/5

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

Given no annotations or output schema, description should offer more context. It covers core function and sibling preference but omits error scenarios, result format, and prerequisites.

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

Parameters3/5

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

Schema coverage is 100% with both parameters described in schema. The description adds no additional meaning beyond what the schema already provides for 'guest' and 'timeout'.

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

Purpose5/5

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

The description uses specific verb 'shut down' and identifies resource 'VM or container'. It explicitly differentiates from the sibling `stop_guest` by calling this the 'safe way', making the purpose clear.

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?

States 'prefer it over stop_guest', giving clear usage preference. However, lacks explicit when-not conditions or failure scenarios (e.g., when to fall back to stop_guest).

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

start_guestStart guestA

Power on a VM or container. No-op if it is already running.

ParametersJSON Schema
NameRequiredDescriptionDefault
guestYesVMID or name of the VM/container.

TDQS

A4/5.0
Behavior4/5

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

Given no annotations, the description discloses the key behavioral trait 'No-op if it is already running.' This is helpful, though it could mention if the operation is asynchronous or requires certain permissions.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no extraneous 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 power-on tool with no output schema and 100% parameter coverage, the description provides sufficient context (action and no-op behavior). It could be improved by noting potential errors or return values.

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

Parameters3/5

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

Schema coverage is 100% for the single parameter 'guest', which is described as 'VMID or name of the VM/container.' The description does not add any additional 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 'Power on a VM or container' with a specific verb and resource, and distinguishes it from sibling tools like stop_guest, shutdown_guest, and suspend_guest.

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

Usage Guidelines3/5

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

No explicit when-to-use or when-not guidance is given. While the no-op behavior is noted, there is no comparison to alternatives or prerequisites.

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

stop_guestStop guest (hard)A

Immediately stop a VM or container β€” equivalent to pulling the power cord. May cause data loss; prefer shutdown_guest. Confirm first.

ParametersJSON Schema
NameRequiredDescriptionDefault
guestYesVMID or name of the VM/container.

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses the destructive behavior ('May cause data loss') and recommends an alternative, giving good insight into the tool's impact. However, it doesn't mention return behavior or side effects beyond data loss.

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 sentences long, front-loading the action and then providing a warning and alternative. 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?

For a tool with one parameter and no output schema, the description covers the essential aspects: what it does, its risks, and when to use an alternative. No additional information is needed.

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?

The single parameter 'guest' is fully described in the input schema (VMID or name). The description doesn't add additional meaning beyond what the schema provides, meeting the baseline for 100% coverage.

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

Purpose5/5

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

The description clearly states the tool stops a VM or container immediately, likening it to pulling the power cord. It distinguishes itself from the sibling tool 'shutdown_guest' by noting the forceful nature and potential data loss.

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 advises when to use this tool (immediate stop) and when not (prefer 'shutdown_guest' for graceful shutdown). It also instructs to 'confirm first', providing clear usage guidance.

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

suspend_guestSuspend guestA

Suspend (pause) a running VM β€” freezes it in RAM so it can be resumed instantly. Set toDisk to hibernate to disk instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
guestYesVMID or name of the VM/container.
toDiskNoHibernate to disk (QEMU) instead of pausing in RAM.

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description must fully disclose behavioral traits. It explains the core behavior (RAM freeze vs. disk hibernate) but omits important details such as whether the operation requires specific permissions, whether it is destructive, or what happens to active network connections. These gaps limit transparency.

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β€”two sentences with no extraneous words. It front-loads the primary action and then provides a conditional alternative. Every sentence serves a clear purpose, making it efficient for an agent to parse.

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 has only two parameters, no output schema, and no nested objects, the description is largely complete. It covers the main use cases (pause and hibernate) and specifies the toDisk option. However, it could be improved by mentioning the expected state of the guest (running) and any asynchronous behavior or return values.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description reiterates the toDisk parameter's function but does not add new information beyond the schema's description. The guest parameter is not elaborated beyond the schema's 'VMID or name' specification. Thus, the description provides minimal added semantic 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?

The description clearly states the action ('Suspend (pause) a running VM') and the resource ('VM'), with specific detail about freezing in RAM for instant resume. It also distinguishes an alternative behavior (hibernate to disk via toDisk parameter). This effectively differentiates the tool from siblings like stop_guest or shutdown_guest.

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 (to pause a running VM for instant resume) and provides guidance on using toDisk as an alternative. However, it does not explicitly contrast with other virtual machine lifecycle tools like stop or shutdown, nor does it mention prerequisites (e.g., guest must be running).

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

Tool Schema Changelog

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

  1. 27 tool updatesv1.0.0
    • First observedabout
    • First observedbackup_guest
    • First observedclone_guest
    • First observedcluster_resources
    • First observedcluster_status
    • First observedcreate_snapshot
    • First observeddelete_guest
    • First observeddelete_snapshot
    • First observedguest_config
    • First observedguest_osinfo
    • First observedguest_status
    • First observedlist_guests
    • First observedlist_nodes
    • First observedlist_plugins
    • First observedlist_snapshots
    • First observedlist_storage
    • First observedlist_tasks
    • First observedmigrate_guest
    • First observednode_status
    • First observedreboot_guest
    • First observedresume_guest
    • First observedrollback_snapshot
    • First observedset_guest_resources
    • First observedshutdown_guest
    • First observedstart_guest
    • First observedstop_guest
    • First observedsuspend_guest

TDQS

A3.8/5.0

Scored across 27 tools

Disambiguation5/5

Each tool targets a distinct action or resource. For example, guest_status, guest_config, and guest_osinfo are clearly separate. Even closely related tools like cluster_resources and cluster_status have well-defined, non-overlapping purposes.

Naming Consistency4/5

Most tools follow a verb_noun pattern (e.g., backup_guest, list_nodes), but a few like guest_config, cluster_status, and about deviate slightly. Overall, naming is clear and predictable.

Tool Count5/5

27 tools cover a wide range of Proxmox management tasks (cluster, nodes, guests, storage, backups, snapshots) without being excessive. The count feels well-scoped for the server's purpose.

Completeness3/5

Core workflows are addressed, but there are gaps like no direct 'create guest' (only clone), no tool to update full guest config, no restore from backup, and limited node maintenance actions. These missing operations could cause agent failures in some scenarios.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers