proxmox-mcp
Allows interacting with a Proxmox VE node/cluster, providing tools for listing nodes and guests, power management (start/stop/shutdown/reboot), reconfiguring CPU and memory, managing snapshots (list, create, rollback, delete), and performing one-shot backups (vzdump).
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@proxmox-mcplist all guests with their CPU and memory usage"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
proxmox-mcp
A small MCP server that exposes a Proxmox VE
node/cluster as tools any MCP client (Claude Code, Claude Desktop) can call —
so instead of hand-writing curl against the Proxmox REST API, the assistant
calls clean tools like list_guests or start_guest.
Scope: read, power control, limited reconfigure (CPU/memory), plus snapshots and one-shot backups. It can inspect everything, start/stop/shutdown/reboot guests, adjust a guest's cores/memory, and manage restore points and vzdump backups. It does not create or delete the guests themselves.
Tools
Tool | Effect |
| Nodes with status, CPU, memory (GB), uptime |
| All VMs ( |
| Detailed status of one guest |
| Full provisioning config: cores, memory (MB), disks/mounts, network |
| Live interfaces + IP addresses (LXC direct; QEMU needs guest agent) |
| Storage pools with real usage (GB, %) |
| What's on a storage pool: templates, ISOs, backups, disk images |
| Recent task log for a node |
| One task's status, exit status, and log tail (by UPID) |
| Start a stopped guest |
| Graceful shutdown (preferred) |
| Hard stop (pulls the cord) |
| Graceful reboot |
| Reconfigure CPU cores and/or memory |
| A guest's snapshots |
| Take a snapshot |
| Irreversible — roll back to a snapshot (typed-confirm) |
| Delete a snapshot |
| Backup archives on a storage (newest first) |
| Back up a guest now (vzdump) |
type is "qemu" (VM) or "lxc" (container). Use list_guests to find
vmid/node/type.
Related MCP server: proxmox-mcp
Example
Ask your assistant "which guests use the most memory, and is anything
stopped?" — it calls list_guests() and gets clean, ready-to-reason data:
[
{"vmid": 100, "name": "web", "node": "pve1", "type": "lxc", "status": "running", "cpu_pct": 0.4, "mem_used_gb": 0.21, "mem_max_gb": 1.0, "uptime_hours": 412.6},
{"vmid": 101, "name": "db", "node": "pve1", "type": "qemu", "status": "running", "cpu_pct": 3.1, "mem_used_gb": 6.84, "mem_max_gb": 8.0, "uptime_hours": 412.6},
{"vmid": 102, "name": "backups", "node": "pve2", "type": "lxc", "status": "stopped", "cpu_pct": 0.0, "mem_used_gb": 0.0, "mem_max_gb": 2.0, "uptime_hours": 0.0}
]From there it can start_guest("pve2", 102, "lxc") or set_guest_resources(...)
— each a single-purpose, confirmable action, not a freeform shell command.
Setup
Linux / macOS
git clone https://github.com/nrohozen/proxmox-mcp
cd proxmox-mcp
python3 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt
cp .env.example .env # then edit .env with your real valuesWindows (PowerShell)
git clone https://github.com/nrohozen/proxmox-mcp
cd proxmox-mcp
py -3.12 -m venv .venv
.venv\Scripts\python -m pip install -r requirements.txt
copy .env.example .env # then edit .env with your real valuesPrefer a package install?
pip install .exposes aproxmox-mcpconsole command; set thePROXMOX_*vars in the environment or a.envin the working directory.
Configuration (.env)
Config lives in a .env file next to server.py (gitignored). server.py
loads it automatically, so the MCP client config just launches the server — no
env block required. Copy .env.example to .env and set:
Var | Example | Notes |
|
| scheme + host (+ optional |
|
| API token id (see Security) |
|
| API token secret |
|
| set |
Proxmox's API is on
:8006with a self-signed certificate by default, soPROXMOX_VERIFY_TLS=falseis typical on a LAN. For stricter TLS, front the API with a reverse proxy holding a trusted cert and pointPROXMOX_BASE_URLthere.A variable set explicitly in the client's
envblock still overrides.env.
Register with Claude Code (CLI)
With config in .env, registration just points at the server — no -e flags.
Use absolute paths to the venv's Python and server.py.
Linux / macOS
claude mcp add proxmox -s user -- \
/path/to/proxmox-mcp/.venv/bin/python \
/path/to/proxmox-mcp/server.pyWindows (PowerShell)
claude mcp add proxmox -s user `
-- C:\path\to\proxmox-mcp\.venv\Scripts\python.exe `
C:\path\to\proxmox-mcp\server.py-s user makes it available in every project. Verify with claude mcp list.
Tools load in a new Claude Code session.
Register with Claude Desktop
Copy claude_desktop_config.example.json to
%APPDATA%\Claude\claude_desktop_config.json (it only points at server.py;
config comes from .env), then fully restart Claude Desktop. The Proxmox tools
appear under the 🔌 / tools menu.
Security
Use a dedicated, least-privilege token — never root@pam. This server needs
read, power, CPU/memory reconfigure, and snapshot/backup privileges. Create a
scoped token once, on a Proxmox node:
# a role with exactly the privileges this server uses
pveum role add ProxmoxMCP --privs "VM.Audit,VM.PowerMgmt,VM.Config.CPU,VM.Config.Memory,VM.Snapshot,VM.Snapshot.Rollback,VM.Backup,Sys.Audit,Datastore.Audit,Datastore.AllocateSpace"
# a dedicated, non-root user + API token
pveum user add mcp@pve
pveum aclmod / -user mcp@pve -role ProxmoxMCP
pveum user token add mcp@pve proxmox --privsep 0
# -> copy the printed token id (mcp@pve!proxmox) and value into .envA token scoped this way can power-manage, resize, snapshot, and back up guests
but cannot open a host shell, change node/network/firewall config, or create
users/tokens — so a leaked token can't own the hypervisor. (Datastore.AllocateSpace
is needed only for writing backups; drop it to make the token read-plus-power only.)
The token secret lives in
.envin plaintext (gitignored) — keep it private..env.example(no secret) is the committed template.MCP clients prompt before running a tool; that confirmation is the human guardrail on the power-control tools.
Available Tools
20 toolscreate_backupA
Back up a guest now (vzdump) to storage. mode="snapshot" runs with no downtime.
mode:snapshot(live, default) |suspend|stop.compress:zstd(default) |gzip|lzo|0(none).
Returns the task UPID (track with task_status). Needs node, vmid, storage.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | snapshot | |
| node | Yes | ||
| vmid | Yes | ||
| storage | Yes | ||
| compress | No | zstd |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses behavioral traits such as snapshot mode having no downtime, the different modes and compress options, and the return of a task UPID. It also mentions required parameters. Without annotations, it provides good transparency, though it does not cover potential destructive behavior or prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise with front-loaded core action, bullet points for mode and compress, and a final line about return and requirements. Every sentence adds value with minimal waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters, no output schema, and no annotations, the description covers purpose, mode/compress options, return type, and required params. It does not explain errors, prerequisites, or full behavior (e.g., overwriting), but is fairly complete for a backup tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% coverage, so description must add meaning. It explains mode and compress enums with defaults and behavior (snapshot no downtime). It lists required params but does not describe them individually. Overall, it adds significant value for 2 of 5 parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool backs up a guest using vzdump to a specified storage, with specific mode and compress options. It distinguishes itself from sibling tools like list_backups (listing) and create_snapshot (snapshot vs full backup).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains mode options (snapshot/suspend/stop) and compress options, implying use cases, but does not explicitly state when to use this tool versus alternatives like create_snapshot or other guest tools. It mentions tracking with task_status but lacks direct sibling differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_snapshotA
Take a snapshot named name — the safety net before a risky change.
Optional description. Returns the task UPID (track with task_status).
Needs node, vmid, type.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| node | Yes | ||
| type | Yes | ||
| vmid | Yes | ||
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It mentions the return value (task UPID) and tracking via task_status, which is helpful. However, it does not disclose side effects, permissions, or whether the operation is safe (though snapshot is generally safe). The description adds some value beyond the schema but is not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with front-loaded purpose and return value info. The third sentence ('Needs node, vmid, type') is slightly redundant with schema required fields, but overall concise and no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explains the return value (UPID) and references tool_status for tracking. It covers the essential use case and constraints. It could mention what the snapshot is of, but parameters imply the target.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description explains that 'name' is the snapshot name and 'description' is optional. It lists required params (node, vmid, type) but does not add meaning beyond their names. The enum for type is clear from schema. Overall, the description compensates partially for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Take a snapshot' with a specific purpose: 'safety net before a risky change.' It distinguishes from siblings like create_backup and delete_snapshot by highlighting snapshot as a safety net.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use ('before a risky change') but does not explicitly exclude scenarios or mention alternatives like create_backup. The guidance is adequate for an agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_snapshotA
Delete snapshot name (frees its disk usage; does not affect the running guest).
Needs node, vmid, type. Returns the task UPID.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| node | Yes | ||
| type | Yes | ||
| vmid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It discloses that deletion is safe for the running guest, frees disk, and returns a task UPID, but does not mention permissions, irreversibility, or potential side effects like cascading deletes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, highly concise, with the key action and effect front-loaded. No unnecessary words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 required parameters and no output schema, the description is incomplete. It lacks parameter explanations, does not specify the output format beyond 'UPID', and provides no guidance on prerequisites or error handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must add meaning but only minimally explains 'name' and lists other parameters without definitions. It does not clarify the roles of 'node', 'vmid', or 'type' beyond stating they are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (delete) and resource (snapshot by name), and explains the effect: frees disk usage without affecting the running guest. It distinguishes effectively from siblings 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions required parameters ('Needs node, vmid, type') but does not provide explicit guidance on when to use this tool versus alternatives like `rollback_snapshot` or `list_snapshots`. Usage is implied but not fully directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
guest_configA
Full provisioning config of a VM/container: cores, memory (MB), disks/mounts, network, etc.
Needs node, vmid, type ("qemu"/"lxc"). Returns Proxmox's raw config keys
(e.g. cores, memory, rootfs/mp0…, net0, ostype). Use this to see
how a guest is provisioned before calling set_guest_resources.
| Name | Required | Description | Default |
|---|---|---|---|
| node | Yes | ||
| type | Yes | ||
| vmid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries full burden. It reveals return behavior ('Returns Proxmox's raw config keys') and expected inputs. It implies read-only by saying 'see how a guest is provisioned', but does not explicitly state it is non-destructive. Still, it adds useful 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief with no redundant sentences. The first line front-loads the core purpose, and the second paragraph gives requirements and return info efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read operation with no output schema and no annotations, the description reasonably covers inputs, output examples, and usage context. It could mention that operation is read-only, but overall it provides sufficient guidance for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must add meaning. It restates the three required parameters and clarifies the 'type' enum values ('qemu'/'lxc'). However, it adds little beyond what the schema already shows, and does not explain 'node' or 'vmid' in detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Full provisioning config of a VM/container' and lists specific attributes it retrieves (cores, memory, disks, network). It distinguishes itself from siblings like set_guest_resources and guest_status by specifying it reads config.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this to see how a guest is provisioned before calling set_guest_resources', providing a specific when-to-use and a sibling alternative. No guidance on when not to use, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
guest_networkA
Live network interfaces and IP addresses of a running guest.
LXC reads directly; QEMU requires the guest agent (returns a note if it's not installed/running). Needs node, vmid, type.
| Name | Required | Description | Default |
|---|---|---|---|
| node | Yes | ||
| type | Yes | ||
| vmid | Yes |
TDQS
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 LXC reads directly while QEMU requires the guest agent and may return a note if missing. This provides important behavioral context, though it does not explicitly confirm read-only status.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two clear paragraphs: a summary line and behavioral details. No extraneous text, though repeating parameter names adds minimal value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with three required params and no output schema, the description covers key behavioral differences but does not describe the output format or confirm read-only nature, leaving some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for parameters. The description only restates 'Needs node, vmid, type' without adding meaning or examples, failing to compensate for the schema's lack of documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns 'live network interfaces and IP addresses of a running guest', specifying the verb and resource. It distinguishes from sibling tools like guest_status or guest_config by focusing solely on network information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on when to use the tool (to get network info) and differences between LXC and QEMU, but does not explicitly state when not to use it or suggest alternative sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
guest_statusB
Detailed current status of one VM or container.
Needs node (e.g. "pve1"), vmid, and type ("qemu" or "lxc"). Use list_guests first to find these.
| Name | Required | Description | Default |
|---|---|---|---|
| node | Yes | ||
| type | Yes | ||
| vmid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It only repeats parameter requirements already in the schema. No disclosure of side effects, error behavior, or performance impacts. As a read operation, it's safe, but lacks depth about return format or edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-load the purpose and provide necessary usage guidance. No redundant information, every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and the description is brief. It does not explain what the returned status contains (e.g., CPU, memory, state). Given the complexity of a VM status, more detail is needed for an agent to interpret results effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description adds value by giving an example for node ('pve1') and clarifying type enumeration values. However, it does not explain the vmid's origin or provide any context about the status output, leaving significant semantic gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides 'detailed current status of one VM or container', specifying the resource and action. It distinguishes itself from sibling tools like list_guests (which lists all) and mutation tools (start, stop, etc.), but could be more precise about what 'detailed status' includes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises to use list_guests first to find required parameters (node, vmid, type), providing practical usage context. No explicit 'when not to use' but the clear prerequisite suffices for most agents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_backupsA
List backup archives on a storage, newest first. Optionally filter to one vmid.
Needs the node and storage id (from storage).
| Name | Required | Description | Default |
|---|---|---|---|
| node | Yes | ||
| vmid | No | ||
| storage | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. It states ordering behavior and optional filtering, but doesn't cover edge cases like empty results or errors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-loaded with purpose. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists and only three parameters, the description is almost complete. Lacks authentication or prerequisite context, but adequate for a list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, description adds meaning for all three parameters: required node and storage, optional vmid filter. It compensates for missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 'backup archives' with ordering 'newest first'. It clearly distinguishes from sibling tools like create_backup or storage_content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions required parameters (node, storage) and hints at source for storage. Optional filtering to vmid is explained. No explicit alternatives, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_guestsA
List all VMs and containers across the cluster.
Returns vmid, name, node, type (qemu=VM, lxc=container), status, and usage. Optionally filter by type ("qemu" or "lxc").
| Name | Required | Description | Default |
|---|---|---|---|
| type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry full behavioral disclosure. It adequately lists the return fields and optional filter, but it does not mention potential limitations like pagination, performance, or whether stopped/template guests are included. For a read-only listing, this is acceptable but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loading the purpose and then providing the return fields and filter. Every sentence is necessary and there is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (one optional parameter) and the presence of an output schema, the description is complete. It covers the purpose, return fields, and the optional filter, leaving no significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema coverage is 0%, but the description adds value by explaining the optional 'type' parameter with its enum values ('qemu' or 'lxc') and its purpose as a filter. This goes beyond the schema which only lists the enum values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 'all VMs and containers across the cluster'. It implicitly distinguishes from sibling list tools like list_nodes and list_backups by focusing on guests.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool (to list all guests) but does not explicitly state when not to use it or mention alternatives. However, the purpose is straightforward.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_nodesA
List Proxmox nodes with status and resource usage (CPU, memory in GB, uptime).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility. It discloses that the tool returns node status and resource usage, but does not mention potential behaviors like pagination, authentication requirements, or any side effects. For a simple list tool, this is adequate but not exemplary.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the verb and resource, and contains no unnecessary words. It is efficient and direct.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and the existence of an output schema (not shown but indicated), the description suffices for a straightforward list operation. It does not elaborate on status details or ordering, but the output schema likely covers return values, so completeness is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema coverage is 100% (trivially). Per guidelines, baseline is 4 since no parameters exist. The description adds no parameter info, but none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists Proxmox nodes and specifies the included information (status, CPU, memory in GB, uptime). It distinguishes from sibling list tools like list_backups, list_guests, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when or when not to use this tool versus alternatives. While context from sibling tool names implies it is for nodes, no direct guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_snapshotsC
List a guest's snapshots (plus the synthetic current state). Needs node, vmid, type.
| Name | Required | Description | Default |
|---|---|---|---|
| node | Yes | ||
| type | Yes | ||
| vmid | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description offers no behavioral details beyond the basic listing action; it does not describe what happens if no snapshots exist, the nature of the 'current' state, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short, but this is under-specification rather than conciseness. It lacks essential detail, making it insufficient for an effective tool invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description is too sparse for a 3-parameter tool with no annotations. It omits crucial information such as prerequisites, default behavior, or error conditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description bears full responsibility but merely restates parameter names without explaining their meaning, format, or constraints (e.g., valid range for vmid, usage of type).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('list') and resource ('a guest's snapshots'), and adds specificity by mentioning the synthetic 'current' state. However, it does not explicitly differentiate from sibling tools like list_backups or list_guests.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description only lists required parameters ('Needs node, vmid, type') but provides no guidance on when to use this tool versus alternatives, such as when to use list_snapshots vs. list_backups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reboot_guestC
Reboot a guest gracefully. Needs node, vmid, type.
| Name | Required | Description | Default |
|---|---|---|---|
| node | Yes | ||
| type | Yes | ||
| vmid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must cover behavioral traits. It only mentions 'gracefully', but omits details on async vs sync, guest cooperation, timeouts, or side effects. Inadequate for a reboot operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very short, but the second sentence is a fragment. It is front-loaded with the main action, but structure could be improved by integrating the parameter list into a full sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 should provide more context. It lacks details on return value, success conditions, or safe usage (e.g., reboot may be destructive to guest state). Incomplete for a 3-param tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% with no parameter descriptions. The description merely lists parameter names ('Needs node, vmid, type'), adding no semantics or format guidance. For example, it does not explain that type distinguishes QEMU from LXC.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reboots a guest gracefully, using specific verb and resource. It distinguishes from sibling tools like stop_guest and shutdown_guest by implying a clean restart, but does not explicitly contrast them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 like shutdown_guest or start_guest. Lacks context on prerequisites or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recent_tasksB
Recent task log for a node (migrations, starts, backups, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| node | Yes | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It states the tool is a 'log', implying a read operation, but it does not disclose authorization needs, rate limits, error behavior, or whether the log is refreshed. The description is insufficient for behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded with the core purpose and includes clarifying examples. Every word is necessary, and no waste is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, no nested objects) and the existence of an output schema, the description is mostly adequate for a basic understanding. However, it lacks usage context and parameter details, which reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaning for 'node' by stating the log is per node, but it does not explain the 'limit' parameter at all. This partial compensation results in a score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a recent task log for a node, with examples like migrations, starts, backups. This is specific enough to understand the resource and action (logging/list). However, it does not explicitly differentiate from sibling 'task_status', though the context of listing vs status is implied.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as 'task_status' or specific log tools. There is no mention of prerequisites, context, or exclusions, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rollback_snapshotA
Roll a guest BACK to snapshot name — discards ALL changes since it. IRREVERSIBLE.
Two-step by design: call without confirm to get a preview (nothing
changes); then re-call with confirm set to the guest's exact name to
actually roll back. Needs node, vmid, type.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| node | Yes | ||
| type | Yes | ||
| vmid | Yes | ||
| confirm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: irreversible changes, discarding all modifications since the snapshot, and the preview mechanism. This is comprehensive for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (4 sentences) and front-loaded with the core purpose and warning. Every sentence adds value, making it efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and 5 parameters, the description covers the two-step workflow and irreversible nature adequately. It could mention return values or errors but is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, requiring the description to explain parameters. The description explains 'name' and 'confirm' but only lists 'node', 'vmid', 'type' without elaboration, leaving partial ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('roll back to snapshot') and the resource ('guest'), and distinguishes from sibling tools like create_snapshot and delete_snapshot by emphasizing the rollback operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit two-step usage instructions: call without 'confirm' for preview, then with 'confirm' to execute. It lists required parameters but does not specify when not to use or mention alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_guest_resourcesA
Change a guest's CPU cores and/or memory. RECONFIGURES the guest.
cores: CPU core count (LXC = total cores; QEMU = cores per socket).memory_mb: RAM in MB.
Provide at least one. For LXC this applies live (no reboot). For QEMU, core/
memory changes generally take effect on the next reboot. Read the current
values first with guest_config. Needs node, vmid, type.
| Name | Required | Description | Default |
|---|---|---|---|
| node | Yes | ||
| type | Yes | ||
| vmid | Yes | ||
| cores | No | ||
| memory_mb | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that the tool reconfigures the guest and details behavioral differences between LXC and QEMU. However, it does not mention potential side effects, reversibility, or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, using bullet points for parameters. Every sentence adds value without redundancy. It is front-loaded with the primary action and then details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description covers parameter semantics and behavioral context well. However, it lacks information about the return value or error handling, which would make it more complete for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description adds all parameter meaning. It explains cores as 'LXC = total cores; QEMU = cores per socket' and memory_mb as 'RAM in MB', which goes far beyond the schema's titles. It also clarifies that at least one must be provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool changes CPU cores and/or memory of a guest. It uses specific verbs ('change', 'reconfigures') and resource ('guest's CPU cores and/or memory'), and distinguishes itself from siblings like guest_config which reads current values.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises to read current values first with guest_config, provides context for when changes take effect (live for LXC, reboot for QEMU), and states that at least one of cores/memory must be provided. This gives clear guidance on when and how to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shutdown_guestA
Gracefully shut down a guest (sends ACPI/clean shutdown to the OS).
Preferred over stop_guest. Needs node, vmid, type.
| Name | Required | Description | Default |
|---|---|---|---|
| node | Yes | ||
| type | Yes | ||
| vmid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations present, so description must cover behavioral traits. It mentions 'graceful' and 'clean shutdown', implying it is safer than hard stop, but does not specify timeouts, error behavior, or whether it is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. First sentence defines purpose, second provides usage preference and requirements.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers essential aspects: action, method, preference over sibling, and required inputs. Lacks return value or post-condition details, but is adequate for a simple shutdown tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% (no parameter descriptions in schema). The description only lists the required parameters by name without explaining their meaning, format, or constraints beyond what the schema already provides (enum for 'type').
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('gracefully shut down a guest') with specific method (ACPI/clean shutdown), and distinguishes from sibling 'stop_guest'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Preferred over stop_guest', providing direct guidance on when to use this tool over its alternative. Also lists required parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_guestA
Start a stopped VM or container. Needs node, vmid, type ("qemu"/"lxc").
| Name | Required | Description | Default |
|---|---|---|---|
| node | Yes | ||
| type | Yes | ||
| vmid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only says 'Start a stopped VM or container' without disclosing side effects, permissions, or what happens if already running. Minimal 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no fluff, efficiently communicates the core purpose and mandatory inputs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and 3 parameters with 0% schema coverage, the description is minimal. It omits error scenarios, return values, and prerequisites (e.g., guest must be stopped). Adequate for a simple tool but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It lists required parameters (node, vmid, type) and specifies type enum ('qemu'/'lxc'), but does not explain what node or vmid are beyond their names. Adequate but not enriching.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool starts a stopped VM or container, and the required parameters. It distinguishes from siblings like stop_guest and reboot_guest by focusing on starting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly tells when to use (to start a stopped guest) but does not explicitly state when not to use or provide alternatives. It mentions required parameters, which is helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_guestA
Hard-stop a guest (pulls the virtual power cord — may lose unsaved data).
Use shutdown_guest unless the guest is unresponsive. Needs node, vmid, type.
| Name | Required | Description | Default |
|---|---|---|---|
| node | Yes | ||
| type | Yes | ||
| vmid | Yes |
TDQS
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 risk of data loss and that it's a hard stop, but does not mention other behaviors like whether it is synchronous or asynchronous, or what happens to the guest state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences covering purpose, usage guidance, and required parameters. It is concise but the last sentence is redundant with the schema and could be removed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple stop tool with 3 parameters and no output schema, the description covers the core action and use case. However, it lacks details on return behavior (e.g., success indication) and does not address potential error scenarios like stopping an already stopped guest.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should add meaning. It merely lists 'Needs node, vmid, type' without explaining what each parameter represents or the implications of the 'type' enum, adding no value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs a hard stop ('pulls virtual power cord') and distinguishes it from the sibling shutdown_guest by noting it may lose unsaved data and is for unresponsive guests.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent to use shutdown_guest unless the guest is unresponsive, providing clear guidance on when to choose this tool over the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
storageA
List storage pools with real usage (GB). Optionally scope to one node.
Uses the per-node endpoint (which reports used/total/avail); with no node it queries every node so usage is populated rather than null.
| Name | Required | Description | Default |
|---|---|---|---|
| node | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: it uses the per-node endpoint, and without a node it queries every node to populate usage. This is sufficient for a read-only listing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three efficient sentences with clear front-loading of purpose and optional behavior. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one optional parameter) and the presence of an output schema, the description provides all necessary context for correct invocation and understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description compensates for 0% schema coverage by clearly explaining the 'node' parameter's effect: optional, defaults to null, and the difference in query behavior and usage population.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists storage pools with real usage in GB, using the verb 'List' and specifying the resource. It distinguishes from siblings like 'storage_content' by focusing on pool-level listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context for optionally scoping to a node and explains querying all nodes when omitted. However, it does not explicitly state when to avoid using this tool or suggest alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
storage_contentA
List what's stored on a storage pool — templates, ISOs, backups, disk images.
content optionally filters by type: vztmpl | iso | backup | images
| rootdir. Useful for finding a template/ISO volid or seeing which disk
images live on a pool. Needs the node and the storage id (from storage).
| Name | Required | Description | Default |
|---|---|---|---|
| node | Yes | ||
| content | No | ||
| storage | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, description implies read-only (listing) but does not explicitly state non-destructive nature. Adds filtering context but no mention of permissions or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences directly stating purpose and filtering details. Concise and structured well, though could be slightly more front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given parameter count (3, 2 required) and output schema present, description explains purpose, filter, and required inputs. Adequate for a listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description adds significant meaning: explains 'content' filter options (vztmpl, iso, backup, images, rootdir) and mentions node and storage requirements.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'List what's stored on a storage pool' with specific resource types, and distinguishes from siblings like 'storage' which likely lists pools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides context: 'Useful for finding a template/ISO volid or seeing which disk images live on a pool. Needs the node and the storage id (from `storage`).' Lacks explicit alternatives but usage is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
task_statusA
Status (and tail of the log) of a Proxmox task by its UPID.
Get a UPID from recent_tasks or from a power tool's return value. Tells you
whether the task is running or finished, its exit status ("OK" or an error),
and the last log_lines lines of output.
| Name | Required | Description | Default |
|---|---|---|---|
| node | Yes | ||
| upid | Yes | ||
| log_lines | No |
TDQS
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 describes what the tool returns but does not explicitly state it is read-only or non-destructive. The description implies a safe status check, but a more explicit behavioral disclosure would be beneficial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences and a brief usage hint. Every sentence adds value, and the key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple status-check tool, the description covers the purpose, provides usage context, and describes return values. However, it lacks details on the output structure and does not explain the 'log_lines' default behavior or limits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description only explains the 'upid' and 'log_lines' parameters partially. The 'node' parameter is not mentioned at all, leaving users to infer from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the status and log tail of a Proxmox task by UPID. It specifies exactly what information is provided (running/finished, exit status, last log lines) and distinguishes itself from sibling tools like recent_tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells users how to obtain the required UPID (from recent_tasks or power tool return values). This provides clear context on when to use the tool, though it doesn't explicitly state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
20 tool updates
v0.1.0- First observed
create_backup - First observed
create_snapshot - First observed
delete_snapshot - First observed
guest_config - First observed
guest_network - First observed
guest_status - First observed
list_backups - First observed
list_guests - First observed
list_nodes - First observed
list_snapshots - First observed
reboot_guest - First observed
recent_tasks - First observed
rollback_snapshot - First observed
set_guest_resources - First observed
shutdown_guest - First observed
start_guest - First observed
stop_guest - First observed
storage - First observed
storage_content - First observed
task_status
TDQS
Each tool targets a distinct operation: backup, snapshot lifecycle, guest configuration reading and modification, status queries, resource listing, power management, and task tracking. No two tools overlap in purpose.
All tool names follow a consistent verb_noun pattern using snake_case (e.g., create_backup, list_guests, rollback_snapshot). No mixing of styles or vague verbs.
With 20 tools, the server covers a broad range of Proxmox administration tasks. While it's slightly on the larger side, each tool serves a clear purpose and the count is still manageable for the domain.
The tool set lacks essential lifecycle operations: there is no tool to create or delete a guest, clone, or migrate. While backup, snapshot, and power control are covered, these missing functions create dead ends for common workflows.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
The MCP server for Azure DevOps, bringing the power of Azure DevOps directly to your agents.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceAn open-source MCP server for managing Proxmox environments, including nodes, virtual machines, and containers. It enables users to perform inventory checks, status monitoring, and control operations directly through MCP-compatible tools.242MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server for Proxmox VE that enables read-only cluster inspection, VM/container lifecycle operations, snapshots, migration, and provisioning with safe confirmation gates.MIT
- AlicenseBqualityCmaintenanceA comprehensive MCP server providing 92 tools for managing Proxmox Virtual Environment, including QEMU VMs and LXC containers.921545MIT
- AlicenseAqualityCmaintenanceMCP server for managing Proxmox VE resources, VM/CT lifecycle, snapshots, backups, and clones via natural language.23MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/nrohozen/proxmox-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server