Skip to main content
Glama

XCP-ng AIops

Disclaimer: Community-maintained open-source project. Not affiliated with, endorsed by, or sponsored by Vates, the XCP-ng project, or the Xen Orchestra project. "XCP-ng", "Xen Orchestra", and "Xen" are trademarks of their owners. MIT licensed.

AI-powered XCP-ng operations via Xen Orchestra's REST API with a built-in governance harness — unified audit log, policy engine, token/runaway budget guard, undo-token recording, and descriptive risk tiers. Built for homelabs and small/self-hosted XCP-ng fleets that want an AI agent to triage VM health, storage pressure, backup failures, and patch posture — with every write audited, previewable, and (where honest) reversible. Self-contained: no dependencies beyond httpx and the MCP SDK.

Requires a Xen Orchestra instance (XO from sources or the Xen Orchestra Appliance, 5.x with /rest/v0). XO is the management plane this tool talks to — direct per-host XAPI access is out of scope for v0.1. Do NOT use for Proxmox VE — use proxmox-aiops.

What works

  • CLI (xcpng-aiops ...): init, overview, vm list/get/stats/health-rca/start/stop/reboot/migrate, host list/get/missing-patches, pool list/get/posture, sr list/get/vdis/usage-rca/rescan, snapshot list/create/delete/revert, backup jobs/logs/failure-rca, task list, secret set/list/rm/migrate/rotate-password, doctor, mcp.

  • MCP server (xcpng-aiops mcp or xcpng-aiops-mcp): 29 tools (19 read, 8 write, 2 undo), every one wrapped with the bundled @governed_tool harness.

  • Four flagship RCA analyses (cause + action structured output): VM health, SR usage, backup-job failures, pool patch & HA posture.

  • Encrypted credentials: the XO authentication token lives in an encrypted store ~/.xcpng-aiops/secrets.enc (Fernet + scrypt) — never plaintext on disk. Unlock with a master password from XCPNG_AIOPS_MASTER_PASSWORD (MCP/CI) or an interactive prompt (CLI).

  • Reversibility: vm_startvm_stop record each other as inverses; vm_migrate captures the REAL source host before moving and records "migrate back"; snapshot_create captures the created snapshot's REAL id from the XO response and records "delete THAT snapshot". Irreversible ops (snapshot_delete, snapshot_revert, vm_reboot) capture prior state for the audit record and honestly declare no undo.

  • Safety: destructive CLI ops require double confirmation and support --dry-run; every write MCP tool takes a dry_run preview (no write call, no undo recorded).

  • Self-lockout guard (partial — read this): Xen Orchestra is commonly a VM on a pool it manages, and stopping that VM kills the API this tool talks to — vm_start can then no longer be sent, so recovery needs hypervisor console access (xe vm-start). Set xo_self_vm_uuid on the target (xcpng-aiops init asks) and vm_stop refuses exactly that uuid — on --dry-run as well, since a preview that green-lights a call the tool will then refuse is reporting the wrong outcome. If you do not set it there is no protection at all: XO's REST API exposes no self endpoint and its token carries no claims, so the tool cannot discover which VM it runs on, and it fails open rather than guess. The dry_run preview adds a weaker selfVmHint when a VM's reported IP matches the configured XO host — that is a coincidence worth checking, not a finding, and it never blocks (it sees nothing without the guest agent and fires on every VM behind a shared proxy).

Related MCP server: firewall-aiops

Capability matrix (29 MCP tools)

Domain

Tools

Count

R/W

Overview

overview

1

read

VMs

vm_list, vm_get, vm_stats, vm_health_rca

4

read

vm_start, vm_stop, vm_reboot, vm_migrate

4

write (medium)

Hosts

host_list, host_get

2

read

Pools

pool_list, pool_get, pool_patch_ha_posture

3

read

SRs / VDIs

sr_list, sr_get, vdi_list, sr_usage_rca

4

read

sr_rescan

1

write (medium)

Snapshots

snapshot_list

1

read

snapshot_create (medium), snapshot_delete (high), snapshot_revert (high)

3

write

Backups

backup_job_list, backup_log_list, backup_failure_rca

3

read

Tasks

task_list

1

read

Undo

undo_list, undo_apply

2

read + replay

Flagship RCAs

  1. vm_health_rca — VMs halted unexpectedly (auto-poweron / HA restart priority set), paused/suspended VMs, running VMs without guest tools, CPU/memory pressure from RRD stats → cause + action per finding.

  2. sr_usage_rca — SRs ranked by physical fullness (near-full ≥ 85%, critical ≥ 95%), thin-provision overcommit (virtual allocation > capacity), orphaned VDIs (attached to no VM) with reclaimable bytes per SR.

  3. backup_failure_rca — failed/skipped/interrupted XO backup runs classified: vdi-chain (coalesce not finished), quiesce (guest VSS), transport (remote unreachable), storage-full, unknown — with per-job counts and sample messages.

  4. pool_patch_ha_posture — hosts missing patches, hosts pending reboot, version skew across a pool's hosts (breaks live migration / rolling updates), multi-host pools without HA.

What this tool does, and does not, decide

It delivers XCP-ng operations — reads and writes — accurately and efficiently, and records every one of them. It does not decide whether a write is allowed to happen. That is the agent's judgement, or the permission of the Xen Orchestra account whose token you connect it with: give that XO user a read-only ACL, or scope its token down, and the writes fail at Xen Orchestra — the place that actually owns the permission.

So there is no read-only switch, no policy file, no approval gate to configure. The one thing the tool guarantees is that nothing is silent: every call, over MCP and over the CLI alike, lands an audit row in ~/.xcpng-aiops/audit.db, and reversible writes still capture their before-state and record an inverse.

Each tool declares a risk_level, kept in agreement with its [READ]/[WRITE] documentation tag by a test, and carried into the audit row as a descriptive tier — so a reviewer can see at a glance that a row was a high-risk snapshot delete. It is a label, not a gate.

Running a smaller / local model? See agent-guardrails.md — it lists the guardrails this tool now enforces for you (so you don't spend prompt budget restating them) and gives a ready-made system prompt for what's left.

Quick start

As a Claude Code plugin

One install gives an agent both the skill and the MCP server:

/plugin marketplace add AIops-tools/marketplace
/plugin install xcpng-aiops@aiops-tools

The MCP server is fetched with uv and pinned to the package version this plugin declares, so an audit row can be traced back to the code that wrote it. Credentials are still configured with xcpng-aiops init — see below.

As a CLI or standalone MCP server

uv tool install xcpng-aiops
xcpng-aiops init        # interactive wizard: XO URL + encrypted token
xcpng-aiops doctor      # verify config, encrypted store, XO reachability + pool count
xcpng-aiops overview    # one-shot fleet health summary

init writes ~/.xcpng-aiops/config.yaml (non-secret connection details) and stores the XO token encrypted in ~/.xcpng-aiops/secrets.enc. Example config it produces:

targets:
  - name: xo1
    url: https://xo.example.com   # the XO web origin (management plane)
    verify_ssl: true              # set false only for self-signed lab certs
    api_path: /rest/v0

Create the token in the XO UI (user menu → Personal tokens) or with xo-cli --createToken. For non-interactive use (MCP server, CI, cron) export the master password so the store can be unlocked without a prompt:

export XCPNG_AIOPS_MASTER_PASSWORD='your-master-password'

MCP client config

{
  "mcpServers": {
    "xcpng-aiops": {
      "command": "uvx",
      "args": ["--from", "xcpng-aiops", "xcpng-aiops-mcp"],
      "env": { "XCPNG_AIOPS_MASTER_PASSWORD": "your-master-password" }
    }
  }
}

Env-block caveat: MCP clients launch the server with a minimal environment — your shell profile's exports are not inherited. Put XCPNG_AIOPS_MASTER_PASSWORD (and, if you use them, XCPNG_AIOPS_HOME / XCPNG_AIOPS_CONFIG / XCPNG_AUDIT_APPROVED_BY) in the env block above, or the encrypted store cannot be unlocked and every tool returns a teaching error.

Managing secrets

xcpng-aiops secret set xo1              # prompts hidden for the XO token
xcpng-aiops secret list                 # names only, values never shown
xcpng-aiops secret rm xo1
xcpng-aiops secret rotate-password      # re-encrypt under a new master password
xcpng-aiops secret migrate              # import a legacy plaintext .env, then retires it

A legacy plaintext env var XCPNG_<TARGET_NAME_UPPER>_TOKEN is still honoured as a fallback with a deprecation warning (migrate with xcpng-aiops secret migrate).

Governance

Every MCP tool — and every CLI write, which routes through the same governed functions — passes through @governed_tool. It records; it does not authorize (see above).

  • Audit — every call (tool, params with secrets redacted, result, status, duration, risk tier, and any operator-supplied approver/rationale) lands in ~/.xcpng-aiops/audit.db (relocate with XCPNG_AIOPS_HOME). The CLI writes the same row the MCP path does — there is no unaudited entry point.

  • Budget / runaway guard — a safety backstop, not an authorization gate: cumulative call and wall-time caps plus a tight-loop circuit breaker (XCPNG_MAX_TOOL_CALLS, XCPNG_MAX_TOOL_SECONDS, XCPNG_RUNAWAY_MAX) stop a stuck agent from burning unbounded calls/time.

  • Undo recording — reversible writes record a replayable inverse descriptor to ~/.xcpng-aiops/undo.db and return an _undo_id; irreversible writes record prior state only.

  • Risk tier — a descriptive label on the audit row derived from risk_level; it gates nothing.

  • Output hygiene — all XO-returned text is sanitized and bounded before it reaches the agent.

支持范围 / Supported scope

Area

Read

Write (governed)

VMs

list / get / RRD stats / health RCA

start, stop (clean/hard), reboot (clean/hard), migrate

Hosts

list / get / missing patches

Pools

list / get / patch & HA posture RCA

SRs / VDIs

list / get / VDI list (orphan filter) / usage RCA

rescan

Snapshots

list

create, delete, revert

Backups

jobs / logs / failure RCA

Tasks

list

缺功能?(Missing something?) Coverage is intentionally focused. Open an issue or PR at github.com/AIops-tools/XCPng-AIops — feature requests, contributions, and comments are all welcome.

Scope & caveats

  • Verification status: all behaviour is validated against mocked REST responses; there is no recorded end-to-end run against a live Xen Orchestra instance yet. xcpng-aiops doctor is the fastest live check — see docs/VERIFICATION.md for the full checklist.

  • Endpoint paths (e.g. /vms/<id>/actions/snapshot, /vm-snapshots/<id>, /srs/<id>/actions/rescan, /hosts/<id>/missing_patches, /backup/logs) are modelled against the documented XO REST /rest/v0 API and need live verification — action names may differ across XO releases.

  • Management plane only: everything goes through XO. Per-host XAPI, XO server management (adding servers, users), and backup job execution (run/restore) are out of scope for v0.1.

  • Out of scope by design: anything that destroys bulk data (VM/VDI deletion) — only snapshot_delete / snapshot_revert discard state, and both are high risk + double-confirmed.

Not for

Other hypervisors or VM platforms (use their own ops tools — e.g. Proxmox VE → proxmox-aiops), NAS/storage appliances, backup software suites, container clusters, or network devices — those are out of scope for this tool.

License

MIT — github.com/AIops-tools/XCPng-AIops

Available Tools

29 tools
backup_failure_rcaA

[READ][RCA] Classify failed / skipped backup runs — cause + action per job.

Groups recent run failures by job and classifies them: vdi-chain (coalesce
not finished), quiesce (guest VSS), transport (remote unreachable),
storage-full, or unknown (with sample messages for triage).

Args:
    limit: Max recent log entries to examine (default 50).
    target: Xen Orchestra target name from config; omit for the default.
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
targetNo

TDQS

A4.3/5.0
Behavior4/5

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

Declares [READ] clearly and describes classification behavior, but without annotations, it would benefit from explicitly stating it does not modify state.

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

Conciseness3/5

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

Description is somewhat concise but includes an Args section that redundantly lists parameters already in the schema, wasting space.

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 describes output categories and sample messages; no output schema exists, so description sufficiently covers expectations.

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

Parameters5/5

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

Provides clear, meaningful descriptions for both parameters (limit and target) beyond the schema, including defaults and usage hints.

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 explicitly states it classifies failed/skipped backup runs by job and lists specific categories (vdi-chain, quiesce, etc.), clearly distinguishing it from sibling tools like backup_log_list.

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?

Implied usage via 'Classify failed / skipped backup runs' but does not explicitly state when to use this tool versus alternatives like backup_job_list or vm_health_rca.

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

backup_job_listA

[READ] List VM backup jobs (id, name, mode).

Returns {"jobs": [...], "returned": N, "limit": L, "truncated": bool}.
When truncated is true there are more jobs than were returned.

Args:
    limit: Max jobs to return (default 200).
    target: Xen Orchestra target name from config; omit for the default.
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
targetNo

TDQS

A4.2/5.0
Behavior4/5

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

No annotations provided, but the description clearly indicates read-only behavior with '[READ]' and fully specifies the return format, including pagination details.

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

Conciseness5/5

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

The description is concise (5 sentences), front-loaded with the core purpose in brackets, and structured logically with return format and parameters.

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 list tool with two parameters and no output schema, the description covers return format and parameter semantics adequately, though it could mention error handling or job object structure.

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

Parameters4/5

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

Despite 0% schema description coverage, the description adds meaningful explanations for both parameters: limit (max jobs, default 200) and target (Xen Orchestra target, default omitted).

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

Purpose5/5

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

The description begins with '[READ] List VM backup jobs (id, name, mode)', which is a specific verb and resource, clearly distinguishing it from siblings like vm_list or backup_log_list.

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

Usage Guidelines3/5

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

The description mentions pagination behavior but lacks explicit guidance on when to use this tool versus alternatives like backup_log_list or backup_failure_rca.

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

backup_log_listA

[READ] Recent backup run logs: status + failed-task messages.

Returns {"logs": [...], "returned": N, "limit": L, "truncated": bool}.
Truncation is measured (one extra record is requested), so a true value
means there really are older runs — re-run with a higher limit.

Args:
    limit: Max recent log entries to return (default 50).
    target: Xen Orchestra target name from config; omit for the default.
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
targetNo

TDQS

A4.3/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 discloses the return structure and explains truncation measurement (requesting one extra record). This tells the agent that truncated=true means older runs exist, a non-obvious behavioral detail. It does not mention rate limits, data freshness, or authentication, but for a read-only log tool the core behavior is well covered.

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

Conciseness5/5

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

The description is front-loaded with purpose ('[READ] Recent backup run logs'), then immediately gives output structure, then truncation explanation, then parameter list. Every sentence adds value with no redundancy. It is compact and well-organized for an AI 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 low complexity (2 optional parameters, no required, no output schema), the description provides a clear output structure, parameter explanations, and critical truncation behavior. It does not describe possible errors (e.g., invalid target) or the internal format of 'logs' array, but for a straightforward list tool this is largely sufficient. The missing error handling and return structure details prevent a perfect score.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate. It fully explains both parameters: 'limit: Max recent log entries to return (default 50)' and 'target: Xen Orchestra target name from config; omit for the default.' This provides semantic context beyond the schema (integer vs string/null), including default values and configuration dependency.

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

Purpose5/5

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

The description explicitly states '[READ] Recent backup run logs: status + failed-task messages.' This clearly identifies the verb (list/recent), resource (backup run logs), and scope (recent). It distinguishes from sibling tools like backup_job_list (which lists jobs) and backup_failure_rca (which analyzes failures) by focusing on raw run logs.

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 begins with '[READ]' signifying it is a safe query operation, distinguishing it from action tools (e.g., vm_start). However, it does not explicitly compare with other read siblings like backup_job_list or backup_failure_rca, nor does it provide when-not-to-use guidance. The context is implied but not explicit.

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

host_getA

[READ] Detail for one host by uuid (version, build, memory, VMs).

Args:
    host_id: Host uuid (see host_list).
    target: Xen Orchestra target name from config; omit for the default.
ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
host_idYes

TDQS

A4/5.0
Behavior3/5

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

The description includes a [READ] prefix indicating non-destructive behavior, and gives a sense of returned fields. However, no annotations are provided, and the description does not detail potential errors, authorization needs, or other behavioral traits beyond the basic operation.

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, using a single sentence for purpose and a clear 'Args' section for parameters. 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?

Given the simplicity (2 parameters, no nested objects, no output schema), the description covers the essential: purpose, parameter meanings, and return concept. It could mention return type or error cases, but is mostly complete.

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

Parameters4/5

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

With 0% schema description coverage, the description adds clear semantics: host_id is a UUID and refers to host_list, target is a config name with a default. This goes beyond the schema's type-only information.

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 retrieves details for a single host by UUID, listing specific fields (version, build, memory, VMs). This distinguishes it from sibling tools like host_list (list all hosts) and vm_get (different resource).

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 when needing a single host's details, but does not explicitly state when to use vs. alternatives like host_list or when not to use. No exclusions or conditions are mentioned.

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

host_listA

[READ] List hosts: version, state, memory usage, resident VM count.

Args:
    pool: Optional pool uuid to filter by.
    target: Xen Orchestra target name from config; omit for the default.
ParametersJSON Schema
NameRequiredDescriptionDefault
poolNo
targetNo

TDQS

A3.9/5.0
Behavior3/5

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

The description includes a '[READ]' prefix indicating it's a safe read operation, but does not disclose other behavioral traits such as pagination, rate limits, or what happens if no hosts match. Given no annotations, the description carries the burden and falls short of full 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: a one-line summary followed by two bullet-point args with no filler. Every sentence serves a purpose.

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?

While the description covers the primary purpose and parameters, it lacks details on the return structure (beyond mentioning fields), error scenarios, or behavior when filters are invalid. Given no output schema, more completeness would benefit an AI agent.

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

Parameters4/5

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

Schema description coverage is 0%, but the description adds clear semantics: 'Optional pool uuid to filter by' and 'target name from config; omit for the default'. This provides meaning beyond the schema property titles.

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

Purpose5/5

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

The description clearly states it lists hosts and specifies the returned fields: version, state, memory usage, resident VM count. This distinguishes it from sibling tools like host_get (single host) and vm_list (VMs).

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

Usage Guidelines3/5

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

The description explains the optional parameters (pool, target) but does not explicitly tell when to use this tool versus alternatives like host_get. It omits any 'when not to use' or comparative guidance.

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

overviewA

[READ] One-shot health summary: pools, hosts, VMs, SRs, recent backups.

Start any triage here — it fans out over the other read ops (best-effort,
a failing collection reports an error block instead of blanking the rest).

Args:
    target: Xen Orchestra target name from config; omit for the default.
ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations are absent, so description carries full burden. Discloses best-effort execution and error block behavior, adding important behavioral context beyond the schema. Also indicates read-only nature with '[READ]'.

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

Conciseness4/5

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

Description is concise with a header and brief explanation. Every sentence adds value. Could be slightly more structured, but it's efficient and front-loaded.

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 the complexity of fanning out into multiple collections and no output schema, the description lacks detail on the return structure. It summarizes what is covered but doesn't specify the output format, which may reduce completeness for an agent.

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?

Only one parameter 'target' with schema coverage 0%. Description explains it as 'Xen Orchestra target name from config; omit for the default', providing meaning and usage guidance beyond the schema minimal definition.

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 verb '[READ]' and resource 'health summary' covering specific entities (pools, hosts, VMs, SRs, recent backups). It distinguishes from sibling read ops by being a one-shot aggregator that fans out, providing a clear starting point for triage.

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

Usage Guidelines4/5

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

Explicitly says 'Start any triage here' and explains it fans out over other read ops, indicating when to use. Mentions best-effort behavior and error handling. No explicit exclusions or alternatives listed, but context is clear enough.

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

pool_getA

[READ] Detail for one pool by uuid.

Args:
    pool_id: Pool uuid (see pool_list).
    target: Xen Orchestra target name from config; omit for the default.
ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
pool_idYes

TDQS

A4.3/5.0
Behavior3/5

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

No annotations provided; description adds '[READ]' to indicate non-destructive operation and mentions configuration dependency. Lacks details on error handling or side effects, but adequate for a simple read tool.

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: 4 lines with clear header and bullet-point arguments. No wasted words, every sentence adds value.

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

Completeness4/5

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

Covers core functionality and parameter usage well. Lacks explicit return format but acceptable given no output schema. Slightly more detail on what 'detail' includes would improve completeness.

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

Parameters5/5

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

Schema description coverage is 0%, but description fully explains both parameters: pool_id reference to pool_list for valid UUIDs, target as optional config name with default. Adds essential meaning beyond schema.

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

Purpose5/5

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

Explicitly states 'Detail for one pool by uuid.' Clearly specifies verb (READ/detail), resource (pool), and identifier (uuid). Differentiates from pool_list (list all) and pool_patch_ha_posture (patch HA posture).

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 clear guidance on parameters: pool_id should come from pool_list, target is optional with default. Does not explicitly exclude other tools but context is clear for this read operation.

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

pool_listA

[READ] List XCP-ng pools with master, HA state, default SR.

Args:
    target: Xen Orchestra target name from config; omit for the default.
ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

TDQS

A4/5.0
Behavior4/5

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

The description includes '[READ]' to indicate read-only behavior and lists the returned fields (master, HA state, default SR). There are no annotations to contradict, and for a simple list tool, this is adequately 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?

The description is extremely concise with no filler. The purpose is front-loaded, and the parameter explanation is neatly placed in an Args section. Every sentence 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?

For a simple list tool with one optional parameter and no output schema, the description is fairly complete. It specifies what fields are returned and explains the parameter. It could mention that it lists all pools (implied) or potential error conditions, but overall sufficient.

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 schema has 0% description coverage, but the description fully explains the single parameter 'target': 'Xen Orchestra target name from config; omit for the default.' This adds significant meaning beyond the schema's type and default.

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 'XCP-ng pools', and specifies the attributes included (master, HA state, default SR). This distinguishes it from siblings like pool_get (specific pool) and pool_patch_ha_posture (modify HA).

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 is provided on when to use this tool versus alternatives such as pool_get or host_list. The description lacks explicit 'when to use', 'when not to use', or references to sibling tools.

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

pool_patch_ha_postureA

[READ][RCA] Patch & HA posture per pool — cause + action per finding.

Flags hosts missing patches, hosts pending a reboot, version skew across a
pool's hosts (breaks live migration / rolling updates), and multi-host
pools running without HA.

Args:
    pool_id: Optional pool uuid to analyze just one pool.
    target: Xen Orchestra target name from config; omit for the default.
ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
pool_idNo

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 full burden. Declares read-only via [READ] tag and outputs cause+action per finding, but does not disclose if operation affects system state, permissions needed, or behavior when pool_id is omitted (likely analyzes all pools).

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?

Front-loaded with purpose and result format, followed by a bullet list of findings and a separate args section. Every sentence adds value; no redundancy.

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

Completeness4/5

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

No output schema, so description adequately covers return format as 'cause + action per finding' and lists what it checks. However, it does not specify if the result is a single object or an array, or how multiple pools are represented.

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

Parameters4/5

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

Schema coverage is 0%, so description compensates by explaining pool_id as 'Optional pool uuid to analyze just one pool' and target as 'Xen Orchestra target name from config; omit for the default.' This adds meaningful context beyond schema types.

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

Purpose5/5

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

Clearly states it analyzes patch and HA posture per pool, enumerates specific findings (missing patches, pending reboot, version skew, multi-host HA absence), and distinguishes from sibling RCA tools like backup_failure_rca or vm_health_rca.

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?

Implied that it should be used to diagnose pool patch and HA issues, but lacks explicit when-to-use or when-not-to-use guidance compared to alternatives. No mention of prerequisites or limitations.

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

snapshot_createA

[WRITE][risk=medium] Snapshot a VM. Inverse: delete THAT snapshot.

The created snapshot's REAL id is captured from the XO response, so the
recorded undo (snapshot_delete) is replayable.

Args:
    vm_id: VM uuid to snapshot (see vm_list).
    name: Snapshot name (e.g. 'pre-change-2026-07-17').
    dry_run: If True, preview without snapshotting (no undo recorded).
    target: Xen Orchestra target name from config; omit for the default.
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
vm_idYes
targetNo
dry_runNo

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It includes '[WRITE][risk=medium]' indicating write operation and risk level. It explains undo recording (real ID captured from XO response) and dry_run behavior (preview without snapshotting, no undo recorded). This provides meaningful behavioral context beyond the basic operation.

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

Conciseness5/5

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

The description is concise at 6 sentences. It front-loads the core action and risk, then explains undo recording, then lists parameters. Every sentence adds value without redundancy.

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 snapshot creation tool, the description covers the main behavior, parameter semantics, and undo mechanism. However, it lacks details on return value (e.g., snapshot ID) and possible errors (e.g., VM not found). Given no output schema, this information would be helpful for completeness.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. The Args section explains each parameter: vm_id (VM uuid, see vm_list), name (with example), dry_run (preview behavior), target (Xen Orchestra target, optional). This adds significant value over the schema, though could be more detailed on default behavior for target.

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

Purpose5/5

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

The description starts with '[WRITE][risk=medium] Snapshot a VM.' clearly indicating the action and scope. It also mentions the inverse operation (snapshot_delete), distinguishing it from sibling tools like snapshot_list and snapshot_revert.

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

Usage Guidelines3/5

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

The description provides guidance on using the tool (e.g., referencing vm_list for vm_id, naming convention) and mentions dry_run preview. However, it does not explicitly state when to use this tool versus alternatives like snapshot_list, snapshot_delete, or snapshot_revert, nor does it explain 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.

snapshot_deleteA

[WRITE][risk=high] Delete a VM snapshot by uuid. IRREVERSIBLE.

Captures the snapshot's prior state (name / time / parent VM) for the audit
record; declares no undo.

Args:
    snapshot_id: Snapshot uuid (see snapshot_list).
    dry_run: If True, preview without deleting.
    target: Xen Orchestra target name from config; omit for the default.
ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
dry_runNo
snapshot_idYes

TDQS

A4.7/5.0
Behavior5/5

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

Despite no annotations, the description labels the operation as [WRITE][risk=high], declares irreversibility, describes audit logging, and notes dry_run for safety.

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 and a brief Args section; front-loaded with purpose and risk. No redundant 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?

Covers purpose, risks, parameters, and audit behavior. Lacks explicit return value description, but for a delete operation this is adequate.

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

Parameters5/5

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

All three parameters (snapshot_id, dry_run, target) are explained beyond the schema, which has 0% coverage. Provides defaults and cross-reference to snapshot_list.

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 states 'Delete a VM snapshot by uuid' with a clear verb and resource, and includes risk labeling. It distinguishes from sibling tools like snapshot_list and snapshot_create.

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 context for when to use (deletion) and mentions dry_run for preview, but does not explicitly state when not to use or compare to alternatives like snapshot_revert.

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

snapshot_listA

[READ] List VM snapshots, optionally filtered to one VM.

Returns {"snapshots": [...], "returned": N, "limit": L, "truncated": bool}.
When truncated is true there are more snapshots than were returned.

Args:
    vm_id: Optional VM uuid to filter (see vm_list).
    limit: Max snapshots to return after filtering (default 200).
    target: Xen Orchestra target name from config; omit for the default.
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
vm_idNo
targetNo

TDQS

A4.6/5.0
Behavior4/5

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

The description explicitly marks the tool as '[READ]', details the return format including truncation behavior, and explains that limit is applied after filtering. This adds transparency beyond the schema.

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

Conciseness5/5

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

The description is concise and well-structured: a one-line summary, return format, then parameter details. Every sentence is informative with no fluff.

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

Completeness5/5

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

Given 3 parameters, no output schema, and no annotations, the description is complete. It covers the return value format, parameter semantics, truncation, and filtering behavior.

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

Parameters5/5

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

The schema has 0% description coverage, but the description thoroughly explains each parameter: vm_id (optional filter, cross-reference), limit (max after filtering, default), and target (default target). This adds essential meaning.

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

Purpose5/5

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

The description clearly states the verb 'List' and the resource 'VM snapshots', with optional filtering. It distinguishes from sibling tools like snapshot_create, snapshot_delete, and snapshot_revert by being a read-only list operation.

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 each parameter (optional vm_id filter, limit, target). It references vm_list for vm_id context. However, it does not explicitly state when not to use the tool or mention alternatives among siblings.

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

snapshot_revertA

[WRITE][risk=high] Revert a VM to a snapshot. IRREVERSIBLE.

The VM's CURRENT state is replaced by the snapshot — take a fresh snapshot
first (snapshot_create) if you may need to come back. Captures the
snapshot's state for the audit record; declares no undo.

Args:
    snapshot_id: Snapshot uuid to revert to (see snapshot_list).
    dry_run: If True, preview without reverting.
    target: Xen Orchestra target name from config; omit for the default.
ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
dry_runNo
snapshot_idYes

TDQS

A4.7/5.0
Behavior5/5

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

No annotations provided, but the description fully covers behavioral traits: marks the operation as WRITE with high risk, explicitly states it is IRREVERSIBLE, explains state replacement, and mentions audit capture. 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?

Four sentences plus three parameter lines, no wasted words. Key information is front-loaded in the first line. Every sentence contributes 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?

Covers purpose, parameters, and behavior well. However, no output schema is provided and the description does not mention return values or success indicators, which is a minor gap for contextual completeness.

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

Parameters5/5

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

Schema description coverage is 0%, but the description provides detailed comments for all three parameters: snapshot_id ('Snapshot uuid to revert to', referencing snapshot_list), dry_run preview behavior, and target default behavior, adding significant meaning beyond the schema.

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

Purpose5/5

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

The description clearly states 'Revert a VM to a snapshot' with a specific verb and resource, and includes a risk marker. This distinguishes it from sibling tools like snapshot_create and snapshot_delete.

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

Usage Guidelines4/5

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

Explicitly advises to take a fresh snapshot first if one may need to come back, implying when to use snapshot_create as a preparatory step. Does not explicitly list alternatives, but provides clear context for when to use this tool.

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

sr_getA

[READ] Detail for one SR by uuid.

Args:
    sr_id: SR uuid (see sr_list).
    target: Xen Orchestra target name from config; omit for the default.
ParametersJSON Schema
NameRequiredDescriptionDefault
sr_idYes
targetNo

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 fully convey behavioral traits. It indicates a read operation with '[READ]' but fails to disclose what 'detail' includes, whether any side effects exist, authentication requirements, or error conditions. This is insufficient for a tool with no structured behavioral metadata.

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 short lines for the purpose and a bullet list for arguments. No redundant words, and the '[READ]' prefix immediately communicates the operation type. Every sentence earns its place.

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 the absence of an output schema, the description should hint at the return value. It does not explain what fields constitute the 'detail.' For a simple get tool, the description is minimally adequate but lacks completeness compared to siblings that might have richer descriptions.

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 0%, but the description adds meaningful context for both parameters: sr_id is explained as 'SR uuid (see sr_list)' and target as 'Xen Orchestra target name from config; omit for the default.' This helps beyond the raw schema but does not provide exhaustive details like format constraints.

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

Purpose5/5

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

The description starts with '[READ]' and explicitly says 'Detail for one SR by uuid.' This clearly communicates the verb (read/get), the resource (SR), and the identifier (uuid). It distinguishes from sibling tools like sr_list (list) and sr_rescan (rescan).

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 hints at usage by referencing sr_list to obtain the uuid and notes that the target can be omitted for default. However, it does not explicitly state when to use this tool versus alternatives (e.g., sr_rescan, sr_usage_rca) or provide any when-not-to-use guidance.

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

sr_listA

[READ] List SRs with capacity, physical usage, virtual allocation.

Returns {"srs": [...], "returned": N, "limit": L, "truncated": bool}.
When truncated is true there are more SRs than were returned.

Args:
    pool: Optional pool uuid to filter by.
    limit: Max SRs to return after filtering (default 200).
    target: Xen Orchestra target name from config; omit for the default.
ParametersJSON Schema
NameRequiredDescriptionDefault
poolNo
limitNo
targetNo

TDQS

A4.4/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. Clearly marks as read operation '[READ]', describes return format including truncation flag for pagination. No mention of authentication needs or performance, but sufficient for a read tool.

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

Conciseness5/5

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

Concise: one-line summary, return format, then args section. No wasted sentences, front-loaded with purpose.

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

Completeness5/5

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

No output schema, but description details return format including 'returned', 'limit', 'truncated' fields. Covers all parameters. Complete for a simple list tool.

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

Parameters5/5

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

Schema description coverage is 0%, but description explains all three parameters: pool (optional UUID filter), limit (max results, default 200), target (optional config name). Each parameter's purpose and default are clear.

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?

Starts with '[READ] List SRs with capacity, physical usage, virtual allocation.' Clearly states verb (list) and resource (SRs), and specifies included fields. Distinguishes from sibling tools like vm_list or sr_get.

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?

Does not explicitly state when to use vs. alternatives. Implied usage via parameter descriptions (optional pool filter, limit), but no when-not or alternative tool guidance.

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

sr_rescanA

[WRITE][risk=medium] Rescan an SR (metadata refresh — no data change, no undo).

Lowest-impact write in this tool, but a write nonetheless: it refreshes SR
metadata and records no undo (there is no prior state to restore).

Args:
    sr_id: SR uuid (see sr_list).
    dry_run: If True, preview without rescanning.
    target: Xen Orchestra target name from config; omit for the default.
ParametersJSON Schema
NameRequiredDescriptionDefault
sr_idYes
targetNo
dry_runNo

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description fully discloses that this is a write operation with no data change, no undo, and a dry_run capability. It acknowledges the risk level ('medium') and explains that refresh records no undo because there's no prior state. This is comprehensive for a simple mutation tool.

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 highly efficient: a one-line header with risk and nature, followed by a brief paragraph explaining the write impact, then a compact Args list. Every sentence provides essential information without redundancy.

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

Completeness4/5

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

Given 3 parameters, no annotations, and no output schema, the description covers purpose, usage, and parameters well. It lacks information about the return value or side effects after a rescan, but this is minor for a metadata refresh tool.

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

Parameters5/5

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

Schema description coverage is 0%, but the description provides detailed explanations for all three parameters: sr_id (a UUID from sr_list), dry_run (preview mode), and target (optional Xen Orchestra target). This adds significant meaning beyond the schema types.

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 identifies the action (rescan) and resource (SR), with a specific verb and context ('metadata refresh — no data change, no undo'). It distinguishes from sibling tools like sr_list, sr_get, sr_usage_rca by implying it's a write operation for refreshing metadata.

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 this tool (metadata refresh after storage changes) and includes a dry_run option for preview. It notes that it's the lowest-impact write and warns of no undo, but does not explicitly mention alternatives or 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.

sr_usage_rcaA

[READ][RCA] SR usage root-cause analysis — cause + action per finding.

Ranks SRs by physical fullness (near-full / critical), flags thin-provision
overcommit (virtual allocation > capacity), and totals orphaned VDIs with
reclaimable bytes per SR.

Args:
    target: Xen Orchestra target name from config; omit for the default.
ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

TDQS

A4.2/5.0
Behavior4/5

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

Clearly labels as [READ] and details analysis steps (ranking, flagging, totaling), providing transparency beyond default expectations without annotations.

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

Conciseness5/5

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

Two terse paragraphs; first conveys purpose and key actions, second documents parameter. No fluff, 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?

Covers purpose, actions, and parameter adequately. Lacks explicit output format but given simple input, it is sufficiently complete for selection and invocation.

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?

Explains the 'target' parameter meaning (Xen Orchestra target name, optional) despite 0% schema coverage, adding value over the schema's anyOf definition.

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 states 'SR usage root-cause analysis' with specific actions (rank, flag, total), distinguishing it from sibling RCA tools like backup_failure_rca and vm_health_rca.

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

Usage Guidelines3/5

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

Implies usage for analyzing SR storage issues but lacks explicit when-to-use vs alternatives or when-not-to-use guidance.

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

task_listA

[READ] List XO tasks, optionally filtered by status.

Returns {"tasks": [...], "returned": N, "limit": L, "truncated": bool}.
When truncated is true the task feed had more entries than were returned —
re-run with a higher limit or a narrower status filter.

Args:
    status: Optional filter: pending / success / failure.
    limit: Max tasks to return after filtering (default 200).
    target: Xen Orchestra target name from config; omit for the default.
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
statusNo
targetNo

TDQS

A4.5/5.0
Behavior4/5

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

The description starts with '[READ]' indicating it's a read-only operation, and explains the return format including the truncated field. No annotations exist, so the description carries the burden and does well, though it omits details like error handling.

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

Conciseness5/5

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

The description is concise and well-structured: first line states purpose, second line shows return format, third line explains truncated, then Args section. No wasted words.

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

Completeness4/5

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

Given the lack of annotations and output schema, the description covers the return format, parameter meanings, and usage of the truncated field. It could be more complete with error scenarios or prerequisites, but it is sufficient for basic use.

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

Parameters5/5

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

All three parameters (status, limit, target) are explained in the description with specific allowed values for status and default values for limit and target. This adds significant value beyond the schema which has no descriptions.

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

Purpose5/5

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

The description clearly states it lists XO tasks with optional filtering by status. The verb 'list' and resource 'XO tasks' are specific and distinct from sibling tools that list other resources like VMs or hosts.

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?

Guidance on optional filtering by status and handling truncated results is provided. However, there is no explicit when-to-use or when-not-to-use compared to other tools, though the tool name makes its purpose clear.

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

undo_applyA

[WRITE][risk=medium] Apply a recorded undo by dispatching its inverse tool.

The inverse runs through its own governed tool, so it is audited under its
own risk tier. Pass dry_run=True to preview the inverse call without
executing it. A token can only be applied once.

Args:
    undo_id: The undoId from undo_list (or an ``_undo_id`` in a write result).
    dry_run: If True, preview the inverse tool + params without running it.
    target: Passed through to the inverse tool when it accepts a target.
ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
dry_runNo
undo_idYes

TDQS

A4.4/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. Discloses write operation, medium risk, inverse audited under its own tier, dry_run behavior, and token single-use. Adds value beyond structured fields.

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

Conciseness5/5

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

Efficiently structured with summary, behavioral prose, and parameter list. No redundant sentences, every part adds value.

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?

Covers key aspects but omits return value description and error handling. Given no output schema, a brief note on what the result contains would improve completeness.

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

Parameters5/5

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

Schema coverage is 0%, but description's Args section fully explains each parameter's purpose and source (e.g., undo_id from undo_list or _undo_id). Adds meaning beyond schema types and defaults.

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

Purpose5/5

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

Clearly states 'Apply a recorded undo by dispatching its inverse tool,' specifying verb and resource. Distinguishes from sibling 'undo_list' by focusing on application rather than 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?

Explicitly describes when to use: to apply a recorded undo. Mentions dry_run for preview and token single-use constraint. Lacks explicit when-not-to-use or alternatives but is clear enough for an agent.

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

undo_listA

[READ] List recorded, not-yet-applied undo tokens (most recent first).

Each entry names the original tool, the inverse tool that ``undo_apply``
would run, and a human note. Use the ``undoId`` with ``undo_apply``.

One extra row is read so ``truncated`` is measured rather than guessed from
the row count matching the limit; when it is true, older tokens exist.

Each entry carries ``effectVerified``. False means the original write
lost its response, so the change it reverses is PROBABLE, not confirmed —
check the live state before applying, and do not report the result as a
restore of a state that may never have been reached.

Args:
    limit: Max rows to return (default 50, capped at 500).
    target: Unused (undo state is host-local); accepted for CLI uniformity.
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
targetNo

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries full burden for safety and behavior. It explicitly declares '[READ]' to indicate non-destructive operation, and discloses important nuances: the extra row for accurate 'truncated' detection, the meaning of 'effectVerified' including the warning that false means the change is probable not confirmed, and the instruction to check live state before applying. This is comprehensive and actionable.

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

Conciseness5/5

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

The description is well-organized: a concise summary sentence, followed by necessary details about fields, usage, and the warning about effectVerified. Each sentence adds value, and the Args section cleanly documents parameters. Despite length, nothing is verbose or redundant.

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 output schema and no annotations, the description fully covers return behavior (entry fields, ordering), pagination semantics (truncated via extra row), parameter behavior, and a subtle data-quality caveat. It leaves no significant questions for an agent and is complete for safe invocation.

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

Parameters5/5

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

The input schema provides only types and defaults with zero description coverage. The description fully compensates: it explains 'limit' (max rows, default 50, capped at 500) and 'target' (unused, accepted for CLI uniformity), adding meaning beyond the schema's bare structure.

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

Purpose5/5

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

The description starts with '[READ] List recorded, not-yet-applied undo tokens (most recent first)', which is a specific verb+resource+scope. It clearly distinguishes this from sibling tools like undo_apply, which applies the tokens, and other list tools for different 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?

The description gives explicit usage context: 'Use the undoId with undo_apply.' It also explains the limit parameter and the purpose of the extra row for measuring truncation. However, it doesn't explicitly contrast with sibling list tools, though the resource type (undo tokens) makes alternatives clear.

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

vdi_listA

[READ] List VDIs (virtual disks), optionally per SR or orphaned-only.

Orphaned = attached to no VM (no VBD) — candidates for reclaiming space.
Returns {"vdis": [...], "returned": N, "limit": L, "truncated": bool};
when truncated is true there are more disks than were returned.

Args:
    sr: Optional SR uuid to filter by.
    orphaned_only: Only VDIs not attached to any VM.
    limit: Max VDIs to return after filtering (default 200).
    target: Xen Orchestra target name from config; omit for the default.
ParametersJSON Schema
NameRequiredDescriptionDefault
srNo
limitNo
targetNo
orphaned_onlyNo

TDQS

A4.8/5.0
Behavior5/5

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

Without annotations, the description fully discloses behavior: it's a read operation, returns a structured object with truncation info, and defines key terms. No contradictions.

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

Conciseness5/5

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

The description is well-structured, efficient, and front-loaded with the read hint and purpose. Every sentence adds value without unnecessary words.

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

Completeness5/5

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

Given no output schema, the description includes the return format. All 4 parameters are documented. The tool is simple and the description covers its essential behavior completely.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must add meaning. It explains each parameter (sr, orphaned_only, limit, target) with clear semantics, including default values and purpose.

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

Purpose5/5

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

The description starts with '[READ]' and clearly states 'List VDIs (virtual disks), optionally per SR or orphaned-only.' This specific verb and resource set it apart from sibling tools like vm_list or sr_list.

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 filters (sr, orphaned_only) and defines orphaned for context, but does not explicitly say when not to use the tool or mention alternatives.

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

vm_getA

[READ] Detail for one VM by uuid (state, host, OS, tools, tags).

Args:
    vm_id: VM uuid (see vm_list).
    target: Xen Orchestra target name from config; omit for the default.
ParametersJSON Schema
NameRequiredDescriptionDefault
vm_idYes
targetNo

TDQS

A4.3/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 full burden. It marks the operation as [READ] and lists returned fields, which is sufficient for a simple get tool. It does not mention side effects, authentication, or rate limits, but for a read-only tool this is acceptable.

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 no wasted words. It front-loads the purpose with '[READ]' and uses a clean args list format. Every sentence is necessary.

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 output schema, the description mentions fields returned but is incomplete. It does not describe the full return structure (e.g., object shape, nested fields). More detail about the response would improve completeness for a detail-fetching tool.

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

Parameters4/5

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

Schema coverage is 0%, but the description adds meaningful explanations: vm_id as VM uuid with a reference to vm_list, and target as the Xen Orchestra target name with default behavior. This adds value beyond the schema property titles.

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

Purpose5/5

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

The description clearly states a read operation for one VM by uuid, listing specific fields (state, host, OS, tools, tags). It distinguishes from vm_list which lists VMs and vm_stats for statistics.

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 an args list explaining vm_id and target, and references vm_list for obtaining the uuid. However, it does not explicitly state when to use this tool versus alternatives like vm_list or vm_stats, though context from sibling names implies it.

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

vm_health_rcaA

[READ][RCA] VM health root-cause analysis — cause + action per finding.

Flags VMs halted unexpectedly (auto-poweron / HA set), paused or suspended
VMs, running VMs without guest tools, and CPU / memory pressure from recent
stats. Analyze one VM (vm_id) or the whole fleet.

Args:
    vm_id: Optional VM uuid to analyze just one VM.
    target: Xen Orchestra target name from config; omit for the default.
ParametersJSON Schema
NameRequiredDescriptionDefault
vm_idNo
targetNo

TDQS

A4.4/5.0
Behavior4/5

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

No annotations given, so the description carries the burden. It explicitly labels as [READ] indicating read-only operation, and lists the types of findings, providing a good overview of expected behavior without 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.

Conciseness4/5

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

Well-structured with a header, bullet list of checks, and argument descriptions. Slightly verbose in the bullet list but overall efficient and clear.

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

Completeness4/5

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

Given 2 parameters, no output schema, and no annotations, the description covers purpose, parameters, and the nature of output (cause+action per finding). Sufficient for a simple tool.

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

Parameters5/5

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

Schema coverage is 0%, but the description fully explains both parameters: vm_id (optional, for single VM analysis) and target (optional, default). Adds significant meaning beyond the schema.

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

Purpose5/5

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

The description clearly states it performs root-cause analysis on VM health, listing specific flags (halted, paused, missing guest tools, CPU/memory pressure). This distinguishes it from sibling tools like backup_failure_rca or sr_usage_rca.

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 clear context: analyze one VM with vm_id or the whole fleet. Implicitly guides when to use this tool for VM health issues, but does not explicitly exclude other tools or scenarios.

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

vm_listA

[READ] List VMs with power state, host, tools status, sizing.

Returns {"vms": [...], "returned": N, "limit": L, "truncated": bool}.
When truncated is true there are more VMs than were returned — re-run with
a higher limit rather than treating this as the whole fleet.

Args:
    power_state: Optional filter (Running / Halted / Paused / Suspended).
    pool: Optional pool uuid to filter by.
    limit: Max VMs to return after filtering (default 200).
    target: Xen Orchestra target name from config; omit for the default.
ParametersJSON Schema
NameRequiredDescriptionDefault
poolNo
limitNo
targetNo
power_stateNo

TDQS

A4.2/5.0
Behavior4/5

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

The description discloses the return format and the critical truncation behavior ('When truncated is true there are more VMs than were returned — re-run with a higher limit'). Annotations are absent, so the description carries full burden. It does not mention side effects, authentication, or rate limits, but for a read-only list tool this is sufficient. The [READ] prefix adds clarity.

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

Conciseness5/5

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

The description is very concise: one sentence for purpose, one for return format, one for truncation behavior, and a clean parameter list. Every sentence adds value. It is front-loaded with the purpose and structured logically.

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 4 parameters, no output schema, and moderate complexity (filtering, truncation), the description covers everything needed: purpose, return shape, critical truncation behavior, and all parameters. There is no missing information that would hinder correct usage.

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

Parameters5/5

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

The description documents all four parameters (power_state, pool, limit, target) with their purpose and defaults. The input schema has no property descriptions (0% coverage), so the description fully compensates by providing meanings and expected values. It also explains the truncation behavior in context of limit.

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

Purpose5/5

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

The description starts with '[READ] List VMs with power state, host, tools status, sizing.' This clearly states the verb (List) and resource (VMs), and it specifies the fields returned. It also distinguishes from sibling tool 'vm_get' which retrieves a single VM.

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

Usage Guidelines2/5

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

The description does not provide any guidance on when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or when not to use it. The only contextual hint is the '[READ]' prefix, but no explicit comparison with sibling tools like 'overview' or 'backup_job_list'.

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

vm_migrateA

[WRITE][risk=medium] Live-migrate a VM to another host. Inverse: migrate back.

The REAL source host is captured BEFORE the move so the recorded undo
(migrate back to it) is replayable.

Args:
    vm_id: VM uuid (see vm_list).
    host_id: Destination host uuid (see host_list).
    dry_run: If True, preview without migrating (no undo recorded).
    target: Xen Orchestra target name from config; omit for the default.
ParametersJSON Schema
NameRequiredDescriptionDefault
vm_idYes
targetNo
dry_runNo
host_idYes

TDQS

A4.7/5.0
Behavior5/5

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

The description fully discloses behavioral details: it is a write operation with medium risk, records the source host for undo, and dry_run prevents recording. It adds context beyond annotations (which are absent), covering the undo mechanism and preview 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?

The description is concise, starting with an action line, then a behavioral note, followed by parameter definitions. Every sentence adds value, and the structure is easy 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?

The description covers behavior and parameters well, but lacks details on return value (no output schema) and prerequisites like VM state or permissions. Given the tool's complexity and absence of output schema, it is nearly complete.

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

Parameters5/5

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

With 0% schema coverage, the description compensates entirely by explaining each parameter: vm_id (UUID from vm_list), host_id (UUID from host_list), dry_run (preview, no undo), and target (optional, defaults). This adds critical meaning beyond the schema's type-only information.

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 ('Live-migrate a VM to another host'), resource (VM), and scope. It distinguishes from sibling tools like vm_start, vm_stop by specifying live migration across hosts and mentioning the inverse operation.

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 context for use (live migration, undo via inverse) and explains the dry_run parameter for preview. However, it does not explicitly state when this tool should be used over alternatives (e.g., vm_reboot, snapshot_revert) or when not to use it.

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

vm_rebootA

[WRITE][risk=medium] Reboot a VM (clean; hard with force). No undo.

A reboot has no meaningful inverse — the prior power state is captured for
the audit record only.

Args:
    vm_id: VM uuid (see vm_list).
    force: Hard reboot instead of a clean guest reboot.
    dry_run: If True, preview without rebooting.
    target: Xen Orchestra target name from config; omit for the default.
ParametersJSON Schema
NameRequiredDescriptionDefault
forceNo
vm_idYes
targetNo
dry_runNo

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 full burden. It declares '[WRITE][risk=medium]', mentions 'No undo', and explains the behavior of force and dry_run parameters. This provides good transparency beyond the schema.

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

Conciseness4/5

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

The description is concise with a clear header and structured Args section. It is front-loaded with the core action and risk, but some redundancy (e.g., 'No undo' repeated) slightly reduces efficiency.

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 4 parameters, no output schema, and no annotations, the description covers the tool's purpose, all parameters, and key behavioral aspects (no undo, audit). It lacks explicit return value info but is otherwise complete.

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

Parameters5/5

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

Schema coverage is 0%, and the description fully explains each parameter: vm_id (source from vm_list), force (hard vs clean), dry_run (preview), target (default from config). This adds significant meaning beyond the bare schema.

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

Purpose5/5

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

The description clearly states 'Reboot a VM (clean; hard with force)', which is a specific verb+resource. It distinguishes from siblings like vm_start and vm_stop by focusing on reboot, not start or stop.

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 gives context (no undo, audit record) but does not explicitly state when to use this tool vs alternatives like vm_start/vm_stop. Usage is implied but lacks explicit guidance.

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

vm_startA

[WRITE][risk=medium] Start a VM. Inverse: vm_stop.

Args:
    vm_id: VM uuid (see vm_list).
    dry_run: If True, preview without starting (no undo recorded).
    target: Xen Orchestra target name from config; omit for the default.
ParametersJSON Schema
NameRequiredDescriptionDefault
vm_idYes
targetNo
dry_runNo

TDQS

A4.3/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 full burden. It notes a risk level of 'medium' and explains that dry_run mode records no undo, but does not mention other behavioral aspects such as permissions, side effects for already-running VMs, or error handling.

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

Conciseness5/5

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

The description is very concise, with a clear front-loaded purpose statement followed by a structured 'Args' section. Every sentence adds value without redundancy.

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

Completeness4/5

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

For a simple tool with 3 parameters and no output schema, the description covers the essential usage and parameter semantics. However, it lacks details on return values or potential failure modes, which could be useful.

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

Parameters5/5

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

Schema description coverage is 0%, but the description adds full semantic meaning for all three parameters: vm_id (UUID from vm_list), dry_run (preview without undo), and target (Xen Orchestra target with default). This greatly enhances 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 'Start a VM' with the verb 'Start' and resource 'VM'. It also explicitly mentions the inverse tool 'vm_stop', distinguishing it from its sibling.

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

Usage Guidelines4/5

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

The description provides usage context via the 'Args' section, explaining the purpose of each parameter. It mentions the inverse tool as an alternative, but does not explicitly state when not to use this tool or provide broader usage guidance.

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

vm_statsA

[READ] Recent CPU / memory stats for a VM (RRD-backed averages).

Args:
    vm_id: VM uuid (see vm_list).
    granularity: seconds / minutes / hours / days (default seconds).
    target: Xen Orchestra target name from config; omit for the default.
ParametersJSON Schema
NameRequiredDescriptionDefault
vm_idYes
targetNo
granularityNoseconds

TDQS

A3.7/5.0
Behavior3/5

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

The description includes a '[READ]' prefix, indicating it is read-only and safe, and mentions 'RRD-backed averages'. However, it lacks details on authorization requirements, error handling, or performance implications. Without annotations, the description partially fulfills transparency but has gaps.

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

Conciseness5/5

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

The description is concise, well-structured, and front-loaded with the purpose. Every sentence adds value without redundancy, making it easy to parse quickly.

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

Completeness4/5

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

For a simple stats tool with no output schema, the description adequately covers inputs, behavior (read-only, RRD-backed), and parameter defaults. It does not explain return format or error cases, but given the tool's simplicity and low complexity, it is nearly complete.

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

Parameters5/5

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

The description explains all three parameters in detail: vm_id as 'VM uuid', granularity with allowed values and default, and target with context. Since the schema has no descriptions and 0% coverage, the description fully compensates and adds essential meaning.

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 it returns 'Recent CPU / memory stats for a VM' and labels it as a read operation. The purpose is specific and distinct from sibling tools like vm_get or vm_health_rca, though it does not explicitly differentiate them.

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 is provided on when to use this tool versus alternatives, such as vm_get or vm_health_rca. The description implies it's for historical averages but does not offer explicit when-not-to-use or prerequisite information.

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

vm_stopA

[WRITE][risk=medium] Stop a VM (clean shutdown; hard with force). Inverse: vm_start.

A clean shutdown needs the guest tools running; force maps to a hard
power-off. Captures the prior power state.

Refuses the VM declared as running Xen Orchestra (xo_self_vm_uuid on the
target) — stopping XO removes the API vm_start would travel over, so
recovery needs hypervisor console access. dry_run refuses it too: a preview
that returns green for a call that will be refused is a wrong preview. That
guard is exact and opt-in: an undeclared target is refused nothing, on
either path. The dry-run adds a weaker IP-based selfVmHint (null when there
is none) that is a coincidence to check, never a verdict and never a block —
XO's API exposes no self endpoint, so nothing here can be certain.

Args:
    vm_id: VM uuid (see vm_list).
    force: Hard power-off instead of a clean guest shutdown.
    dry_run: If True, preview without stopping (no undo recorded).
    target: Xen Orchestra target name from config; omit for the default.
ParametersJSON Schema
NameRequiredDescriptionDefault
forceNo
vm_idYes
targetNo
dry_runNo

TDQS

A4.9/5.0
Behavior5/5

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

Discloses key behaviors: captures prior power state, refuses to stop XO self VM, dry_run gives preview but refuses that specific call, and explains selfVmHint as a coincidence check. Without annotations, this carries the full burden and does so thoroughly.

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 somewhat verbose but well-structured with a summary line, detailed explanations, and a clear args section. Every sentence adds value, though it could be slightly condensed without losing clarity.

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

Completeness5/5

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

Covers all aspects: mutation behavior, edge cases (self VM block, dry_run), parameter details, dependencies (guest tools), and recovery implications. No output schema exists, but the description provides sufficient context for correct invocation.

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

Parameters5/5

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

Adds meaning beyond schema for all 4 parameters: vm_id references vm_list, force describes hard power-off, dry_run explains preview behavior and interaction with self-VM guard, target specifies Xen Orchestra target. Schema coverage is 0%, so description fully compensates.

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

Purpose5/5

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

The description explicitly states it stops a VM, distinguishes between clean shutdown and hard power-off, and captures prior power state. It differentiates from sibling tools like vm_start, vm_reboot, and vm_migrate by focusing on stopping a VM.

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

Usage Guidelines5/5

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

Provides clear when-to-use guidance: inverse of vm_start, force for hard power-off, clean shutdown needs guest tools. Also specifies when not to use: refuses the XO self VM and dry_run refusal. Includes context for target parameter and default handling.

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

TDQS

A4.2/5.0
Disambiguation5/5

Every tool has a clearly distinct purpose through descriptive verb_noun naming. Operations on VMs, hosts, pools, SRs, backups, snapshots, tasks, and undo are all separated without overlap. RCA tools are uniquely named and scoped.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with underscores (e.g., vm_list, sr_rescan, pool_patch_ha_posture). No mixed casing or stylistic deviations, making the surface predictable.

Tool Count5/5

29 tools cover a broad XCP-ng management domain without being bloated. Each tool addresses a distinct and necessary operation for operations, monitoring, and remediation, from core VM control to specialized root-cause analysis.

Completeness4/5

The tool set comprehensively covers the stated AIOps focus: VM lifecycle, snapshots, hosts, pools, storage, backups, health analysis, and undo. Minor gaps exist (lack of VM create/delete, backup job creation) but these are likely intentional risk restrictions, so the surface is effectively complete for its operational purpose.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    A
    maintenance
    Governed Prometheus + Grafana operations — firing-alert and scrape-target RCA, alert noise/flapping analysis, silences, and dashboards, with unbypassable audit logging (MCP + CLI), budget/runaway guards, dry-run, and undo/rollback.
    39
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Governed OPNsense + pfSense firewall operations — gateway-health, rule-shadow, and blocked-traffic RCA, with guarded rule/alias writes, unbypassable audit logging (MCP + CLI), budget/runaway guards, dry-run, and undo/rollback.
    35
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Governed SSO/IAM operations for Keycloak and Authentik — login-failure, stale-permission, client-config, and MFA RCA, with unbypassable audit logging (MCP + CLI), budget/runaway guards, dry-run, and undo/rollback.
    29
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Governed CI/CD operations for self-hosted GitLab and Gitea — pipeline-failure, runner, artifact-bloat, and stale-branch RCA, with unbypassable audit logging (MCP + CLI), budget/runaway guards, dry-run, and undo/rollback.
    28
    MIT

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/AIops-tools/XCPng-AIops'

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