Skip to main content
Glama
jkmills

Nutanix MCP Server

by jkmills

Nutanix MCP Server

WARNING

Use at your own risk. MCP servers grant AI models the ability to execute actions against your infrastructure. AI-driven management of production environments carries inherent risk — models can misinterpret intent, hallucinate parameters, or trigger destructive operations. This software is provided "as is" without warranty of any kind. The authors accept no liability for data loss, downtime, or any damages arising from use of this tool. Always review AI-proposed actions before execution and maintain proper backups.

An MCP (Model Context Protocol) server that exposes Nutanix Prism Central and Prism Element APIs as tools for AI assistants like GitHub Copilot, Claude, and others.

Features

  • 65 tools — Full coverage of Prism Central v4 and Prism Element v2 APIs

  • Prism Central (v4 API) — VM lifecycle, snapshots, clusters, hosts, networking, categories, alerts, tasks

  • Prism Element (v2 API) — Direct cluster access for storage, disks, data protection, system config, health checks

  • Tool annotations — Every tool carries MCP readOnlyHint/destructiveHint/idempotentHint metadata, so clients can require approval for destructive operations (delete_vm, power_off_vm, …) and fast-track read-only ones

  • Structured output — Results are returned as MCP structuredContent with a JSON text fallback; failures return proper isError results with actionable messages

  • ETag concurrency control — All v4 mutations send If-Match automatically, as required by Nutanix v4 APIs

  • AsBuilt Reports — Generate comprehensive HTML reports with interactive TOC, Mermaid topology diagrams, and print-to-PDF support

  • API version routing — Prefers v4, falls back to v3/v2 when needed

  • Async — Non-blocking HTTP client using httpx; official Nutanix SDK calls run off the event loop

Related MCP server: nutanix-mcp

Available Tools (65)

VM Management — Prism Central v4

Tool

Description

list_vms

List all VMs with OData filtering (auto-paginates)

get_vm

Get full VM config — CPU, memory, disks, NICs

power_on_vm

Power on a VM

power_off_vm

Power off a VM (ACPI guest shutdown or force)

create_vm

Create a new VM with name, cluster, CPU, memory, disk

update_vm

Update VM config — CPU, memory, name, description

delete_vm

Permanently delete a VM (requires confirmation)

clone_vm

Clone a VM with a new name

VM Snapshots — Prism Central v4

Tool

Description

snapshot_vm

Create an on-demand recovery point of a VM

list_vm_snapshots

List all recovery points for a VM

restore_vm_snapshot

Restore a VM to a previous recovery point

Cluster & Host Management — Prism Central v4

Tool

Description

list_clusters

List all registered Nutanix clusters

get_cluster

Get cluster config, network, storage, and health details

list_hosts

List all hypervisor hosts across clusters

get_host

Get host hardware specs, hypervisor info, and resource usage

list_storage_containers

List storage containers across clusters

Networking & Images — Prism Central v4

Tool

Description

list_subnets

List subnets/VLANs with CIDR, VLAN ID, and cluster

get_subnet

Get subnet details including IP pools and DHCP config

list_images

List disk images (ISOs, QCOW2) in the image library

get_image

Get image details — size, type, source, cluster placement

list_categories

List all category keys and values

get_category

Get all values for a specific category key

Categories & Tagging — Prism Central v4

Tool

Description

assign_category

Tag a VM with a category key:value pair

remove_category

Remove a category assignment from a VM

list_entities_by_category

Find all VMs tagged with a specific category

Alerts & Tasks — Prism Central v4

Tool

Description

list_alerts

List all alerts from Prism Central

get_alert

Get full alert details — entities, resolution guidance

acknowledge_alert

Acknowledge or resolve an alert

list_tasks

List recent async tasks with status

get_task

Get task completion status and error details

Prism Element — Cluster & Hosts (v2 direct access)

Tool

Description

pe_get_cluster_info

Cluster AOS version, capacity, and health

pe_list_hosts

Hosts with hardware specs and CVM info

pe_get_host_disks

Per-host physical disk inventory (model, serial, firmware, tier)

pe_get_host_nics

Per-host NIC details — speed, link state, MAC, LLDP

pe_list_cvms

Controller VMs — IP, memory, power state

pe_get_cluster_health

Data resiliency and fault tolerance status

pe_list_health_checks

NCC-style health check results

pe_list_alerts

Active/resolved alerts on a PE cluster

Prism Element — Storage

Tool

Description

pe_list_containers

Storage containers with replication factor and policies

pe_list_storage_pools

Storage pools and disk composition

pe_list_disks

Physical disk inventory — type, status, capacity

pe_list_volume_groups

Volume groups — iSCSI IQN, attached VMs, CHAP

pe_get_volume_group

Detailed volume group config

Prism Element — VMs, Networks & Images

Tool

Description

pe_list_vms

VMs on a specific cluster

pe_list_networks

VLANs — managed/unmanaged, IP pool config

pe_list_images

Disk images and ISOs on a cluster

Prism Element — Data Protection

Tool

Description

pe_list_protection_domains

Protection domains — schedules, replication state

pe_get_protection_domain

Detailed PD config — consistency groups, VMs, schedules

pe_list_snapshots

Snapshots for a protection domain

pe_list_remote_sites

DR partner clusters — addresses, capabilities

pe_get_replication_status

Active replication progress, lag, and bandwidth

pe_list_dr_snapshots

DR snapshots across remote sites

pe_list_pd_replications

All active PD replications cluster-wide

pe_list_unprotected_vms

VMs not in any protection domain (compliance gaps)

Prism Element — System Configuration

Tool

Description

pe_get_auth_config

Auth types, directory services (LDAP/AD)

pe_get_smtp_config

SMTP relay server configuration

pe_get_snmp_config

SNMP traps, users, and community strings

pe_get_syslog_config

Remote syslog targets and severity levels

pe_get_alert_email_config

Alert email recipients and notification rules

pe_get_nfs_whitelists

Global NFS export ACLs

pe_get_licensing_info

License type (Starter/Pro/Ultimate) and features

pe_get_metro_witness

Metro Availability witness server config

AsBuilt Reports

Tool

Description

generate_asbuilt

Generate a comprehensive infrastructure report from a PE cluster — overview, system config, hosts, storage, VMs, networks, data protection, alerts, health checks, and Mermaid topology diagram

export_asbuilt_html

Convert AsBuilt Markdown to self-contained HTML with interactive TOC sidebar and print-optimized CSS for PDF export

get_project_architecture

Get the Nutanix MCP Server project architecture documentation

AsBuilt reports include 9 sections: overview, system, hosts (with per-host disk inventory), VMs, networks, storage, data protection (with remote sites and unprotected VM detection), alerts, and health checks. Hypervisor names are mapped automatically (kKvm → AHV). The HTML export features an interactive table of contents with scroll-spy that is hidden when printing to PDF.

MCP Resources (URI-based browsing)

The server exposes resources via nutanix:// URIs, allowing LLMs to browse entities without explicit tool calls:

URI Pattern

Description

nutanix://vms

Browse all VMs

nutanix://vms/{uuid}

Get a specific VM

nutanix://clusters

Browse all clusters

nutanix://clusters/{uuid}

Get a specific cluster

nutanix://hosts/{uuid}

Get a specific host

nutanix://subnets/{uuid}

Get a specific subnet

nutanix://images/{uuid}

Get a specific image

MCP Prompts

Prompt

Description

set_credentials

Interactive credential configuration (for clients without env var support)

nutanix_overview

Guided environment overview — clusters, hosts, storage, alerts

Setup

Prerequisites

  • Python 3.10+

  • Network access to your Prism Central instance (port 9440)

  • Nutanix credentials with API access

Install

cd mcp/nutanix-mcp-server
pip install -e .

Or with dev dependencies:

pip install -e ".[dev]"

Configure

Copy .env.example to .env and fill in your credentials:

cp .env.example .env
NUTANIX_HOST=your-prism-central.example.com
NUTANIX_PORT=9440
NUTANIX_USERNAME=your-username
NUTANIX_PASSWORD=your-password
NUTANIX_VERIFY_SSL=true
NUTANIX_TIMEOUT=30

# Optional: restrict which Prism Element hosts may receive credentials
# NUTANIX_ALLOWED_PE_HOSTS=10.0.0.1,10.0.0.2

# Optional: stderr diagnostic verbosity (DEBUG, INFO, WARNING, ERROR)
# NUTANIX_LOG_LEVEL=INFO

Run

nutanix-mcp

Or directly:

python -m nutanix_mcp

MCP Client Configuration

This server uses stdio transport — it communicates via stdin/stdout. Each client configures a command to launch the server process.

Tip: Store credentials in environment variables or a .env file, never in config files committed to source control.


Claude Code (CLI)

Add the server to your project with the claude mcp add command:

claude mcp add nutanix -- python -m nutanix_mcp

Or manually create/edit .mcp.json in your project root:

{
  "mcpServers": {
    "nutanix": {
      "type": "stdio",
      "command": "python",
      "args": ["-m", "nutanix_mcp"],
      "cwd": "/path/to/mcp/nutanix-mcp-server",
      "env": {
        "NUTANIX_HOST": "your-prism-central.example.com",
        "NUTANIX_USERNAME": "your-username",
        "NUTANIX_PASSWORD": "your-password",
        "NUTANIX_VERIFY_SSL": "true"
      }
    }
  }
}

For user-wide availability (all projects), add to ~/.claude.json instead.


Claude Desktop

Edit the config file at:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "nutanix": {
      "type": "stdio",
      "command": "python",
      "args": ["-m", "nutanix_mcp"],
      "cwd": "/path/to/mcp/nutanix-mcp-server",
      "env": {
        "NUTANIX_HOST": "your-prism-central.example.com",
        "NUTANIX_USERNAME": "your-username",
        "NUTANIX_PASSWORD": "your-password",
        "NUTANIX_VERIFY_SSL": "true"
      }
    }
  }
}

Restart Claude Desktop fully after editing.


GitHub Copilot (VS Code)

Add to .vscode/mcp.json in your workspace:

{
  "servers": {
    "nutanix": {
      "type": "stdio",
      "command": "python",
      "args": ["-m", "nutanix_mcp"],
      "cwd": "${workspaceFolder}/mcp/nutanix-mcp-server",
      "env": {
        "NUTANIX_HOST": "your-prism-central.example.com",
        "NUTANIX_USERNAME": "your-username",
        "NUTANIX_PASSWORD": "your-password",
        "NUTANIX_VERIFY_SSL": "true"
      }
    }
  }
}

OpenCode (sst/opencode)

Add to opencode.json (or opencode.jsonc) in your project root:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "nutanix": {
      "type": "local",
      "command": ["python", "-m", "nutanix_mcp"],
      "environment": {
        "NUTANIX_HOST": "your-prism-central.example.com",
        "NUTANIX_USERNAME": "your-username",
        "NUTANIX_PASSWORD": "your-password",
        "NUTANIX_VERIFY_SSL": "true"
      },
      "enabled": true
    }
  }
}

Note: OpenCode uses "command" as an array and "environment" instead of "env".


Docker MCP Gateway

The Docker MCP Gateway can proxy this server inside a container. Two approaches:

Option A: Run directly via Docker

Build a container image and reference it in your MCP client config:

FROM python:3.12-slim
WORKDIR /app
COPY mcp/nutanix-mcp-server/ .
RUN pip install --no-cache-dir -e .
CMD ["python", "-m", "nutanix_mcp"]

Then in any MCP client config:

{
  "mcpServers": {
    "nutanix": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "NUTANIX_HOST=your-prism-central.example.com",
        "-e", "NUTANIX_USERNAME=your-username",
        "-e", "NUTANIX_PASSWORD=your-password",
        "-e", "NUTANIX_VERIFY_SSL=true",
        "nutanix-mcp-server"
      ]
    }
  }
}

Option B: Register with Docker MCP Gateway

If you have Docker Desktop with the MCP Toolkit:

docker mcp gateway run

Configure the gateway profile to include the nutanix server. The gateway then exposes all registered MCP servers as a single unified endpoint.

In your AI client, point to the gateway:

{
  "mcpServers": {
    "MCP_DOCKER": {
      "command": "docker",
      "args": ["mcp", "gateway", "run"]
    }
  }
}

The gateway handles routing, lifecycle management, and credential isolation.

API Version Strategy

Version

Endpoint Pattern

Use Case

v4 (preferred)

/api/{namespace}/v4.0/{path}

VMs, clusters, hosts, networking

v3 (fallback)

/api/nutanix/v3/{resource}/list

Resources not yet in v4

v2 (PE direct)

https://{pe_ip}:9440/api/nutanix/v2.0/{resource}

Per-cluster storage, disks, alerts

Discovering Prism Element Hosts

Use list_clusters to find cluster UUIDs, then list_hosts to find CVM IPs. Those CVM IPs can be used as pe_host in the Prism Element tools.

Development

# Lint
ruff check src/

# Type check
mypy src/

# Test
pytest

References

Available Tools

28 tools
create_vmB

Create a new virtual machine. Requires name, cluster UUID, and basic specs.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName for the new VM
cluster_uuidYesUUID of the cluster to create the VM on
num_vcpusNoNumber of vCPUs (default: 2)
memory_mbNoMemory in MB (default: 4096)
disk_size_gbNoBoot disk size in GB (default: 40)

TDQS

B3.1/5.0
Behavior2/5

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

No annotations exist, so the description carries full burden. It states 'Create' (a mutation) but does not disclose permissions, side effects, or what happens on success/failure. It lacks behavioral details beyond the obvious creation action.

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

Conciseness4/5

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

The description is a single sentence that is concise and front-loads the purpose. However, it could be slightly improved by noting optional parameters, but it remains efficient.

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

Completeness2/5

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

Given the tool creates a resource with 5 parameters and no output schema, the description is too sparse. It does not explain return values, prerequisites (e.g., valid cluster UUID), or post-creation behavior, leaving gaps for an AI agent.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema documents each parameter thoroughly. The description adds minimal value by repeating 'name, cluster UUID, and basic specs' but does not clarify relationships or constraints beyond what the schema provides.

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 ('Create') and the resource ('virtual machine'), and lists required parameters ('name, cluster UUID, and basic specs'). It effectively distinguishes this tool from sibling tools like get_vm and list_vms, which are read-only.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives (e.g., when to use power_on_vm instead). It does not mention prerequisites or contexts where creation is appropriate or not.

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

generate_cluster_reportB

Generate a detailed As-Built report for one or more Nutanix clusters. Covers cluster configuration, hosts, storage containers, VMs, and networking. Returns Markdown with an Excalidraw cluster architecture diagram.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_uuidsNoList of cluster UUIDs to report on. If empty, reports on all clusters.
include_diagramNoInclude Excalidraw cluster diagram JSON (default: true)

TDQS

B3.4/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 disclose behavioral traits. It only states the tool generates a report and returns Markdown/diagram, but does not indicate whether it modifies state, requires permissions, or has performance implications. Key behavior is missing.

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

Conciseness5/5

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

The description is two sentences long, front-loaded with the purpose in the first sentence, and no extraneous information. Every word earns its place.

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

Completeness4/5

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

Given the low complexity (2 params, full schema coverage, no output schema), the description covers the purpose, content, and output format well. However, it lacks behavioral context like read-only indication, which would push completeness to 5.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already explains both parameters well. The description does not add significant meaning beyond what is in the schema, hence baseline 3.

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

Purpose5/5

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

The description explicitly states the tool generates an 'As-Built report' for Nutanix clusters, lists specific content areas (cluster configuration, hosts, etc.), and specifies the output format (Markdown with Excalidraw diagram). This clearly distinguishes it from sibling tools like generate_environment_report and generate_vm_report.

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 when to use this tool, alternatives, or prerequisites. No guidance on scenarios or when not to use it is given, leaving the agent to infer usage from the tool's name and purpose alone.

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

generate_environment_reportA

Generate a comprehensive As-Built report for the full Nutanix environment. Covers all clusters, hosts, storage, networking, and VM inventory registered with Prism Central. Returns Markdown with an Excalidraw topology diagram.

ParametersJSON Schema
NameRequiredDescriptionDefault
include_vmsNoInclude full VM inventory in the report (default: true)
include_diagramNoInclude Excalidraw topology diagram JSON (default: true)

TDQS

A3.7/5.0
Behavior3/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 that the tool returns Markdown with an Excalidraw diagram, but does not mention whether the operation is read-only, potential performance impacts (due to comprehensive scope), or permission requirements. The output format is clear, but behavioral traits are insufficiently 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 two sentences with no wasted words. The first sentence front-loads the purpose, and the second adds output format. 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 no output schema, the description explains the return format (Markdown + diagram) adequately. However, it lacks information about potential report size, execution time, or prerequisites. Context around when to use this over sibling reports is also missing, making it only partially complete.

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

Parameters3/5

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

Schema description coverage is 100%, with two boolean parameters having clear descriptions and defaults. The tool description does not add significant meaning beyond the schema; it only mentions 'include VMs' and 'Excalidraw diagram', which are already in schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states that the tool generates a comprehensive As-Built report for the full Nutanix environment, covering all clusters, hosts, storage, networking, and VM inventory. It uses specific verb 'generate' and resource 'report', and distinguishes itself from siblings like generate_cluster_report and generate_vm_report by being environment-wide.

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

Usage Guidelines3/5

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

The description implies usage for a full environment overview but does not explicitly state when to use this tool versus alternative report tools (e.g., generate_cluster_report, generate_vm_report). No when-not or alternative guidance is provided, leaving the agent to infer context.

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

generate_vm_reportB

Generate a detailed As-Built report for one or more VMs. Covers VM configuration, compute resources, disks, NICs, categories, and host placement. Returns Markdown with an Excalidraw VM layout diagram.

ParametersJSON Schema
NameRequiredDescriptionDefault
vm_uuidsYesList of VM UUIDs to report on (required).
include_diagramNoInclude Excalidraw VM diagram JSON (default: true)

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries full responsibility. It discloses that the tool returns Markdown with an Excalidraw diagram, but does not state whether the operation is read-only, requires special authorization, has rate limits, or any potential side effects. The behavioral profile is minimal.

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

Conciseness5/5

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

The description is concise with two well-structured sentences. The first sentence states the purpose and scope, the second specifies the output format. No unnecessary words.

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

Completeness4/5

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

Given the moderate complexity (generates a detailed report with a diagram) and lack of output schema, the description covers key aspects: what the report includes, the output format. It does not address error handling, limitations on VM count, or performance, but remains reasonably complete for typical usage.

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

Parameters3/5

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

Schema coverage is 100% with clear descriptions for both parameters. The description adds context about the report's content (e.g., compute, disks, NICs), which helps understand the output but does not elaborate on parameter constraints or usage beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool generates a detailed As-Built report for one or more VMs, covering configuration, compute, disks, NICs, categories, and host placement. This distinguishes it from sibling tools like generate_cluster_report or get_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 provides no guidance on when to use this tool versus alternatives such as get_vm or generate_cluster_report. It does not specify prerequisites, context, or exclusions.

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

get_categoryB

Get all values for a specific category key. Example: category 'Environment' may have values 'Production', 'Dev', 'Test'.

ParametersJSON Schema
NameRequiredDescriptionDefault
category_uuidYesThe UUID (extId) of the category

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided. Description implies a read operation but does not explicitly state safe, idempotent behavior. Lacks details on side effects, permissions, or output limits.

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

Conciseness5/5

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

Two concise sentences with an example. No wasted words, front-loaded primary action.

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

Completeness2/5

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

Simple tool, but description lacks details on output format (list of strings/objects) and when to use. No output schema, so description should specify return type.

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 has 100% coverage with description of category_uuid. Description adds an example but does not significantly enhance understanding beyond schema. Baseline 3 is appropriate.

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

Purpose5/5

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

Clearly states action: 'Get all values for a specific category key.' Distinct from sibling tools which focus on VMs, clusters, hosts, etc. Example with 'Environment' adds clarity.

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

Usage Guidelines2/5

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

No guidance on when to use this over sibling tools like list_categories. The example is helpful but does not specify context or prerequisites.

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

get_clusterA

Get detailed information about a specific cluster by UUID. Returns configuration, network, storage, and health details.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_uuidYesThe UUID (extId) of the cluster

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 describes what is returned but does not disclose that this is a read-only operation, any authentication requirements, rate limits, or potential side effects. The lack of such information reduces transparency.

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

Conciseness5/5

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

The description is a single sentence that efficiently conveys the purpose and key details. No unnecessary words, and the core action is 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?

For a simple get tool with one parameter and no output schema, the description covers the essential purpose and return categories. However, it lacks information about potential error cases, response format, or pagination (if applicable). It is adequate but not comprehensive.

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

Parameters3/5

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

Schema description coverage is 100% for the single parameter, so the baseline is 3. The description adds the context 'by UUID' but the schema already describes the parameter as 'The UUID (extId) of the cluster'. No additional semantic value is provided beyond the schema.

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

Purpose5/5

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

The description clearly states the action ('Get detailed information'), the resource ('cluster'), and the scope ('by UUID'). It also lists the categories of details returned (configuration, network, storage, health). This distinguishes it from sibling tools like list_clusters (which returns summaries) and other get_* tools.

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

Usage Guidelines3/5

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

The description implies usage when you have a specific cluster UUID and need detailed info, but it does not explicitly state when to use this tool vs alternatives (e.g., list_clusters for listing all clusters, or pe_get_cluster_info for Prism Element). No exclusions or prerequisites are mentioned.

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

get_hostA

Get detailed information about a specific host by UUID. Returns hardware specs, hypervisor info, and resource usage.

ParametersJSON Schema
NameRequiredDescriptionDefault
host_uuidYesThe UUID (extId) of the host

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 must bear full burden. It clearly states that the tool returns detailed information without modifying state, which is sufficient for a read operation. It could mention that there are no side effects, but 'get' already implies idempotency.

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

Conciseness5/5

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

The description is a single, well-structured sentence that conveys all necessary information without any waste or redundancy.

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

Completeness5/5

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

For a simple get tool with one parameter, the description is complete. It mentions what data is returned, which is sufficient even without an output schema. The context is fully addressed.

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

Parameters3/5

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

Schema coverage is 100%, and the description adds minimal extra meaning beyond the parameter description. The main description mentions 'by UUID', but the schema already captures that. No additional semantics are needed.

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 'Get', the resource 'host', and the specific identifier 'by UUID'. It also lists what is returned (hardware specs, hypervisor info, resource usage), distinguishing it from sibling tools like list_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?

The description implicitly indicates when to use this tool (when you have a UUID) and not to use it for listing (use list_hosts instead). However, it lacks explicit exclusions or alternatives, so it misses the top score.

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

get_imageA

Get detailed information about a specific disk image by UUID. Returns size, type, source, and cluster placement.

ParametersJSON Schema
NameRequiredDescriptionDefault
image_uuidYesThe UUID (extId) of the image

TDQS

A3.8/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It states return fields but does not disclose read-only nature, authentication, or error behavior. Adequate but not thorough.

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

Conciseness5/5

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

Single sentence, front-loaded with action, no wasted words. Perfectly concise for the tool's simplicity.

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 get operation with one parameter and no output schema, the description adequately covers purpose, input, and return fields. Minor gap: no mention of error handling, but acceptable.

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 already describes 'image_uuid' as 'The UUID (extId) of the image'. The description adds 'By UUID' and return fields, but with 100% schema coverage, the description adds minimal extra 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 uses specific verb ('Get') and resource ('detailed information about a specific disk image by UUID'), clearly differentiating from sibling tools like 'list_images' or other 'get_*' tools.

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

Usage Guidelines3/5

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

The description implies use when needing details for a known UUID, contrasting with listing all images, but provides no explicit when-to-use or when-not-to-use guidance and no alternatives mentioned.

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

get_subnetA

Get detailed subnet configuration including IP pools, DHCP config, and virtual switch assignment.

ParametersJSON Schema
NameRequiredDescriptionDefault
subnet_uuidYesThe UUID (extId) of the subnet

TDQS

A3.6/5.0
Behavior3/5

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

No annotations provided. Description implies a read operation but does not disclose any behavioral traits (e.g., non-destructive, required permissions). Adequate for a simple getter but could be more explicit.

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

Conciseness5/5

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

Single sentence, front-loaded with purpose, concise and to the point.

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 getter with one parameter and no output schema, the description adequately explains what is retrieved. Lacks mention of related tools or error conditions, but sufficient for basic use.

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 provides full coverage for the single parameter. Description adds no extra semantics to the parameter beyond what the schema already offers.

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 'Get detailed subnet configuration' and lists specific components (IP pools, DHCP config, virtual switch assignment). It distinguishes itself from sibling tools like get_vm or list_subnets.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like list_subnets (which likely returns all subnets). No when-not or context provided.

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

get_vmA

Get detailed information about a specific VM by its UUID. Returns full configuration including CPU, memory, disks, and NICs.

ParametersJSON Schema
NameRequiredDescriptionDefault
vm_uuidYesThe UUID (extId) of the virtual machine

TDQS

A3.6/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 disclose behavioral traits. It implies a read operation but does not explicitly state it is non-destructive, safe, or what permissions are needed. It fails to fully cover behavioral transparency.

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

Conciseness5/5

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

The description is a single, well-constructed sentence with no wasted words. It is appropriately sized and front-loaded with the verb and resource.

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

Completeness4/5

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

Given no output schema, the description explains return values (CPU, memory, disks, NICs) adequately. It covers the main components but could be more explicit about the format or structure. For a low-complexity tool, it is complete enough.

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

Parameters3/5

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

Schema coverage is 100%, and the schema description for vm_uuid is sufficient. The tool description adds no extra meaning beyond stating it's by UUID, which is already clear. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action (Get), the resource (specific VM by UUID), and what is returned (full configuration including CPU, memory, disks, NICs). It distinguishes from siblings like list_vms (listing) and create_vm (creation).

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

Usage Guidelines3/5

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

The description implies usage by providing the required UUID but does not explicitly state when to use this tool versus alternatives like list_vms. It lacks explicit when-not or alternative recommendations, though the context is clear for a simple get operation.

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

list_categoriesA

List category keys and their values used for resource tagging. Categories enable policy-based management (Flow, DR, etc.).

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNoOData filter expression. Example: "key eq 'Environment'"
limitNoMaximum number of categories to return. Omit to retrieve all (auto-paginates).

TDQS

A3.8/5.0
Behavior3/5

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

No annotations exist, so the description carries the burden. It mentions listing keys and values and policy context but omits behavioral details like pagination, performance, or that it is a read-only operation. The auto-pagination hint in the schema is not reiterated.

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

Conciseness5/5

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

Two concise sentences: the first states the primary function, the second adds context. No wasted words, and the most critical information is front-loaded.

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

Completeness4/5

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

Given no output schema, no annotations, and two simple parameters, the description is mostly complete. It could hint at the return format (list of key-value pairs) but is sufficient for a basic list operation. The context about policy management adds useful background.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description does not add new meaning beyond the schema; it only clarifies the overall result (keys and values) but does not elaborate on how parameters affect output or provide examples beyond the schema's OData filter example.

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

Purpose5/5

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

The description clearly states the tool lists category keys and values used for resource tagging, and explains their role in policy-based management. It distinguishes well from siblings like get_category (singular retrieval) and other list_ tools that deal with 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 Guidelines3/5

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

The description provides no explicit guidance on when to use this tool versus alternatives like get_category. While the purpose is clear, an explicit usage note (e.g., 'Use for overview of all categories; use get_category for a specific one') would improve the score.

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

list_clustersA

List all Nutanix clusters registered with Prism Central. Returns cluster names, UUIDs, versions, and health status.

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNoOData filter expression. Example: "name eq 'prod-cluster'"

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description carries full burden. It discloses that the tool lists clusters and returns specific fields, but does not mention pagination, required permissions, rate limits, or any side effects. For a read-only list operation, this is adequate but not thorough.

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

Conciseness5/5

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

The description is two sentences, front-loading the action and resource, then listing return fields. Every sentence is informative, with no redundancy or filler.

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 (1 optional param, no output schema), the description covers purpose and return fields. However, it omits details like pagination or sorting, which would help with large result sets.

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

Parameters3/5

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

The schema has 100% coverage with a single optional 'filter' parameter documented via example. The description adds no additional meaning beyond the schema, maintaining the baseline score of 3.

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

Purpose5/5

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

The description clearly states the verb 'List', the resource 'Nutanix clusters', and the scope 'registered with Prism Central'. It also specifies the returned fields (names, UUIDs, versions, health status), differentiating it from sibling tools like 'get_cluster'.

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 using this tool to list all clusters, but does not explicitly state when to use it versus alternatives like 'get_cluster' for a single cluster or filtered queries. No exclusions or alternative guidance is provided.

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

list_hostsA

List hypervisor hosts across clusters. Returns host names, IPs, resource capacity, and health. Optionally filter by cluster.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_uuidNoFilter hosts to a specific cluster UUID
filterNoOData filter expression
limitNoMaximum number of hosts to return. Omit to retrieve all (auto-paginates).

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It implies a read operation by stating 'List...Returns', but does not explicitly disclose safety, idempotency, authentication needs, or side effects. The schema's limit parameter hints at auto-pagination, but that is not in the description.

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

Conciseness5/5

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

The description is two sentences with zero waste. It front-loads the action and resource, then offers optional usage, making it efficient and easy to scan.

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

Completeness4/5

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

Given the complexity of a list tool with no output schema, the description adequately covers the return fields (names, IPs, capacity, health) and optional filtering. It is almost complete, but could mention pagination behavior or default ordering.

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

Parameters3/5

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

Schema coverage is 100%, so parameters are documented in the schema. The description adds only 'Optionally filter by cluster', which reinforces cluster_uuid but does not add format or behavior details beyond the schema.

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

Purpose5/5

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

The description clearly states the verb (list), resource (hypervisor hosts), scope (across clusters), and the specific return fields (names, IPs, capacity, health). It distinguishes from sibling get_host which retrieves a single host.

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 optional filtering by cluster, providing some context. However, it does not specify when to use this tool over alternatives like pe_list_hosts or list_clusters, and lacks when-not guidance.

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

list_imagesA

List disk images (ISOs, QCOW2) available in the image library. Returns image names, types, sizes, and source URIs.

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNoOData filter expression. Examples: "name eq 'ubuntu-22.04'", "type eq 'DISK_IMAGE'"
limitNoMaximum number of images to return. Omit to retrieve all (auto-paginates).

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description bears full burden. It correctly states the read operation and return fields. However, it does not cover potential rate limits, auth needs, or pagination behavior beyond the schema's limit parameter, leaving some 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?

Two sentences, front-loaded with action and resource, 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?

Given 100% schema coverage, no output schema, and simple read operation, the description is mostly complete. It could mention pagination explicitly, but the schema covers limit. Adequate for a straightforward list tool.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description adds no extra meaning to the filter or limit parameters beyond what the schema already provides.

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 resource 'disk images (ISOs, QCOW2) available in the image library', distinguishing it from siblings like get_image or list_vms. It also specifies return fields: image names, types, sizes, and source URIs.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus siblings like get_image (single image) or other list tools. No when-not-to-use or alternatives mentioned.

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

list_storage_containersA

List storage containers available across clusters. Returns names, capacity, usage, and associated cluster.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_uuidNoFilter to a specific cluster UUID
limitNoMaximum number of results. Omit to retrieve all (auto-paginates).

TDQS

A3.8/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 discloses the return fields and mentions auto-pagination via the limit parameter, but does not address side effects, authentication requirements, rate limits, or any other behavioral traits beyond the basic read 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: two sentences front-load the purpose and return fields. There is no redundant information, and 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?

Given there is no output schema, the description adequately lists return fields. It mentions filtering and auto-pagination. However, it could be more complete by specifying any default sort order, error scenarios, or behavior when no containers are found.

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

Parameters3/5

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

Schema coverage is 100%, so the description adds minimal additional meaning. The schema already describes cluster_uuid filtering and limit with auto-pagination. The description neither contradicts nor significantly extends the schema definitions.

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 (list storage containers), scope (across clusters), and what is returned (names, capacity, usage, associated cluster). It distinguishes itself from sibling list tools by specifying the resource type and return fields.

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 when to use it (when you need storage containers), but does not explicitly state when not to use it or provide alternatives. For example, pe_list_containers is a sibling tool that might serve a similar purpose, but no differentiation is given.

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

list_subnetsB

List subnets/VLANs configured in Prism Central. Returns subnet names, VLAN IDs, CIDRs, IP pools, and associated clusters.

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNoOData filter expression. Examples: "name eq 'production-vlan'", "vlanId eq 100"
limitNoMaximum number of subnets to return. Omit to retrieve all (auto-paginates).

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided; description only states return values but omits behavioral details such as pagination, auth requirements, or rate limits.

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

Conciseness5/5

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

Single sentence efficiently conveys purpose and output, with no redundant text.

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

Completeness4/5

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

Lists return fields adequately for a read-only operation, but lacks mention of error conditions or performance characteristics.

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

Parameters3/5

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

Input schema already has 100% description coverage for both parameters, so description adds marginal value beyond stating return fields.

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 the tool lists subnets/VLANs in Prism Central and enumerates return fields, distinguishing it from sibling tools like get_subnet.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives, or when to apply filter vs no filter.

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

list_vmsA

List virtual machines on Nutanix. Returns VM names, UUIDs, power states, and resource allocation. Supports OData filtering.

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNoOData filter expression. Examples: "name eq 'my-vm'", "powerState eq 'ON'"
limitNoMaximum number of VMs to return. Omit to retrieve all (auto-paginates).

TDQS

A4.4/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 that the tool returns specific VM attributes, supports OData filtering, and auto-paginates when limit is omitted. It does not mention authentication or performance implications, but is informative enough for safe usage.

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?

Three efficient sentences: purpose, returned data, filtering capability. No fluff, each sentence earns its place. Well-structured for quick reading.

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 list tool with no output schema, the description adequately lists return fields. It covers both parameters' behaviors (filter, limit) and mentions auto-pagination. While it could detail output format more, it is sufficient for an agent to invoke correctly.

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

Parameters4/5

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

Schema coverage is 100%, baseline 3. The description adds value by explaining the 'limit' parameter's default behavior ('Omit to retrieve all') and giving OData filter examples, enhancing the schema's descriptions.

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

Purpose5/5

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

The description clearly states the tool's action ('List virtual machines on Nutanix') and specifies return fields (VM names, UUIDs, power states, resource allocation). It distinguishes itself from sibling tools like create_vm or get_vm by focusing on listing multiple VMs with optional filtering.

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 mentions OData filtering support with examples, but does not explicitly state when to use this tool versus alternatives like get_vm for a single VM or pe_list_vms for a different endpoint. However, it provides clear context on OData usage and limit behavior.

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

pe_get_cluster_infoA

Get cluster info directly from a Prism Element node. Returns AOS version, cluster name, storage capacity, and health.

ParametersJSON Schema
NameRequiredDescriptionDefault
pe_hostYesPrism Element CVM IP address or hostname

TDQS

A3.6/5.0
Behavior2/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 only lists return fields but does not disclose whether the operation is read-only, requires authentication, has side effects, or any constraints. The behavioral impact is unclear.

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

Conciseness5/5

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

The description is a single, compact sentence with no fluff. It front-loads the action and then lists outputs, making it easy to scan.

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 one parameter and no output schema, the description provides expected return fields. However, it lacks details on data types or structure of returned values. It is mostly complete given low complexity.

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

Parameters3/5

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

Schema coverage is 100% with a clear parameter description ('Prism Element CVM IP address or hostname'). The tool description adds no extra context beyond the schema, so baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool gets cluster info from a Prism Element node and enumerates specific return fields (AOS version, cluster name, storage capacity, health). It distinguishes from sibling tools like 'get_cluster' by specifying 'directly from a Prism Element node'.

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

Usage Guidelines3/5

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

The description implies usage for direct PE node access but does not explicitly state when to use it vs siblings (e.g., 'get_cluster' for Prism Central). No prerequisites or context for when not to use are provided.

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

pe_list_alertsB

List alerts on a Prism Element cluster. Returns alert titles, severity, timestamps, and affected entities.

ParametersJSON Schema
NameRequiredDescriptionDefault
pe_hostYesPrism Element CVM IP address or hostname
resolvedNoInclude resolved alerts (default: false, only active)
countNoMaximum number of alerts to return (default: 50)

TDQS

B3.4/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 carry the full burden. It fails to disclose behavioral traits such as read-only nature, authentication needs, or side effects. It only states what is returned.

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 succinct sentences, front-loaded with the main purpose, no redundant or filler content.

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?

Adequate for a simple list tool with 3 parameters and no output schema. It lists return fields but could mention default behavior of 'resolved' or pagination via 'count'.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description adds minimal context (Prism Element cluster) but doesn't provide additional meaning beyond the schema's parameter descriptions.

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

Purpose5/5

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

The description clearly states the action (list), the resource (alerts on a Prism Element cluster), and the return value (titles, severity, timestamps, affected entities). It distinguishes from sibling tools like pe_list_vms or list_hosts.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives, no prerequisites or context for selection. For example, it doesn't clarify when to prefer pe_list_alerts over generate_environment_report.

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

pe_list_containersB

List storage containers on a Prism Element cluster. Returns names, capacity, usage, replication factor, and policies.

ParametersJSON Schema
NameRequiredDescriptionDefault
pe_hostYesPrism Element CVM IP address or hostname

TDQS

B3.2/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 carry the behavioral transparency burden. It does not disclose whether the operation is read-only, any authentication requirements, or potential side effects. The name suggests listing, but this is not explicitly stated.

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

Conciseness5/5

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

The description is a single, well-structured sentence that is concise yet informative. There is no unnecessary information, and it is easy to read.

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 of the tool (one parameter, no output schema), the description adequately covers the return values. It could mention pagination or result limits, but overall it is fairly complete for a list tool.

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

Parameters3/5

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

The input schema has 100% description coverage, so the schema already documents the 'pe_host' parameter. The description does not add meaning beyond what the schema provides, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the action 'List', the resource 'storage containers', and the context 'on a Prism Element cluster'. It also lists the return fields. However, it does not explicitly differentiate from sibling tools like 'list_storage_containers', so it loses a point.

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?

There is no guidance on when to use this tool versus alternatives, such as 'list_storage_containers' or other listing tools. No usage context or exclusions are provided.

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

pe_list_disksA

List physical disks on a Prism Element cluster. Returns disk type (SSD/HDD), status, capacity, and location.

ParametersJSON Schema
NameRequiredDescriptionDefault
pe_hostYesPrism Element CVM IP address or hostname

TDQS

A4/5.0
Behavior4/5

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

The description discloses the return fields (disk type, status, capacity, location) beyond just 'list', which is helpful. With no annotations, it provides behavioral insight. However, it does not mention whether the operation is read-only or any potential 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.

Conciseness5/5

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

Two sentences, front-loaded with the action, then enumerating return fields. No redundant words, highly efficient.

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

Completeness4/5

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

The description covers the purpose and key return fields. Although there is no output schema, the listed fields (type, status, capacity, location) provide a good overview. Could mention additional details like disk IDs or usage, but it's adequate.

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

Parameters3/5

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

The single parameter 'pe_host' is fully described in the schema (100% coverage). The tool description adds no additional semantics beyond 'on a Prism Element cluster', which matches the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states it lists physical disks on a Prism Element cluster, specifying the resource (disks) and scope (cluster). Among sibling tools like pe_list_hosts and pe_list_containers, this distinguishes itself by targeting disks.

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

Usage Guidelines3/5

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

No explicit guidance on when to use or when not to use this tool, nor mentions of prerequisites or alternatives. The context signals (sibling tools) imply it is for disk listing, but explicit usage guidelines are missing.

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

pe_list_hostsA

List hypervisor hosts on a Prism Element cluster. Returns host names, IPs, hardware specs, and CVM info.

ParametersJSON Schema
NameRequiredDescriptionDefault
pe_hostYesPrism Element CVM IP address or hostname

TDQS

A3.8/5.0
Behavior3/5

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

No annotations provided, so description carries burden. It states the tool lists hosts and returns specific fields, implying a read-only operation. However, it does not disclose any behavioral traits like permissions required, rate limits, or potential complexity of the returned data.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose, no wasted words. Efficiently conveys the tool's action and output scope.

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

Completeness4/5

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

Given the tool's simplicity (one parameter, list operation), the description adequately covers purpose and output fields. Could mention potential limits like pagination or data size, but overall complete for its complexity.

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

Parameters3/5

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

Schema coverage is 100% with one parameter 'pe_host' described as 'Prism Element CVM IP address or hostname'. Description does not add additional semantic meaning beyond the schema, so baseline 3 applies.

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

Purpose5/5

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

Description clearly states verb 'List' and resource 'hypervisor hosts on a Prism Element cluster'. It specifies return fields (host names, IPs, hardware specs, CVM info), distinguishing it from sibling tool 'list_hosts' which likely targets Prism Central.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool vs. alternatives like 'list_hosts'. Context implies it is for Prism Element only, but does not state when not to use it or mention any prerequisites.

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

pe_list_protection_domainsC

List protection domains on a Prism Element cluster. Returns PD names, protected entities, schedules, and replication state.

ParametersJSON Schema
NameRequiredDescriptionDefault
pe_hostYesPrism Element CVM IP address or hostname

TDQS

C2.9/5.0
Behavior2/5

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

Without annotations, the description must disclose behavioral traits. It does not mention side effects, permissions, or read-only nature. The description is insufficient for transparency.

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 one sentence that conveys purpose and output. No unnecessary words.

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

Completeness3/5

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

For a simple list tool with one parameter, the description is adequate but lacks behavioral context and usage guidance, leaving gaps.

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

Parameters3/5

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

Schema coverage is 100%, and the parameter description is adequate. The tool description adds no extra semantics beyond the schema, staying at baseline.

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 what the tool does—'List protection domains on a Prism Element cluster'—and specifies the returned data. However, it does not explicitly differentiate from sibling tools, though no direct sibling for protection domains exists.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives or any prerequisites. The description only states the action without context for appropriate usage.

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

pe_list_snapshotsA

List snapshots for a protection domain on a Prism Element cluster.

ParametersJSON Schema
NameRequiredDescriptionDefault
pe_hostYesPrism Element CVM IP address or hostname
protection_domainYesName of the protection domain

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 carries the full burden. It does not disclose behavioral traits such as read-only nature, pagination, limits, or required permissions. The word 'list' implies read-only, but that's insufficient without additional context.

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

Conciseness5/5

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

The description is a single, clear sentence with no wasted words. It is efficient and front-loaded with the key action and resource.

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

Completeness3/5

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

For a simple list tool with two parameters and no output schema, the description is minimally adequate. However, it does not explain the return format, dependencies (e.g., need a protection domain name from another tool), or any usage context beyond the literal action.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description adds no additional meaning beyond what is in the parameter descriptions. It merely restates the purpose at a high level.

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 (list) and the resource (snapshots) with specific context (protection domain, Prism Element cluster). It distinguishes from sibling tools like pe_list_protection_domains by specifying snapshots.

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 you need snapshots for a specific protection domain, but it provides no guidance on when to use this tool versus alternatives (e.g., first listing protection domains). No exclusions or contextual cues are given.

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

pe_list_storage_poolsA

List storage pools on a Prism Element cluster. Returns pool names, capacity, and disk composition.

ParametersJSON Schema
NameRequiredDescriptionDefault
pe_hostYesPrism Element CVM IP address or hostname

TDQS

A4/5.0
Behavior4/5

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

No annotations; description adds context beyond schema by listing return data. Does not disclose pagination or error behaviors, but for a simple list 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?

Two concise sentences, no wasted words. Front-loaded with purpose and return 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?

Adequate for a simple list tool with one parameter. Missing potential error context, but sufficiently covers purpose and output.

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

Parameters3/5

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

Schema coverage is 100% (one param with description). Description does not add additional meaning to the parameter beyond the schema, so baseline 3 applies.

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

Purpose5/5

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

Clear verb 'list', specific resource 'storage pools', and states returned fields (names, capacity, disk composition). Distinguished from sibling 'list_storage_containers'.

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

Usage Guidelines3/5

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

No explicit when-to-use or alternatives. Implied usage from name and description, but lacks guidance compared to other list tools.

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

pe_list_vmsA

List VMs on a specific Prism Element cluster. Returns VM names, UUIDs, power states, and resource allocation.

ParametersJSON Schema
NameRequiredDescriptionDefault
pe_hostYesPrism Element CVM IP address or hostname
countNoMaximum number of VMs to return

TDQS

A4.2/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. It explicitly states return values (names, UUIDs, power states, resource allocation) and implies read-only operation. Could add authentication details but sufficient for typical list 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?

Two concise sentences, each providing essential information: purpose and return fields. No unnecessary words.

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

Completeness4/5

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

Given the simple nature of the tool with 2 parameters and no output schema, the description covers purpose, scope, and return fields. Could mention pagination or error handling but overall adequate.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for pe_host and count. Description does not add additional meaning beyond what schema provides. Baseline 3 is appropriate.

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

Purpose5/5

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

Clearly states verb 'List', resource 'VMs', and scope 'on a specific Prism Element cluster', distinguishing from general list_vms sibling. Also specifies returned fields.

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?

Description implies usage for specific Prism Element clusters, which differentiates from related tools. No explicit when-not or alternatives, but context is clear.

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

power_off_vmA

Power off a virtual machine. Uses ACPI shutdown by default (guest-initiated).

ParametersJSON Schema
NameRequiredDescriptionDefault
vm_uuidYesThe UUID (extId) of the virtual machine
forceNoForce power off (hard shutdown) instead of ACPI guest shutdown

TDQS

A3.8/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. Discloses default ACPI shutdown and force option. However, does not describe behavior if VM is already off, whether call is async/sync, or any side effects beyond the action.

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

Conciseness5/5

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

Two short sentences, front-loaded with purpose, no extraneous words. Highly efficient and 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?

For a simple tool with 2 params and no output schema, the description covers the core action and default behavior. Missing edge cases (e.g., VM off state) but overall sufficient given tool simplicity.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. Description reinforces meaning of force param by stating default ACPI shutdown, but adds no new semantic beyond schema definitions.

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 powers off a VM, with specific verb and resource. Distinguishes from sibling 'power_on_vm' by opposite action. Also mentions default shutdown method, adding precision.

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?

Only describes what the tool does, not when to use or when to avoid. No explicit context for alternative tools (e.g., when to use force vs default, or prerequisites like VM state). Minimal guidance.

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

power_on_vmB

Power on a virtual machine.

ParametersJSON Schema
NameRequiredDescriptionDefault
vm_uuidYesThe UUID (extId) of the virtual machine

TDQS

B3.2/5.0
Behavior2/5

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

Without annotations, the description fails to disclose important behavioral traits such as whether the operation is synchronous, idempotent, or fails if VM is already on. This lack of transparency may lead to incorrect agent decisions.

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

Conciseness4/5

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

The description is a single sentence, front-loaded with the action and resource. It is efficient but could benefit from a bit more context without being verbose.

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 tool's simplicity (one parameter, no output schema), the description covers the basics. However, missing behavioral context like state dependencies and error conditions makes it less complete.

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

Parameters3/5

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

Schema description coverage is 100% for the single parameter vm_uuid, so the description adds no additional meaning beyond what the schema already provides. Baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action 'power on' on a specific resource 'virtual machine'. It is easily distinguishable from sibling tools like power_off_vm and create_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?

No guidance on when to use this tool, prerequisites (e.g., VM must be powered off), or alternatives. The description assumes agents know the context, leaving ambiguity.

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

Tool Schema Changelog

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

  1. 28 tool updatesv0.1.0
    • First observedcreate_vm
    • First observedgenerate_cluster_report
    • First observedgenerate_environment_report
    • First observedgenerate_vm_report
    • First observedget_category
    • First observedget_cluster
    • First observedget_host
    • First observedget_image
    • First observedget_subnet
    • First observedget_vm
    • First observedlist_categories
    • First observedlist_clusters
    • First observedlist_hosts
    • First observedlist_images
    • First observedlist_storage_containers
    • First observedlist_subnets
    • First observedlist_vms
    • First observedpe_get_cluster_info
    • First observedpe_list_alerts
    • First observedpe_list_containers
    • First observedpe_list_disks
    • First observedpe_list_hosts
    • First observedpe_list_protection_domains
    • First observedpe_list_snapshots
    • First observedpe_list_storage_pools
    • First observedpe_list_vms
    • First observedpower_off_vm
    • First observedpower_on_vm

TDQS

B3.4/5.0

Scored across 28 tools

Disambiguation4/5

Most tools target distinct resources or actions. However, list_vms and pe_list_vms both list VMs but from different scopes (Prism Central vs Prism Element), which could cause confusion if descriptions are not read carefully. Similarly, get_cluster and pe_get_cluster_info overlap, but descriptions clarify the source difference.

Naming Consistency3/5

The naming convention is mixed: some tools use verb_noun (create_vm, list_vms), some use generate_*_report, and there's a pe_ prefix for Prism Element tools. While each sub-pattern is consistent internally, the overall set lacks a uniform style, with verbs like 'power_on' and 'generate' alongside 'get' and 'list'.

Tool Count4/5

28 tools is somewhat high for an MCP server, but given the complexity of Nutanix infrastructure covering clusters, VMs, storage, networking, and both Prism Central and Element APIs, the number is justifiable. It feels slightly heavy but not excessive.

Completeness3/5

The tool set covers many core Nutanix operations (CRUD for VMs, listing resources, generating reports) but has notable gaps: no update or delete for VMs, no VM migration, no backup/restore, and limited network configuration beyond listing subnets. This leaves agents with dead ends for common tasks.

Maintenance

ActivityStale
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    MCP server for Nutanix Prism Central v4 REST API, enabling AI agents to list and inspect VMs, control VM power state, list clusters, read alerts, and list subnets.
    8
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables querying Nutanix infrastructure (VMs, hosts, storage, alerts, etc.) using natural language through GitHub Copilot. Supports Prism Element, Prism Central, and Nutanix Move with secure credential storage.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to manage Proxmox VE infrastructure, including VMs, containers, storage, and cluster operations via natural language.
    MIT