Skip to main content
Glama

VMware Aria Operations MCP Skill

Note: In VCF 9.0 and later, VMware Aria Operations has been rebranded as VCF Operations. This skill works against both names — the /suite-api/ REST endpoints are unchanged.

Author: Wei Zhou, VMware by Broadcom — wei-wz.zhou@broadcom.com This is a community-driven project by a VMware engineer, not an official VMware product. For official VMware developer tools see developer.broadcom.com.

AI-assisted monitoring and capacity planning for VMware Aria Operations (vRealize Operations) via the Model Context Protocol (MCP).

Python 3.10+ License: MIT

Overview

vmware-aria exposes 33 MCP tools for interacting with Aria Operations through natural language AI agents (Claude Code, Cursor, Goose, etc.):

Category

Tools

Type

Resources

list, get, metrics, health badge, top consumers

Read-only (5)

Alerts

list, get, investigate (alert→resource), acknowledge, cancel, definitions

Read + 2 Write (6)

Alert Definitions

symptom definitions, create, enable/disable, delete

Read + 3 Write (4)

Capacity

overview, remaining, time-remaining, rightsizing

Read-only (4)

Reports

definitions, generate, list, get, delete

Read + 2 Write (5)

Anomaly

list anomalies, risk badge

Read-only (2)

Health

platform health, collector groups

Read-only (2)

Total: 28 tools — 21 read-only, 7 write

Related MCP server: vmware-vks

Quick Start

# Install
uv tool install vmware-aria

# Configure
mkdir -p ~/.vmware-aria
cat > ~/.vmware-aria/config.yaml << 'EOF'
targets:
  prod:
    host: aria-ops.example.com
    username: admin
    port: 443
    verify_ssl: true
    auth_source: LOCAL
default_target: prod
EOF

# Set password (never in config.yaml)
echo "VMWARE_ARIA_PROD_PASSWORD=your_password" > ~/.vmware-aria/.env
chmod 600 ~/.vmware-aria/.env

# Verify setup
vmware-aria doctor

Offline / Air-Gapped Install (from source)

This project uses the modern PEP 517 build system (hatchling), so there is no setup.py by design — that is expected, not a missing file. If you cloned the source and hit ERROR: File "setup.py" or "setup.cfg" not found ... editable mode currently requires a setuptools-based build, your pip is older than 21.3 and cannot do an editable (-e) install with a non-setuptools backend. Editable mode is a developer convenience, not needed to run the tool — do one of:

# From the source tree — a normal (non-editable) install builds a wheel:
pip install .              # NOT  pip install -e .

# ...or upgrade pip first, and editable works too:
pip install --upgrade pip && pip install -e .

For a truly air-gapped host, build the wheels on a connected machine and copy them over — the target then needs no network:

# On a connected machine, collect this package + its dependencies as wheels:
pip wheel . -w dist        # → dist/*.whl   (or: uv build, for just this package)

# Copy dist/ to the air-gapped host, then install offline:
pip install --no-index --find-links dist vmware-aria

CLI Examples

# List top CPU consumers
vmware-aria resource top --metric cpu|usage_average --top 10

# Check active CRITICAL alerts
vmware-aria alert list --criticality CRITICAL

# Acknowledge an alert
vmware-aria alert acknowledge <alert-id>

# Fetch 4-hour CPU + memory metrics for a VM
vmware-aria resource metrics <vm-id> --metrics cpu|usage_average,mem|usage_average --hours 4

# Check cluster capacity
vmware-aria capacity remaining <cluster-id>
vmware-aria capacity time-remaining <cluster-id>

# Find rightsizing opportunities
vmware-aria capacity rightsizing

# Check Aria platform health
vmware-aria health status
vmware-aria health collectors

MCP Setup (Claude Code)

After uv tool install vmware-aria, add to ~/.claude.json:

{
  "mcpServers": {
    "vmware-aria": {
      "command": "vmware-aria",
      "args": ["mcp"],
      "env": {
        "VMWARE_ARIA_CONFIG": "~/.vmware-aria/config.yaml"
      }
    }
  }
}

v1.5.15+ uses the single-command form vmware-aria mcp. The legacy vmware-aria-mcp console script is still kept for backward compatibility. If you must use uvx --from vmware-aria vmware-aria mcp (no install) and hit invalid peer certificate: UnknownIssuer behind a corporate TLS proxy, set UV_NATIVE_TLS=true or use the recommended vmware-aria mcp form above.

Then use natural language:

  • "Show me the top 10 CPU consumers right now"

  • "List all CRITICAL alerts and acknowledge them"

  • "How long until the prod cluster runs out of memory?"

  • "Which VMs are over-provisioned? Show rightsizing recommendations"

  • "Are there any anomalies on vm-web-01?"

Authentication

Aria Operations uses vRealizeOpsToken authentication:

POST /suite-api/api/auth/token/acquire
{"username": "admin", "password": "...", "authSource": "LOCAL"}
→ {"token": "abc123", "validity": 1765182896000}  # validity = expiry epoch ms

Subsequent requests: Authorization: vRealizeOpsToken abc123

Tokens have a 6-hour sliding validity (extended on each call, per the official spec); the client re-acquires automatically 60 seconds before expiry. The validity field is the expiry timestamp in epoch milliseconds, not a duration.

Architecture

User (natural language)
  ↓
AI Agent (Claude Code / Goose / Cursor)
  ↓  [reads SKILL.md]
vmware-aria MCP server (stdio transport)
  ↓  [HTTPS + vRealizeOpsToken]
Aria Operations Suite API
  ↓
VMs / Hosts / Clusters / Alerts / Capacity

Companion Skills

Skill

Scope

Tools

Install

vmware-aiops ⭐ entry point

VM lifecycle, deployment, guest ops, clusters

49

uv tool install vmware-aiops

vmware-monitor

Read-only monitoring, alarms, events, VM info

27

uv tool install vmware-monitor

vmware-nsx

NSX networking: segments, gateways, NAT, IPAM

33

uv tool install vmware-nsx-mgmt

vmware-nsx-security

DFW microsegmentation, security groups, Traceflow

21

uv tool install vmware-nsx-security

vmware-avi

AVI / NSX ALB load balancing, AKO K8s operations

28

uv tool install vmware-avi

vmware-storage

Datastores, iSCSI, vSAN

11

uv tool install vmware-storage

vmware-vks

Tanzu Namespaces, TKC cluster lifecycle

20

uv tool install vmware-vks

vmware-harden

Compliance baselines, drift detection

6

uv tool install vmware-harden

Security

  • Passwords loaded from env vars or .env file, never from config.yaml

  • Write operations (alert acknowledge/cancel, alert definition management, report generate/delete) audit-logged to ~/.vmware/audit.db (MCP, via vmware-policy) and ~/.vmware-aria/audit.log (CLI)

  • API responses sanitized (control chars stripped, 500-char limit) to prevent prompt injection

  • Supports self-signed certificates (verify_ssl: false) for lab environments

Official Broadcom References

License

MIT — see LICENSE

Available Tools

33 tools
acknowledge_alertA
Idempotent

[WRITE] Acknowledge an active alert by taking ownership (does not cancel it).

The suite-api has no dedicated "acknowledge" action; this maps to POST /alerts?action=takeownership, assigning the alert to the API user (control state ASSIGNED). The alert remains active until cancelled. Use this when you want to own the alert without closing it; cancel_alert closes it for good. Default confirmed=False returns a preview without making any change.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoAria target name from config; default when omitted.
alert_idYesThe alert UUID to acknowledge.
confirmedNoMust be True to actually acknowledge. Default False = preview only.

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations by describing the underlying HTTP mapping, the resulting control state ASSIGNED, the persistence of the alert's active status, and the preview behavior when confirmed=False. This adds concrete behavioral context that the annotations alone do not provide.

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?

Every sentence carries useful information: core action and effect, technical endpoint mapping, usage guidance versus cancel_alert, and confirmed-flag behavior. It is front-loaded and has no 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?

The description fully explains the state transition, the endpoint, and the alternative, and it touches on the preview response. Since there is no output schema, a mention of the exact return structure would improve completeness, but the description is still adequate for correct invocation.

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 baseline is 3. The description reiterates the confirmed flag's preview behavior but does not add any parameter-specific details beyond what the schema already documents.

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

Purpose5/5

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

Description states a specific verb 'acknowledge' and resource 'active alert', immediately clarifying it means taking ownership and not cancelling. It also explicitly maps to POST /alerts?action=takeownership, which leaves no ambiguity about the operation.

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

Usage Guidelines5/5

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

Explicitly tells the agent when to use this tool ('Use this when you want to own the alert without closing it') and names cancel_alert as the alternative that closes the alert for good. It also explains the confirmed flag's role in previewing versus actually making the change.

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

cancel_alertA
Destructive

[WRITE] Cancel (dismiss) an active alert. This WRITE operation permanently closes the alert.

Use acknowledge_alert instead if you only want to mark it as seen. Cancelled alerts will not re-trigger unless the underlying condition recurs. Default confirmed=False returns a preview without making any change.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoAria target name from config; default when omitted.
alert_idYesThe alert UUID to cancel.
confirmedNoMust be True to actually cancel. Default False = preview only.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already mark this as destructive, but the description adds important context: cancellation is permanent, cancelled alerts will not re-trigger unless the underlying condition recurs, and confirmed=False only previews without making changes. This goes well beyond the structured annotation 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?

The description is compact, front-loaded with the core action, and every sentence earns its place: action, permanence, alternative, re-trigger behavior, and preview behavior. There is no filler 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 three-parameter destructive tool with full schema coverage, the description covers what the tool does, when to use an alternative, the permanence of the action, re-trigger semantics, and the preview mechanism. No critical operational detail is missing.

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 documents alert_id, target, and confirmed well. The description reinforces the confirmed preview behavior but does not add substantial new parameter-level meaning 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 uses a specific verb and resource ('Cancel (dismiss) an active alert') and clearly distinguishes itself from acknowledge_alert by noting the difference between dismissing and marking as seen. An agent can tell exactly what this tool does and how it differs from its closest sibling.

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

Usage Guidelines5/5

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

It explicitly tells the agent to use acknowledge_alert instead when only marking as seen, and explains when cancellation is appropriate. It also clarifies the confirmed parameter behavior, giving clear operational guidance for when to actually execute versus preview.

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

create_alert_definitionA

[WRITE] Create a new alert definition referencing existing symptom definitions.

Returns the new definition's id and name. Run list_symptom_definitions first for symptom_definition_ids; to silence an existing definition use set_alert_definition_state rather than creating a variant.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesAlert definition name (must be unique in Aria Operations).
targetNoAria target name from config; default when omitted.
criticalityNoAlert severity: INFORMATION, WARNING, IMMEDIATE, CRITICAL.WARNING
descriptionYesWhen and why this alert fires.
adapter_kindNoAdapter kind key. Default VMWARE (vSphere adapter).VMWARE
resource_kindYesVirtualMachine, HostSystem, ClusterComputeResource, or Datastore.
symptom_definition_idsYesSymptom definition UUIDs; any one firing triggers the alert (OR).

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already establish that this is a write operation, non-idempotent, and non-destructive. The description adds useful behavioral context by stating the return value ('Returns the new definition's id and name') and by requiring that symptom definitions already exist before calling.

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 tightly packed sentences with no filler. The main purpose is first, followed by return value, then prerequisite and alternative routing. Every sentence contributes to correct tool selection or invocation.

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 7-parameter create operation with no output schema, the description covers the essential missing context: what it creates, what it returns, what must be done beforehand, and which sibling to use instead. The remaining parameter details are fully covered by the schema.

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

Parameters4/5

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

Schema coverage is 100%, so all parameters are already described. The description adds practical value beyond the schema by telling the agent to call list_symptom_definitions first for symptom_definition_ids, which directly informs how to populate a required parameter.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Create a new alert definition referencing existing symptom definitions.' It clearly distinguishes this from the sibling set_alert_definition_state by explicitly warning not to create a variant just to silence an alert.

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

Usage Guidelines5/5

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

The description gives explicit when-to-use guidance: run list_symptom_definitions first to obtain valid symptom_definition_ids, and use set_alert_definition_state instead when the goal is to silence an existing definition. This is actionable and prevents misuse.

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

delete_alert_definitionA
Destructive

[WRITE] Permanently delete an alert definition. Irreversible.

This WRITE operation removes the alert definition from Aria Operations. Active alerts generated by this definition will not be affected. Use set_alert_definition_state(enabled=False) instead to silence a definition you may want back. Default confirmed=False returns a preview without making any change.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoAria target name from config; default when omitted.
confirmedNoMust be True to actually delete. Default False = preview only.
definition_idYesAlert definition UUID to delete.

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the annotations' destructiveHint=true and readOnlyHint=false, the description reveals important behavioral consequences: active alerts generated by the definition are not affected, and confirmed=False provides a preview without mutating state. This is exactly the kind of context annotations alone do not convey.

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

Conciseness5/5

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

Four short sentences, each carrying meaningful information: the irreversible action, the non-impact on active alerts, the safer alternative, and the preview default. No filler or repetition, and the destructive nature is front-loaded.

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 destructive tool with a confirmation parameter, the description is fully complete: it tells the agent what is deleted, why to prefer an alternative when uncertain, and how to preview before committing. With no output schema required, nothing essential is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents all three parameters. The description adds semantic value by explaining the confirmed=False preview behavior, which recontextualizes the confirmed parameter's role. target remains only schema-documented, but that is acceptable given its simple default behavior.

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

Purpose5/5

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

The description states a specific verb ('delete') and resource ('alert definition'), and immediately clarifies permanence: 'Permanently delete... Irreversible.' It also distinguishes itself from the sibling set_alert_definition_state by explicitly positioning that as the non-destructive alternative.

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

Usage Guidelines5/5

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

The description explicitly tells the agent when NOT to use this tool: use set_alert_definition_state(enabled=False) instead to silence a definition that may later be needed. It also explains the confirmation flow, making the intended usage pattern clear.

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

delete_reportA
Destructive

[WRITE] Permanently delete a generated report artifact from Aria Operations. Removes only the generated report instance and its output — the report definition and any schedules remain intact; re-run generate_report to recreate it. Deletion is irreversible and is recorded in the audit log. Returns an error if the report_id does not exist; use list_reports to find valid UUIDs first. Default confirmed=False returns a preview without deleting.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoAria target name from config; default when omitted.
confirmedNoMust be True to actually delete. Default False = preview only.
report_idYesThe report UUID to delete (from generate_report or list_reports).

TDQS

A4.7/5.0
Behavior5/5

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

The description goes well beyond the annotations by disclosing that deletion is irreversible, is recorded in the audit log, returns an error for invalid report_id, and defaults to a non-destructive preview unless confirmed=True. It also clarifies exactly what is and is not removed, which is critical for a destructive operation.

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

Conciseness5/5

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

The description is dense but every sentence adds essential information: what is deleted, what survives, irreversibility, audit logging, error behavior, and the preview default. The [WRITE] prefix and front-loaded main action make it easy to scan.

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 destructive, non-idempotent tool with no output schema, the description covers the critical operational context: preconditions (list_reports), consequences (permanent deletion, audit log), and safety mechanism (confirmed flag). An agent has enough information to invoke it correctly and understand the side effects.

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 already describes all three parameters with full coverage, including the confirmed flag and report_id semantics. The description reinforces these details (e.g., confirmed=False means preview, report_id must be a valid UUID) but does not add substantial new parameter-level meaning beyond the schema.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Permanently delete a generated report artifact from Aria Operations.' It distinguishes the report instance from the report definition and schedules, which differentiates this from sibling tools like delete_alert_definition and get_report.

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

Usage Guidelines5/5

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

The description provides explicit guidance: use list_reports to find valid UUIDs first, use generate_report to recreate the artifact, and note that confirmed=False only previews the deletion. This clearly communicates when and how to invoke the tool versus alternatives.

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

findings_listA
Read-onlyIdempotent

[READ] List Operations diagnostic findings, optionally filtered.

Use this to review current diagnostic findings (misconfigurations, health rule hits) across the environment. Filters are comma-separated strings; omit a filter to match all. Returns finding summaries (rule_uuid, name, severity, category, finding_type, affected_objects_count) in the paginated envelope. Note: these are general operational findings, NOT compliance benchmark results — for hardening/compliance use vmware-harden.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax findings to return (default 50; None returns all).
targetNoAria/VCF Operations target name from config; default when omitted.
categoriesNoComma-separated category filter.
severitiesNoComma-separated severity filter, e.g. "CRITICAL,WARNING".
finding_typesNoComma-separated findingType filter.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already establish readOnly, idempotent, and non-destructive behavior, so the description only needs to add context beyond that. It adds useful behavioral details: filters are comma-separated, omitted filters match all, and results arrive as finding summaries in a paginated envelope. This gives the agent a realistic expectation of output shape without contradicting the annotations.

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

Conciseness5/5

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

The description is compact and front-loaded: the first sentence states the action and resource, the next gives usage context, then filter behavior, return shape, and a useful compliance disclaimer. Every sentence earns its place, and there is no redundant restatement of schema fields.

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 read-only list tool with no output schema, the description does a good job: it names the returned fields, mentions pagination, and explains filter semantics. The main gap is that the paginated envelope is not further described (e.g., how to request subsequent pages), but the optional limit parameter and schema already cover enough for a first invocation.

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

Parameters4/5

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

The schema already covers 100% of parameters with clear descriptions, so the baseline is 3. The description adds semantic value by explaining the shared filter convention ('comma-separated strings; omit a filter to match all') and states what the returned summaries contain, which helps the agent reason about how the optional filters map to results. This exceeds the baseline.

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 opens with a specific verb-resource pair — 'List Operations diagnostic findings' — and clarifies the domain by naming example content ('misconfigurations, health rule hits') and the returned summary fields. It also explicitly distinguishes this tool from compliance benchmark results, which prevents confusion with a closely related category. The purpose is unambiguous even without sibling-specific comparison.

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 says clearly when to use the tool ('review current diagnostic findings') and gives an explicit exclusion ('NOT compliance benchmark results') with a routing suggestion to vmware-harden. However, it does not contrast this tool with nearby siblings such as list_alerts, list_anomalies, or investigate_alert, leaving some alternative-selection work to the agent.

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

fleet_certificate_listA
Read-onlyIdempotent

[READ] List certificate status and expiry across the VCF fleet.

Use this to spot certificates that are expired or expiring soon across all VCF components managed by Operations 9.1. Returns per-certificate summaries (subject, issuer, valid_to, status, resource, thumbprint) in the family paginated envelope (items/returned/limit/total/truncated/hint). Read-only: it does not renew or replace any certificate. Gotcha: response field names are read defensively — a field absent on your appliance shows as empty rather than failing the call.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax certificates to return (default 50; None returns all).
targetNoAria/VCF Operations target name from config; default when omitted.

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already mark this as read-only, idempotent, and non-destructive, and the description reinforces this with 'Read-only: it does not renew or replace any certificate.' It also goes beyond annotations by disclosing the return envelope and the defensive field-reading gotcha, which is genuinely useful behavioral information.

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 compact and efficiently organized: purpose, use case, return format, read-only caveat, and a practical gotcha are each covered in distinct, information-dense sentences. There is no filler or repetition of schema content.

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 read-only list tool with two optional parameters and no output schema, the description fully prepares an agent: it names the returned summary fields, the pagination envelope, the read-only nature, and a real behavioral caveat. Nothing essential for invoking the tool is missing.

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% and both parameters, limit and target, are already fully documented with defaults and meaning in the input schema. The description adds no new parameter-level guidance, 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 opening sentence, '[READ] List certificate status and expiry across the VCF fleet', states a specific verb, resource, and scope. It is clearly about certificates across VCF components, which is distinct from alert, finding, and resource siblings, though it does not explicitly name an alternative or say what falls outside its scope.

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?

'Use this to spot certificates that are expired or expiring soon across all VCF components managed by Operations 9.1' gives an explicit, concrete selection condition. It does not mention when not to use it or point to an alternative such as a renewal tool, but for a listing tool the usage context is clear.

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

fleet_domain_listA
Read-onlyIdempotent

[READ] List the SDDC/workload domains behind one registered VCF integration.

Use this to enumerate the domains of a VCF integration registered in Operations. The integration_id is the UUID shown under Administration -> Integrations -> VCF in the Operations UI; the operator supplies it (this skill does not list VCF integrations). Returns domain summaries (id, name, type, status, configuration_state) in the paginated envelope, where configuration_state is configured / not_configured / removed — a removed domain is not a live one. A 404 means the integration_id is wrong — copy the exact UUID from the Operations Integrations page. Gotcha: if the envelope carries a "note", the appliance answered in a shape this tool did not recognise and an empty items list means UNKNOWN, not "no domains" — do not report the fleet as domain-free in that case.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax domains to return (default 50; None returns all).
targetNoAria/VCF Operations target name from config; default when omitted.
integration_idYesUUID of the registered VCF integration.

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnlyHint and idempotentHint annotations, the description discloses the paginated return envelope, the exact domain summary fields, the meaning of configuration_state values, the 404 behavior for a wrong integration_id, and the critical 'note' gotcha where an empty list means UNKNOWN rather than no domains. This is rich behavioral disclosure that significantly helps an agent interpret results correctly.

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 dense but every sentence earns its place: intent, source of the required parameter, return fields, error semantics, and the critical empty-list gotcha. The '[READ]' prefix and front-loaded purpose make scanning easy, and there is no redundant filler.

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?

With no output schema, the description fully compensates by enumerating the returned fields, status values, pagination behavior, and error cases. It also warns about the ambiguous empty-response case, which is exactly the kind of contextual information an agent needs to avoid misreporting results.

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

Parameters4/5

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

The schema already documents all three parameters with 100% coverage, so the baseline is 3. The description adds valuable context for integration_id by pointing to the exact UI location for the UUID and explaining the 404 meaning, going beyond the schema's 'UUID of the registered VCF integration'.

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

Purpose5/5

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

The description starts with '[READ] List the SDDC/workload domains behind one registered VCF integration', using a specific verb and resource. It clearly distinguishes this tool from siblings like fleet_certificate_list and fleet_password_account_list by scoping it to VCF integration domains, so an agent can select it without ambiguity.

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

Usage Guidelines4/5

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

The description explicitly says 'Use this to enumerate the domains of a VCF integration registered in Operations' and explains that the integration_id must be supplied by the operator because 'this skill does not list VCF integrations'. It provides clear context and a practical exclusion, though it does not name alternative tools for when this tool is not appropriate.

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

fleet_password_account_listA
Read-onlyIdempotent

[READ] List managed password-account status across the VCF fleet.

Use this to review which fleet accounts Operations manages and their rotation/expiry status. Returns per-account summaries (username, resource, status, expiry, last_rotated) in the paginated envelope. Read-only: this never rotates or sets a password — the rotation endpoint is deliberately not wired into this skill. Gotcha: response field names are read defensively; unknown fields degrade to empty.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax accounts to return (default 50; None returns all).
targetNoAria/VCF Operations target name from config; default when omitted.

TDQS

A4.4/5.0
Behavior5/5

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

Beyond annotations, the description discloses the return payload shape (username, resource, status, expiry, last_rotated), the paginated envelope, and a defensive-read behavior where unknown fields degrade to empty. It also reinforces the readOnlyHint by explicitly stating the rotation endpoint is not wired in. Nothing contradicts the annotations.

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

Conciseness5/5

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

The description is compact, front-loaded with a clear summary, and each sentence serves a distinct purpose: scope, usage, returns, safety, and a gotcha. No filler or repetition; the operational caveat about defensive field reading is valuable and 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?

Considering there is no output schema, the description does a good job by naming the returned per-account fields and mentioning pagination. It could specify pagination mechanics in more detail, but with only two optional parameters and full schema coverage, an agent has enough to call the tool correctly. Minor gaps are acceptable here.

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

Parameters3/5

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

Schema coverage is 100%, and both parameters have meaningful descriptions: limit defaults to 50 and None returns all; target selects the config target. The description's mention of the paginated envelope is related to limit but adds little beyond what the schema documents, so the baseline 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 first sentence states the exact scope and action: 'List managed password-account status across the VCF fleet.' It clearly identifies the resource (password-account status), distinguishes it from sibling list tools like fleet_certificate_list and fleet_domain_list, and is not a tautology.

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

Usage Guidelines4/5

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

The description explicitly says when to use it ('Use this to review which fleet accounts Operations manages and their rotation/expiry status') and even gives a when-not: it never rotates or sets a password, and the rotation endpoint is deliberately not wired in. It does not explicitly name alternative tools, but the context and sibling list make the tool's niche clear.

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

generate_reportA

[WRITE] Trigger generation of a report from a report definition template.

Returns immediately with a report_id and PENDING status; it does not wait for the file. Poll get_report(report_id) until status == COMPLETED, then use download_url.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoAria target name from config; default when omitted.
resource_idsNoREQUIRED — at least one resource UUID. The Report API generates against a single root resource (first ID is used); pass a cluster/datacenter UUID to cover its children. Find IDs via list_resources.
definition_idYesReport definition (template) UUID from list_report_definitions.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already signal readOnly=false, idempotent=false, and destructive=false. The description adds crucial context beyond those flags: the tool returns immediately with a report_id and PENDING status, does not wait for the file, and requires polling. This is exactly the behavioral nuance an agent needs and cannot infer from annotations alone.

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 compact, well-structured sentences. The first states purpose, and the second explains the async workflow and follow-up action. No filler or redundant repetition of the schema.

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?

With no output schema, the description fully explains what the tool returns (report_id, PENDING status) and how to complete the workflow (poll get_report until COMPLETED, then use download_url). For an async trigger tool with rich schema descriptions, this is complete enough for an agent to invoke it correctly.

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 baseline is 3. The main description adds no parameter-level detail; however, the schema itself provides rich guidance (resource_ids first-ID semantics, list_resources, definition_id via list_report_definitions). Note a minor schema inconsistency: resource_ids is declared optional but its description says 'REQUIRED', which could confuse agents, but this is not a failure of the main description.

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

Purpose5/5

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

The description clearly states the operation ('Trigger generation'), the resource ('a report from a report definition template'), and the asynchronous behavior. The [WRITE] tag and the focus on generation distinguish it from read-oriented siblings like get_report and list_reports.

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

Usage Guidelines4/5

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

The description explicitly tells the agent how to use the tool and what to do next: poll get_report(report_id) until status == COMPLETED, then use download_url. It implies the division of labor between generation and retrieval, though it does not explicitly state when not to use alternatives.

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

get_alertA
Read-onlyIdempotent

[READ] Get full details for one alert by UUID, including its contributing (triggered) symptoms. Use this after list_alerts to drill into a single alert; use list_alerts to discover or filter them. Returns one alert object: name, criticality, status, impact, resource_id, start/update/cancel timestamps, control state, and symptoms (each with the condition that triggered it). Gotcha: an empty symptoms list normally means the alert has no triggered symptoms, but if a "symptoms_note" key is present the list is UNKNOWN rather than empty — the response shape was unrecognised or the lookup failed, so do not tell the user the alert fired for no reason. The Alert model does not carry a resource name — resolve it via get_resource(resource_id), or call investigate_alert to do that correlation in one step. Recommendations hang off the alert definition, not the alert. To act on the alert afterwards, use acknowledge_alert or cancel_alert.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoAria target name from config; default when omitted.
alert_idYesThe alert UUID (from list_alerts).

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, but the description adds crucial behavioral context: the symptoms_note gotcha (empty list may mean UNKNOWN rather than no symptoms), the Alert model's lack of a resource name, and that recommendations hang off the definition. These are non-obvious behaviors that prevent incorrect agent reasoning.

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?

Every sentence earns its place: purpose, usage ordering, response fields, the symptoms_note gotcha, resource-name resolution, recommendations location, and follow-up actions. The description is dense but front-loaded with the core action and contains no redundant or filler content.

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?

With no output schema, the description fully specifies the return object's fields and caveats, including the edge case of symptoms_note. It also covers what the tool cannot do (resolve resource name, provide recommendations) and directs to the appropriate siblings. Nothing an agent needs to call this correctly is missing.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The schema already documents alert_id as 'The alert UUID (from list_alerts)' and target as a config name with a default. The description adds no new parameter semantics beyond reinforcing that alert_id is a UUID; it does not compensate 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?

Description states a specific verb and resource: 'Get full details for one alert by UUID, including its contributing (triggered) symptoms.' It clearly distinguishes this from list_alerts (discovery/filtering) and investigate_alert (correlation), so an agent knows exactly what this tool does and what it does not do.

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

Usage Guidelines5/5

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

The description explicitly says 'Use this after list_alerts to drill into a single alert; use list_alerts to discover or filter them.' It also names investigate_alert as an alternative for one-step correlation and acknowledge_alert/cancel_alert for acting on the alert, giving clear when-to-use and when-not-to-use guidance.

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

get_aria_healthA
Read-onlyIdempotent

[READ] Check Aria Operations platform node status (ONLINE/OFFLINE).

Returns overall_status ("ONLINE" when all internal services run, else "OFFLINE" — the endpoint itself answers 503 when offline), healthy bool, system_time_ms, and details. Use this to verify Aria Operations is functioning before investigating monitoring blind spots; per-service breakdown is not exposed by the public API. A 503 from the platform is reported as OFFLINE and never raised, so this answers even while Aria is down. When status is ONLINE but data looks stale, check list_collector_groups next.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoAria target name from config; default when omitted.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already mark the tool as read-only and idempotent, and the description adds meaningful behavior not inferable from schema: a 503 from the platform is converted to OFFLINE and never raised, so the tool answers even when Aria is down. It also discloses what overall_status represents and names the returned fields.

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

Conciseness5/5

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

The description is compact and front-loaded with the tool's purpose and return values, followed by essential usage context and error-handling behavior. Every sentence adds value without 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?

The description is complete for a simple health-check tool: it explains the meaning of the status, the return fields, the 503 handling, and the relationship to a sibling tool. Even though there is no output schema, the description provides enough return-value detail for an agent to use the result correctly.

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 already explains the optional target parameter. The description does not add further parameter-level details, but none are necessary given the high schema coverage.

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

Purpose5/5

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

The description clearly states the tool checks Aria Operations platform node status and explicitly defines the ONLINE/OFFLINE outcome semantics. It is distinct from sibling tools by focusing on platform-level health rather than alerts, resources, or collectors.

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

Usage Guidelines5/5

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

The description explicitly says to use it to verify Aria Operations is functioning before investigating monitoring blind spots, and notes that per-service breakdown is not exposed by the public API. It also gives a concrete next-step alternative: check list_collector_groups when status is ONLINE but data looks stale.

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

get_capacity_overviewA
Read-onlyIdempotent

[READ] Returns a capacity overview for a cluster — the group-level remaining-capacity percentage (capacity_remaining_pct, which only exists at group level) plus per-dimension (cpu/mem/diskspace) absolute remaining capacity and projected days-until-full, from the OnlineCapacityAnalytics metrics. Values are None while capacity analytics are still warming up on a fresh instance. Start here when assessing overall cluster capacity health; for absolute headroom values use get_remaining_capacity, and for just the exhaustion projections use get_time_remaining.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoAria target name from config; default when omitted.
cluster_idYesThe cluster resource UUID (ClusterComputeResource, from list_resources).

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is established. The description adds meaningful behavioral detail beyond annotations: it notes that values are None while capacity analytics are warming up on a fresh instance, and it identifies the data source (OnlineCapacityAnalytics metrics). This is useful non-obvious 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 appropriately sized for the tool's complexity and front-loads the core action and outputs in the first sentence. The caveat about warming up and the sibling routing guidance each earn their place. No filler or repetitive content is present.

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?

There is no output schema, so the description carries the burden of explaining return semantics. It covers the key values (capacity_remaining_pct, per-dimension absolute remaining, days-until-full), the warm-up None behavior, and the data source. Given the simplicity of the input parameters and the annotations, the description is complete enough for correct selection and invocation.

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%, and both parameters already have descriptions: cluster_id is 'The cluster resource UUID (ClusterComputeResource, from list_resources)' and target has a default and config-origin note. The description adds little parameter-level meaning beyond the schema, so the baseline of 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?

The description states a specific verb ('Returns a capacity overview') and resource ('a cluster'), and precisely identifies the output components: group-level capacity_remaining_pct, per-dimension absolute remaining capacity, and projected days-until-full. It further distinguishes itself from sibling tools by naming what it includes and where it comes from, so an agent can clearly tell it apart from get_remaining_capacity and get_time_remaining.

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

Usage Guidelines5/5

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

The description explicitly says 'Start here when assessing overall cluster capacity health' and provides concrete alternatives for more focused needs: 'for absolute headroom values use get_remaining_capacity, and for just the exhaustion projections use get_time_remaining.' This gives the agent an unambiguous routing rule for when to use this tool versus its siblings.

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

get_remaining_capacityA
Read-onlyIdempotent

[READ] Get remaining capacity headroom for a cluster or host — how much more workload fits before hitting limits. Returns the group-level capacity_remaining_pct (only available at group level) plus one entry per capacity dimension (cpu, mem, diskspace) with remaining_value (absolute, unit per dimension e.g. MHz/KB), from the OnlineCapacityAnalytics demand model. Values are None while capacity analytics warm up. Use get_capacity_overview for the combined view, or get_time_remaining for projected days-until-full.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoAria target name from config; default when omitted.
resource_idYesThe resource UUID — a ClusterComputeResource or HostSystem (from list_resources).

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already mark the tool read-only, idempotent, and non-destructive. The description adds useful behavioral context beyond that: the output shape, per-dimension units, the OnlineCapacityAnalytics source, and the caveat that values are None while analytics warm up.

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 sentences, each earning its place: purpose, return shape and caveat, and sibling routing. The read marker is front-loaded and there is no filler.

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?

There is no output schema, but the description covers the key returned fields, units, group-level behavior, warm-up nulls, and alternative tools. For a simple 2-parameter read-only analytics query, this is enough for an agent to invoke it correctly.

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 both parameters are already fully documented. The description adds minor context about cluster/host scope and group-level percentage, but does not need to restate parameter meanings. 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 opens with a clear read verb and resource scope: 'Get remaining capacity headroom for a cluster or host.' It also names sibling alternatives, so an agent can distinguish this from get_capacity_overview and get_time_remaining without inspecting schemas.

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

Usage Guidelines5/5

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

It states precise selection context by noting capacity_remaining_pct is only available at group level, and explicitly routes to get_capacity_overview for the combined view or get_time_remaining for projected days-until-full. This gives actionable when-to-use and alternative guidance.

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

get_reportA
Read-onlyIdempotent

[READ] Get status and download URLs for a generated report.

Returns id, name (the report's title, fetched from its definition — null if that definition is gone; this endpoint carries no title of its own), description (the definition's explanatory blurb, which is NOT the title), status (PENDING, RUNNING, COMPLETED, FAILED), definition_id, completion_time (the appliance's own rendering, e.g. "Sun Aug 30 04:40:08 UTC 2026"), completion_time_ms (epoch ms, or null when the appliance sent a date string), download_url (PDF) and csv_url. Use this to poll after generate_report. The URLs are always constructed, so a download_url is present even while the report is still PENDING — check status before fetching it.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoAria target name from config; default when omitted.
report_idYesThe report UUID (from generate_report or list_reports).

TDQS

A4.4/5.0
Behavior5/5

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

With annotations already declaring readOnly, idempotent, and non-destructive behavior, the description adds significant behavioral context: URLs are always constructed even when PENDING, download_url must be gated on status, completion_time has appliance-specific formatting, and title/description depend on the report definition. This goes well beyond the annotations.

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 front-loaded with the core purpose and then enumerates return fields and edge cases. It is somewhat long but every sentence carries useful operational detail, so the length is justified.

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?

There is no output schema, so the description carries the full burden of explaining return values. It exhaustively lists fields, statuses, null cases, time formats, and the key caveat about URLs being present before completion. Nothing an agent needs to call this correctly is missing.

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 already documents both parameters. The description reinforces that report_id comes from generate_report or list_reports, but adds little 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 opens with a specific verb+resource: 'Get status and download URLs for a generated report.' It clearly identifies the tool's subject (reports) and its outcome (status and URLs), and the detailed return-field list distinguishes it from related siblings like generate_report and list_reports.

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

Usage Guidelines4/5

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

The description explicitly says 'Use this to poll after generate_report', giving a clear usage context. It does not explicitly name alternatives to avoid, but the polling role and the mention that report_id comes from generate_report or list_reports sufficiently guide selection.

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

get_resourceA
Read-onlyIdempotent

[READ] Returns one resource object: id, name, kind, adapter kind, identifiers, status states, and the health/risk/efficiency badges (each a color plus 0-100 score, null when Aria has not scored that badge). Use this after list_resources to inspect a single UUID in depth — it does not accept a name, so use list_resources to discover UUIDs by kind or name. For just the badge scores use get_resource_health; for time-series metrics use get_resource_metrics.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoAria target name from config; default when omitted.
resource_idYesThe resource UUID (from list_resources).

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already convey readOnly/idempotent/non-destructive, so the description does not need to repeat that. It adds useful behavioral context beyond the annotations by detailing the shape of the returned object, the badge scoring range, and the null condition when Aria has not scored a badge. This helps the agent reason about output without an output schema.

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

Conciseness5/5

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

Three dense sentences carry a lot of value: the first summarizes the return payload, the second positions the tool in a workflow and states its key limitation, and the third routes to alternatives. There is no filler, and the most decision-relevant fact (the UUID-only restriction) is front and center.

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 read tool with one required parameter and no output schema, the description fully compensates for the missing output schema by listing all returned fields and the badge structure. It also covers usage context, parameter source, and sibling alternatives. Nothing an agent needs to invoke this correctly is missing.

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% for both parameters, so the baseline is 3. The description adds extra semantic value by explicitly noting that resource_id must be a UUID obtained from list_resources and that the tool 'does not accept a name,' which prevents callers from passing a human-readable identifier. This is meaningful clarification beyond the schema description.

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

Purpose5/5

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

The description opens with a clear verb and resource: 'Returns one resource object', then enumerates the exact fields returned so an agent knows what to expect. It explicitly distinguishes itself from get_resource_health and get_resource_metrics, making it easy to tell apart from sibling tools.

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

Usage Guidelines5/5

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

It states exactly when to use it: 'Use this after list_resources to inspect a single UUID in depth', and gives an explicit exclusion: 'it does not accept a name, so use list_resources to discover UUIDs by kind or name.' It also names the specific sibling tools for badge-only or time-series needs, leaving no ambiguity about routing.

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

get_resource_healthA
Read-onlyIdempotent

[READ] Get the health, risk, and efficiency badge scores for a resource.

Returns the three scores and their colors, from the resource's badges[] array. Scores are 0–100 (higher = healthier for HEALTH). Use this when the scores are all you need; use get_resource for the whole object, or list_alerts(resource_id=...) for what drove a low score. A score is null (or -1) when Aria has not computed that badge — that does not mean healthy.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoAria target name from config; default when omitted.
resource_idYesThe resource UUID.

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnly/idempotent annotations, the description discloses return source (badges[] array), score range (0–100), and the critical null/-1 semantics indicating a badge was not computed rather than being healthy. This is valuable behavioral context an agent could not infer from the schema or annotations alone.

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 compact and front-loaded. It communicates purpose, return behavior, score semantics, and alternatives in three sentences with no filler 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 read-only two-parameter tool with full schema coverage and annotated safety hints, the description provides enough information about return values and edge cases (null/-1) to call the tool correctly without an output schema.

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 already documents resource_id and target. The description adds no new parameter-level detail beyond confirming the resource context, but it also does not need to; 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?

The description states a specific verb and resource: 'Get the health, risk, and efficiency badge scores for a resource.' It also clarifies what is returned (three scores and their colors) and distinguishes this tool from siblings like get_resource and list_alerts.

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

Usage Guidelines5/5

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

Explicit guidance is provided: 'Use this when the scores are all you need; use get_resource for the whole object, or list_alerts(resource_id=...) for what drove a low score.' This directly routes the agent to the correct tool based on need.

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

get_resource_metricsA
Read-onlyIdempotent

[READ] Fetch time-series metric statistics for a resource.

Returns a dict keyed by metric key, each mapping to a list of {timestamp_ms, value} points — not an envelope. Use this for history; for a single current score use get_resource_health instead. A key the API has no data for does not appear in the result at all, so check which keys came back before reporting a metric as zero.

ParametersJSON Schema
NameRequiredDescriptionDefault
hoursNoNumber of hours of history to retrieve. Default 1.
targetNoAria target name from config; default when omitted.
metric_keysYesMetric keys to fetch, e.g. ["cpu|usage_average", "mem|usage_average", "disk|usage_average", "net|usage_average"].
resource_idYesThe resource UUID.
rollup_typeNoAggregation type: AVG, MAX, MIN, SUM, COUNT, LATEST. Default AVG.AVG

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover read-only/idempotent safety, so the description adds useful behavior beyond them: the exact return shape (dict keyed by metric key) and the important missing-key behavior. This is meaningful context that affects how an agent interprets results.

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 dense sentences with no filler. The purpose is front-loaded, followed by return shape, usage guidance, and a critical data-interpretation caveat. Every sentence earns its place.

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?

With no output schema, the description must explain return values, and it does: dict keyed by metric key, list of {timestamp_ms, value} points, and absence behavior. Combined with full schema coverage and rich annotations, nothing essential is missing for correct invocation.

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 already documents all parameters including examples and defaults. The description adds no significant parameter-level meaning beyond what the schema provides, so 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?

States a specific verb and resource ('Fetch time-series metric statistics for a resource') and explicitly distinguishes itself from get_resource_health. The 'not an envelope' return shape note further clarifies what the tool does.

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

Usage Guidelines5/5

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

Gives explicit when-to-use guidance: 'Use this for history; for a single current score use get_resource_health instead.' It also adds operational guidance about checking which keys came back before reporting a metric as zero.

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

get_resource_riskbadgeA
Read-onlyIdempotent

[READ] Get the risk badge score for a resource (0–100, higher = more risk of future problems).

The risk badge predicts likelihood of performance degradation or availability issues based on current trends and workload patterns. Returns risk_score and risk_color for the one resource. Use this when the risk number is all you want; get_resource_health returns health and efficiency alongside it. The score is null when Aria has not computed a risk badge, and the badge does not say what is wrong — use list_alerts(resource_id=...) for the contributing alerts.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoAria target name from config; default when omitted.
resource_idYesThe resource UUID.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive behavior, so the bar is lower. The description adds valuable context by specifying the return fields risk_score and risk_color, the null behavior when Aria has not computed a badge, and the limitation that the badge does not explain what is wrong. This goes beyond the annotations and gives the agent useful behavioral expectations.

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

Conciseness5/5

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

The description is well-structured, front-loading the core purpose and using short, information-dense sentences. It covers purpose, return values, usage guidance, null cases, and alternatives without redundancy or filler.

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 read-only tool with one required parameter and no output schema, the description fully covers what an agent needs: what the score means, what fields are returned, when the value is null, and which sibling tool to use for more detail. The annotations and schema handle the remaining context.

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 coverage is 100%, so the schema already documents resource_id as 'The resource UUID' and target as the Aria target name. The description does not add significant parameter-level meaning beyond that, so the baseline 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 opens with a specific verb and resource: 'Get the risk badge score for a resource', which clearly identifies the operation. It also distinguishes itself from the sibling get_resource_health by noting it returns only the risk number, not health and efficiency.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool: 'Use this when the risk number is all you want.' It also names the alternative get_resource_health and provides a use-case boundary, and directs users to list_alerts when they need contributing alerts, covering both when-to-use and when-not-to-use.

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

get_time_remainingA
Read-onlyIdempotent

[READ] Predict when a cluster will exhaust its capacity based on usage trends.

Returns time_remaining: one entry per capacity dimension (cpu, mem, diskspace) with projected days until full. Use get_capacity_overview instead when you also want current headroom — this tool returns only the projections. Days are None while capacity analytics warm up on a fresh instance, and None does not mean unlimited.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoAria target name from config; default when omitted.
resource_idYesThe resource UUID (typically ClusterComputeResource).

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, which the description's [READ] prefix reinforces without contradiction. Beyond annotations, the description adds two valuable behavioral disclosures: the output is structured per dimension (cpu, mem, diskspace) and the crucial 'None does not mean unlimited' warm-up caveat, which prevents a likely misinterpretation. It stops short of 5 by not covering error or edge-case behavior, but the additions are meaningful.

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?

Four sentences, each earning its place: purpose, return structure, sibling routing, and the None caveat. The [READ] tag and primary purpose are front-loaded. Slightly more verbose than strictly necessary, but no wasted 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?

With no output schema, the description correctly carries the burden of explaining return values (per-dimension projected days until full) and covers the warm-up None case. Simple parameters are fully documented in the schema, annotations cover safety, and sibling routing is present. An agent has what it needs to select and invoke this tool correctly.

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% — both resource_id ('The resource UUID (typically ClusterComputeResource)') and target ('Aria target name from config; default when omitted') are already documented. The description adds no parameter-level detail beyond the implicit mapping of 'cluster' to resource_id, so the 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 opens with a specific verb+resource ('Predict when a cluster will exhaust its capacity based on usage trends') and names the return value (time_remaining per capacity dimension). It explicitly differentiates from get_capacity_overview ('this tool returns only the projections'), so an agent can distinguish it from siblings without opening schemas. The [READ] prefix also signals operation type.

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

Usage Guidelines5/5

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

Provides an explicit routing rule: 'Use get_capacity_overview instead when you also want current headroom — this tool returns only the projections.' This states both the condition and the alternative, leaving no inference needed. The sibling context confirms get_capacity_overview is the right comparison tool.

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

get_top_consumersA
Read-onlyIdempotent

[READ] Query resources with highest consumption of a given metric. Then call get_resource_metrics on a returned id for its history.

Returns a paginated envelope: items, returned, limit, total (null when the API reports no size), truncated, hint. Check truncated before calling this the complete set.

ParametersJSON Schema
NameRequiredDescriptionDefault
top_nNoNumber of top consumers to return (max 50). Default 10.
targetNoAria target name from config; default when omitted.
metric_keyNoMetric to rank by, e.g. cpu|usage_average, mem|usage_average, disk|usage_average.cpu|usage_average
resource_kindNoResource kind to scope the query. Default VirtualMachine.VirtualMachine

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the readOnly/openWorld/idempotent annotations, the description discloses the paginated envelope fields, the null total behavior, and the critical truncated caveat. This tells the agent that a returned result may be incomplete and to check truncated before trusting the full set.

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 compact, front-loaded with the primary purpose, and uses a second sentence for essential result handling. Every sentence contributes useful information without padding.

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?

There is no output schema, so the description compensates by specifying the return envelope and truncation behavior. With read-only annotations, four fully documented optional parameters, and a clear follow-up via get_resource_metrics, an agent has enough context to call and interpret this tool correctly.

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 already documents all four parameters. The description adds only general mapping like 'given metric' to metric_key and resources to resource_kind, but no additional parameter semantics beyond the schema.

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

Purpose5/5

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

The description names a specific operation: query resources with the highest consumption of a given metric. It also distinguishes itself from get_resource_metrics by positioning that sibling as a follow-up for history. The [READ] prefix is consistent and makes intent obvious.

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

Usage Guidelines4/5

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

The description gives clear context for when to use this tool: when you need top consumers of a metric. It also points to get_resource_metrics for the next step, but it does not explicitly state when NOT to use this tool or mention alternatives like list_resources.

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

investigate_alertA
Read-onlyIdempotent

[READ] Resolve one alert to its affected resource in a single call — use this instead of chaining get_alert then get_resource by hand.

Does the whole alert-to-object correlation server-side: fetches the alert, reads its resourceId, fetches that resource, and confirms the resource name and kind before suggesting anything downstream.

Returns five always-present keys: alert (Aria's values verbatim), resource (or null), correlation (both UUIDs labelled, plus confirmed name, kind and a confirmed flag), next_step (which vmware-monitor tool to call next, or null), and warnings (empty on success).

Gotchas: alert_id is the alert UUID from list_alerts, NOT the resource UUID — mixing them up is the most common error here; the correlation block labels each. An unresolvable resource degrades to a warning plus nulls rather than an error, so the alert is never lost. Never match the resource against vCenter inventory unless correlation.confirmed is true.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoAria target name from config; default when omitted.
alert_idYesThe alert UUID from list_alerts (not the resource UUID).

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnly, openWorld, idempotent, and non-destructive, and the description adds significant behavioral context: it performs server-side correlation, returns five always-present keys, degrades unresolvable resources to warnings plus nulls rather than errors, and warns against matching inventory unless confirmed. This goes well beyond the structured annotations.

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

Conciseness5/5

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

The description is front-loaded with the primary purpose, then structured into what it does, what it returns, and gotchas. It is detailed because the tool has no output schema, but every sentence carries meaningful information and none are filler.

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?

With no output schema, the description fully compensates by enumerating the five always-present return keys, the null behavior, the next_step guidance, and warning behavior. It covers edge cases and the most common misuse, making the tool self-contained for correct invocation.

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 already documents alert_id as "The alert UUID from list_alerts (not the resource UUID)" and covers target with its default, so schema coverage is 100%. The description's gotcha restates this emphasis rather than adding genuinely new parameter semantics, so the baseline of 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?

The description opens with a specific verb+resource: "Resolve one alert to its affected resource in a single call." It clearly distinguishes itself from chaining get_alert and get_resource, which are sibling tools, so an agent can tell exactly what this tool does and what it replaces.

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

Usage Guidelines5/5

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

It explicitly says to use this tool "instead of chaining get_alert then get_resource by hand," naming the exact alternatives and the condition favoring this tool. The gotchas also instruct where alert_id comes from and when correlation.confirmed must be true before matching against vCenter inventory.

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

list_alert_definitionsA
Read-onlyIdempotent

[READ] List alert definitions (templates that generate alerts when triggered).

criticality is the max severity across the definition's states[] (the AlertDefinition model has no top-level criticality or enabled field). Pass a returned id to set_alert_definition_state to enable or disable it.

Returns a paginated envelope: items, returned, limit, total (null when the API reports no size), truncated, hint, next_offset. Check truncated before calling this the complete set.

Page it: limit is the page size (1-500; 0, negatives and anything above 500 are rejected, not clamped), offset is how many rows to skip, and next_offset is the offset of the next page — pass it back as offset and stop when it is null. Do not loop on truncated: that says this page is not the whole collection, so it stays true on the last page of a walk.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size, 1–500 (default 100). Out-of-range is rejected.
offsetNoDefinitions to skip; pass the previous response's next_offset.
targetNoAria target name from config; default when omitted.
name_filterNoSubstring filter on definition name (case-insensitive).

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already mark it read-only, idempotent, and non-destructive, and the description adds valuable behavior beyond that: criticality is derived from states[], there is no top-level criticality/enabled field, pagination uses a specific envelope, limit out-of-range is rejected rather than clamped, and truncated should not be looped on. This is exactly the kind of non-obvious behavior agents need.

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 long but every sentence carries operational value: purpose, model quirk, pagination envelope, exact paging rules, and a warning against a common loop. It is front-loaded with the [READ] signal and the core purpose before diving into details.

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

Completeness5/5

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

For a read-only list tool with no output schema, the description fully covers the return envelope, pagination contract, edge cases, and how the results connect to sibling tools. Nothing needed to call it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so parameters are already documented. The description adds meaningful pagination semantics for limit, offset, and next_offset beyond the schema, including the rejection behavior for out-of-range limits and the instruction to stop when next_offset is null.

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

Purpose5/5

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

States a specific verb ('List') and resource ('alert definitions') and clarifies they are templates that generate alerts when triggered. It also distinguishes the returned ids' use from the sibling set_alert_definition_state, so the tool's role is unambiguous.

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

Usage Guidelines4/5

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

The description gives clear operational guidance: use a returned id with set_alert_definition_state, and explains pagination semantics precisely. It does not explicitly contrast with create/delete/list siblings, but the usage context is strong enough to guide selection.

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

list_alertsA
Read-onlyIdempotent

[READ] List alerts from Aria Operations.

Returns alert summaries: name, criticality, status, impact, resource_id, timestamps, and control state. The Alert model does not carry a resource name — resolve it via get_resource(resource_id).

Returns a paginated envelope: items, returned, limit, total (null when the API reports no size), truncated, hint, next_offset. Check truncated before calling this the complete set.

Page it: limit is the page size (1-500; 0, negatives and anything above 500 are rejected, not clamped), offset is how many rows to skip, and next_offset is the offset of the next page — pass it back as offset and stop when it is null. Do not loop on truncated: that says this page is not the whole collection, so it stays true on the last page of a walk.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size, 1–500 (default 100). Out-of-range is rejected.
offsetNoAlerts to skip; pass the previous response's next_offset.
targetNoAria target name from config; default when omitted.
active_onlyNoReturn only active (non-cancelled) alerts. Default True.
criticalityNoFilter by criticality: INFORMATION, WARNING, IMMEDIATE, CRITICAL.
resource_idNoScope alerts to a specific resource UUID.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already mark this as read-only, idempotent, and open-world. The description goes well beyond that by documenting pagination semantics, the exact meaning of truncated, the behavior of next_offset (pass back and stop when null), and the warning not to loop on truncated. It also reveals that the Alert model lacks a resource name, which is critical behavioral context.

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

Conciseness5/5

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

Every sentence adds value. The description is structured with a one-line purpose, a return-format summary, and a dedicated pagination walk-through. It is detailed without redundancy, and the most important caveats are front-loaded.

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?

With no output schema, the description must explain the response shape and pagination protocol, and it does so thoroughly. It covers the envelope fields, the truncated trap, and the cross-reference to get_resource. For a list operation with six optional parameters, this is complete enough for an agent to call and page correctly.

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

Parameters5/5

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

Although schema coverage is 100%, the description adds essential parameter behavior: limit is rejected (not clamped) outside 1-500, offset is an absolute skip count, next_offset must be passed back as offset, and the walk stops on null. This is practical, non-obvious semantics that the schema alone does not convey.

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 opens with a specific verb and resource: 'List alerts from Aria Operations.' It clearly distinguishes list_alerts from siblings like list_alert_definitions, get_alert, and investigate_alert by focusing on alert summaries rather than definitions or single-alert lookup.

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 clearly scopes the tool's use case and even directs follow-up resource-name resolution via get_resource. It does not explicitly enumerate when not to use this tool, but the purpose is distinctive enough among siblings and the 'List alerts' phrasing makes the intended context unmistakable.

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

list_anomaliesA
Read-onlyIdempotent

[READ] Report per-resource anomaly counts (System Attributes|total_alarms metric).

The suite-api does not expose the UI's anomalous-metrics list; this is the Total Anomalies metric — active symptoms, events and DT violations on the object and its children. With resource_id: that resource's count. Without: ranks every VM in the environment and returns the worst limit of them. For root cause, follow up with list_alerts(resource_id=...).

limit bounds the answer, not the scan — raising it does not widen the search, and lowering it does not hide worse objects. The whole inventory is read either way, in bulk pages, because the ranking metric is not a field the appliance can sort on.

Returns a paginated envelope: flagged rows worst-first under items, plus returned, limit, total, truncated, hint, scanned (objects examined), vm_total and scan_complete. Only flagged VMs are returned, so a short list is not by itself proof the environment is clean. When scan_complete is true, total is the number of anomalous objects found and truncated is exact; when it is false the scan hit its cap, total is the environment's VM count, and a note says the ranking is partial — an unexamined object could outrank every row shown.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum ranked rows to return (1–500). Default 50. Rejected, not clamped, when out of range.
targetNoAria target name from config; default when omitted.
resource_idNoOptional resource UUID to scope to a single resource.

TDQS

A5/5.0
Behavior5/5

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

Even though annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, the description adds critical behavioral detail: limit bounds the answer but not the scan, the whole inventory is read in bulk pages, and scan_complete/truncated semantics reveal when results may be partial. It goes well beyond annotation coverage and explains real-world edge cases like a short list not proving a clean environment.

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?

Though lengthy, the description is tightly structured with a READ marker, context, parameter behavior, and output envelope explanation. Every sentence contributes necessary operational knowledge, and the most important purpose statement is front-loaded. The length is justified by the tool's non-obvious scan/ranking behavior.

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?

With no output schema, the description fully documents the paginated response envelope and the meaning of each field, including returned, limit, total, truncated, hint, scanned, vm_total, and scan_complete. It also covers the partial-scan caveat and explains why a short result list is not sufficient evidence of cleanliness. Nothing critical is missing for an agent to call this correctly.

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

Parameters5/5

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

Schema coverage is 100%, but the description substantially enriches parameter meaning. It explains the resource_id branching behavior, clarifies that limit is a result bound rather than a scan bound, and notes that out-of-range limits are rejected. This adds genuine semantic value beyond the schema's already-good 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?

Description states a precise verb and resource: 'Report per-resource anomaly counts' via the Total Anomalies metric. It clearly distinguishes itself from the UI's anomalous-metrics list and from list_alerts, which is for root cause follow-up. An agent can tell exactly what this tool computes.

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

Usage Guidelines5/5

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

The description gives explicit mode-based guidance: with resource_id it returns that resource's count, without it ranks all VMs and returns the worst limit. It also names list_alerts as the follow-up tool for root cause, providing an alternative routing decision. This is strong, actionable usage guidance.

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

list_collector_groupsA
Read-onlyIdempotent

[READ] List Aria Operations collector groups and their member collector status.

Collectors are remote agents that gather metrics from vSphere and other adapters. Check this when resources appear missing from Aria Operations or metrics are stale. Groups list member collector IDs; details (name, state UP/DOWN, local) are enriched via one extra collectors call. A DOWN collector means list_resources and the metric tools see stale or missing data for everything behind it.

Returns a paginated envelope: items, returned, limit, total (null when the API reports no size), truncated, hint. Check truncated before calling this the complete set.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoAria target name from config; default when omitted.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare the tool read-only, idempotent, and non-destructive. The description adds meaningful behavioral context beyond annotations: it discloses the pagination envelope fields, notes that total is null when the API reports no size, warns to check truncated, and explains the enrichment via one extra collectors call. No contradictions with annotations.

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

Conciseness5/5

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

The description is well-structured and front-loaded: purpose, context, usage trigger, behavioral caveats, and return format. Every sentence adds value, and the pagination warning is placed at the end without clutter.

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?

The tool is simple (one optional parameter, no required inputs, no output schema), but the description still covers the key operational concerns: when to use it, what groups contain, what a DOWN collector implies, and what the paginated response looks like. Nothing essential is missing.

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 already fully covers the single parameter with a clear description: 'Aria target name from config; default when omitted.' Since schema description coverage is 100%, the description doesn't need to add parameter details. It adds no new parameter semantics but is not deficient.

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 opens with a specific verb and resource: 'List Aria Operations collector groups and their member collector status.' It also explains what collectors are and links the tool to symptoms (missing/stale resources), making its purpose distinct from siblings like list_resources and get_resource_metrics.

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

Usage Guidelines4/5

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

The description explicitly says when to use this tool: 'Check this when resources appear missing from Aria Operations or metrics are stale.' It also explains how a DOWN collector affects list_resources and metric tools, which is a clear usage signal. It doesn't name alternatives to rule out, but the context is sufficiently clear.

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

list_report_definitionsA
Read-onlyIdempotent

[READ] List available report definition templates in Aria Operations. Pass a returned id to generate_report to run one.

Returns a paginated envelope: items, returned, limit, total (null when the API reports no size), truncated, hint, next_offset. Check truncated before calling this the complete set.

Page it: limit is the page size (1-500; 0, negatives and anything above 500 are rejected, not clamped), offset is how many rows to skip, and next_offset is the offset of the next page — pass it back as offset and stop when it is null. Do not loop on truncated: that says this page is not the whole collection, so it stays true on the last page of a walk.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size, 1–500 (default 100). Out-of-range is rejected.
offsetNoDefinitions to skip; pass the previous response's next_offset.
targetNoAria target name from config; default when omitted.
name_filterNoSubstring filter on report name (case-insensitive).

TDQS

A4.7/5.0
Behavior5/5

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

The description discloses important runtime behavior beyond the annotations: the exact pagination envelope shape, that truncated indicates page incompleteness and stays true on the last page, that limit values are rejected rather than clamped, and that total can be null. This gives an agent accurate expectations without invoking the tool.

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

Conciseness5/5

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

The description is organized into three focused paragraphs: purpose/workflow, return envelope, and pagination walk. Every sentence adds essential information about a non-trivial paginated endpoint. No filler or repetition.

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?

With no output schema, the description fully compensates by documenting the response envelope, null total, truncated flag, and next_offset semantics. It also covers the key edge cases (limit rejection, stop condition, don't loop on truncated). The tool is complex, and the description is complete enough for correct invocation and response interpretation.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description enriches the meaning of limit and offset by explaining the rejection behavior, the skip semantics, and the next_offset handshake. It does not add detail about name_filter or target, but those are already well-described in the schema, so the additional value warrants a 4.

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

Purpose5/5

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

The description clearly identifies the verb ('List') and resource ('available report definition templates in Aria Operations'), and distinguishes the tool from the sibling generate_report by stating that returned ids are passed to it. The term 'definition templates' also differentiates it from list_reports, which presumably lists generated reports.

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

Usage Guidelines4/5

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

The description explains the intended workflow: list definitions, then pass an id to generate_report. It also provides detailed pagination usage instructions, including how to use next_offset and when to stop. It does not explicitly state 'use this instead of list_reports', but the workflow context makes the primary use case clear.

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

list_reportsA
Read-onlyIdempotent

[READ] List generated reports, optionally filtered by report definition. Pass a returned id to get_report for its status and download URLs.

Returns a paginated envelope: items, returned, limit, total (null when the API reports no size), truncated, hint. Check truncated before calling this the complete set. This one has no offset — it is bounded by limit alone, so a truncated page cannot be walked past.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax reports to return (1–200). Default 50.
targetNoAria target name from config; default when omitted.
definition_idNoOptional report definition UUID to filter results.

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the readOnly/idempotent annotations, the description discloses important behavior: the paginated envelope shape, total possibly null, the meaning of truncated, and the critical caveat that there is no offset so truncated pages cannot be walked past. This is exactly the kind of non-obvious behavior an agent needs to know.

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

Conciseness5/5

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

The description is front-loaded with purpose and the get_report routing, then packs the essential pagination behavior into a second dense but efficient paragraph. Every sentence adds meaningful information with no filler.

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?

With no output schema, the description fully compensates by enumerating the response envelope fields and the truncation semantics. It also covers the tool's relationship to get_report and the optional filter, leaving no critical gap for an agent to call this tool correctly.

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 burden on the description is low. The description adds a little context by mentioning filtering by report definition, which maps to definition_id, but it does not explain limit bounds or target 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 opens with a precise verb and resource, 'List generated reports', and immediately states the optional filter by report definition. It also differentiates the tool from its sibling get_report by directing readers to use that tool for status and download URLs, making the boundary clear.

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

Usage Guidelines4/5

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

The description provides clear routing guidance, explicitly telling the agent to pass a returned id to get_report for status and download URLs. It also implies when definition_id should be used, but it does not explicitly contrast with list_report_definitions or mention when not to use this tool.

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

list_resourcesA
Read-onlyIdempotent

[READ] List resources in Aria Operations filtered by kind. Start here: this turns a name or kind into the UUID other resource tools need. Then call get_resource for detail on one row.

Returns a paginated envelope: items, returned, limit, total (null when the API reports no size), truncated, hint. Check truncated before calling this the complete set.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results. Default 100. Paginated automatically, so a larger limit spans more than one page.
targetNoAria target name from config; default when omitted.
name_filterNoSubstring filter on resource name (case-insensitive).
resource_kindNoe.g. VirtualMachine, HostSystem, ClusterComputeResource, Datastore, Datacenter.VirtualMachine

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already mark this as read-only, idempotent, and non-destructive, so the description adds value by disclosing pagination behavior and the exact response envelope: items, returned, limit, total, truncated, and hint. The warning to 'check truncated before calling this the complete set' is useful behavioral context beyond the schema.

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

Conciseness5/5

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

The description is compact and front-loaded with the most important guidance: this is a read operation and the entry point for UUID resolution. Every sentence earns its place, including the paginated envelope details and the truncated check warning.

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?

There is no output schema, so the description appropriately covers the return envelope and pagination semantics. Combined with 100% schema parameter coverage and annotations, the description gives an agent everything needed to invoke and interpret this tool correctly.

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 each parameter already documented. The description reinforces the resource_kind filter but adds no new parameter-level semantics beyond what the schema provides, so the baseline 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 states a specific verb and resource: 'List resources in Aria Operations filtered by kind.' It differentiates itself from get_resource by explicitly saying 'Start here: this turns a name or kind into the UUID other resource tools need' and routing the agent to 'get_resource for detail on one row.'

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

Usage Guidelines4/5

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

The description gives clear usage context: it is the entry point for resolving a name or kind into a UUID for downstream resource tools, and it directs the agent to get_resource next. It does not enumerate exclusions relative to sibling tools, but the guidance is sufficiently directional for correct selection.

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

list_rightsizing_recommendationsA
Read-onlyIdempotent

[READ] List VM rightsizing data — recommended CPU/memory/disk size per VM.

Reads the three OnlineCapacityAnalytics recommendedSize metrics, the only rightsizing signal the public API publishes, on both 8.x and 9.x. Compare against the VM's provisioned size to find over/under-provisioning. Get VM UUIDs from list_resources. One bulk stats call covers the whole page.

Read sizing_status before quoting any number: recommendation — recommended_* carry sizes. reclaimable — the engine publishes 0 for a VM it holds reclaimable. That is NOT a recommendation to size it to zero, and recommended_* are null here. none_published — the VM needs no resizing OR analytics never scored it. The appliance does not distinguish these two; do not report it as either one.

This is not the number the vendor UI's Rightsize page shows — that view presents allocated plus a suggested delta, not the absolute recommended size. Both are correct and they will not match.

Returns a paginated envelope: items, returned, limit, total (null when the API reports no size), truncated, hint. Check truncated before calling this the complete set.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum VMs to evaluate when listing (1–100). Default 50.
targetNoAria target name from config; default when omitted.
resource_idNoOptional VM resource UUID to scope to a single VM.

TDQS

A4.5/5.0
Behavior5/5

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

The description goes far beyond the annotations by explaining nuanced behaviors: sizing_status semantics, the reclaimable zero-value caveat, the none_published ambiguity, the difference from the vendor UI calculation, and the paginated envelope with truncation. These details prevent serious misinterpretation and are not inferable from readOnlyHint or idempotentHint.

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 longer than average but every section earns its place: a one-line summary, metric source, usage pointer, critical sizing_status interpretation rules, a UI comparison warning, and return envelope details. It is front-loaded and uses bullets to keep the caveats scannable.

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

Completeness5/5

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

Given there is no output schema, the description fully compensates by explaining the return envelope fields and the need to check truncated. It also covers the three sizing_status states, how to obtain target VMs, and the API's limitations, making the tool safely callable in a standalone manner.

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 baseline is 3. The description adds context around resource_id by pointing to list_resources for VM UUIDs and mentions pagination, which relates to limit, but it does not materially expand parameter semantics beyond what the schema already documents.

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 opening line states a specific verb and resource: 'List VM rightsizing data — recommended CPU/memory/disk size per VM.' It further clarifies the exact metrics read and notes this is the only rightsizing signal the public API publishes, which distinguishes it from sibling tools that handle resources, alerts, or capacity.

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

Usage Guidelines4/5

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

The description gives clear context on when to use the tool: to compare recommendations against provisioned size, with UUIDs obtained from list_resources. It also provides explicit operational guidance around sizing_status and warns against treating the API output as matching the vendor UI's Rightsize page, though it does not explicitly enumerate exclusions such as 'use get_resource_metrics instead for raw metrics.'

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

list_symptom_definitionsA
Read-onlyIdempotent

[READ] List symptom definitions — use the returned IDs when calling create_alert_definition.

Returns a paginated envelope: items, returned, limit, total (null when the API reports no size), truncated, hint, next_offset. Check truncated before calling this the complete set.

Page it: limit is the page size (1-500; 0, negatives and anything above 500 are rejected, not clamped), offset is how many rows to skip, and next_offset is the offset of the next page — pass it back as offset and stop when it is null. Do not loop on truncated: that says this page is not the whole collection, so it stays true on the last page of a walk.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size, 1–500 (default 100). Out-of-range is rejected.
offsetNoDefinitions to skip; pass the previous response's next_offset.
targetNoAria target name from config; default when omitted.
name_filterNoSubstring filter on symptom name (case-insensitive).
resource_kindNoOptional resource kind filter, e.g. VirtualMachine, HostSystem.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already signal readOnlyHint and idempotentHint, but the description adds substantial non-obvious behavior: the exact paginated envelope fields, the meaning of truncated, the 'rejected, not clamped' limit handling, and the explicit warning not to loop on truncated. This goes well beyond what annotations provide.

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 purpose is front-loaded, and every subsequent sentence explains a nontrivial behavior needed to invoke the tool correctly. The pagination instructions are dense but not padded, and the warning about truncated earns its place.

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 paginated list tool with 5 optional parameters and no output schema, the description covers the return envelope, the pagination contract, and the edge-case caveat about truncated. It tells the agent what it will receive and how to iterate safely, so nothing critical is missing for correct invocation.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds extra value by explaining how limit, offset, and next_offset interact: pages are walked by passing next_offset back, out-of-range limits are rejected, and next_offset being null signals the end. This clarifies parameter behavior beyond the schema 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 opens with '[READ] List symptom definitions' and ties the tool to a concrete downstream use: 'use the returned IDs when calling create_alert_definition.' This clearly identifies the verb, resource, and purpose, and distinguishes it from sibling tools like list_alert_definitions.

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?

It gives a clear use case for the tool by relating its IDs to create_alert_definition, and its read-only nature is reinforced. It does not explicitly compare against sibling tools like list_alert_definitions, but the purpose statement is enough to orient an agent without leaving the main scenario ambiguous.

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

promql_queryA
Read-onlyIdempotent

[READ] Run a real-time PromQL instant query (VCF Operations 9.1 VODAP service).

Use this for near-real-time (~2s) metrics via a Prometheus-compatible instant query, complementing the historical rollups from get_resource_metrics. Requires the real-time metrics (VODAP) integration to be registered; if it is not, the tool returns an actionable error. Returns result series (labels, timestamp, value) in the paginated envelope plus result_type/status. Gotcha: the query reaches a sibling service whose base path (/data-query-service) is INFERRED — every result carries base_path_confirmed=False until confirmed against a live appliance.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeNoOptional evaluation timestamp (RFC3339 or Unix seconds).
limitNoMax result series to return (default 50; None returns all).
queryYesPromQL expression (required), e.g. "cpu_usage_average{}".
targetNoAria/VCF Operations target name from config; default when omitted.
source_idNoOptional data-source id to scope the query.

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the readOnly/idempotent annotations, the description discloses a real-time latency profile, a hard prerequisite (VODAP integration) with the resulting actionable error, and the return envelope contents. It also surfaces a non-obvious gotcha: the sibling service base path is inferred and every result carries base_path_confirmed=False until validated. This is substantial behavioral context.

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

Conciseness5/5

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

The description is compact yet information-dense, with each sentence contributing a distinct fact: purpose, use case, prerequisite, return format, and a critical gotcha. The '[READ]' prefix and front-loaded purpose statement make the tool's intent immediately clear.

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 read-only query tool with full schema coverage and no output schema, the description covers the essential operational context: when to use it, what it returns, the required integration, error behavior, and a latency caveat. An agent has enough information to select and invoke it correctly under normal conditions.

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 and its per-property descriptions already document all five parameters thoroughly. The description adds high-level context about the query and return shape, but does not need to repeat parameter syntax; 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 opening line, '[READ] Run a real-time PromQL instant query', states a specific verb, resource, and temporal characteristic. It also names the underlying VODAP service, separating it clearly from the historical-rollup tool get_resource_metrics among the siblings.

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

Usage Guidelines4/5

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

The description explicitly says to use this for near-real-time (~2s) metrics and references get_resource_metrics as the complementary historical alternative, giving clear context for tool selection. It does not spell out an explicit 'do not use when...' condition, though the complementing-rollups phrase implies the boundary.

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

set_alert_definition_stateA

[WRITE] Enable or disable an existing alert definition.

Returns definition_id, enabled, and the action taken. Use this instead of delete_alert_definition when you only want to silence a definition — disabling is reversible, deleting is not.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoAria target name from config; default when omitted.
enabledYesTrue to enable the definition, False to disable it.
definition_idYesAlert definition UUID (from list_alert_definitions).

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=false and destructiveHint=false, but the description adds meaningful behavioral context: it labels the operation as [WRITE], explains that disabling is reversible while deleting is not, and states the return fields (definition_id, enabled, action taken). This goes beyond the annotations without contradicting them.

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 redundancy. The [WRITE] marker and primary action are front-loaded, and the alternative guidance is compact and directly actionable. Every sentence earns its place.

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 mutation tool with all parameters schema-documented and no output schema, the description covers the essential context: what it does, when to use it, what it returns, and how it differs from the destructive sibling. An agent has enough to select and call this tool correctly.

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 baseline is 3. The description adds a small amount of semantic context by equating disabling with 'silencing' a definition, but it does not materially explain any parameter beyond what the schema already provides (definition_id from list_alert_definitions, enabled True/False).

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

Purpose5/5

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

The description clearly states a specific verb ('Enable or disable') and a specific resource ('an existing alert definition'), distinguishing it from sibling tools like delete_alert_definition and create_alert_definition. It leaves no ambiguity about what action the tool performs.

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

Usage Guidelines5/5

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

It explicitly gives the condition for choosing this tool over delete_alert_definition: 'Use this instead of delete_alert_definition when you only want to silence a definition'. It also explains the rationale (reversible vs. irreversible), providing clear when-to-use guidance.

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. 33 tool updatesv1.10.0
    • Changedacknowledge_alert4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / alert_id / description
        Added value: +"The alert UUID to acknowledge."
      • addedInput schema / properties / confirmed / description
        Added value: +"Must be True to actually acknowledge. Default False = preview only."
      • addedInput schema / properties / target / description
        Added value: +"Aria target name from config; default when omitted."
    • Changedcancel_alert4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / alert_id / description
        Added value: +"The alert UUID to cancel."
      • addedInput schema / properties / confirmed / description
        Added value: +"Must be True to actually cancel. Default False = preview only."
      • addedInput schema / properties / target / description
        Added value: +"Aria target name from config; default when omitted."
    • Changedcreate_alert_definition8 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / adapter_kind / description
        Added value: +"Adapter kind key. Default VMWARE (vSphere adapter)."
      • addedInput schema / properties / criticality / description
        Added value: +"Alert severity: INFORMATION, WARNING, IMMEDIATE, CRITICAL."
      • addedInput schema / properties / description / description
        Added value: +"When and why this alert fires."
      • addedInput schema / properties / name / description
        Added value: +"Alert definition name (must be unique in Aria Operations)."
      • addedInput schema / properties / resource_kind / description
        Added value: +"VirtualMachine, HostSystem, ClusterComputeResource, or Datastore."
      • addedInput schema / properties / symptom_definition_ids / description
        Added value: +"Symptom definition UUIDs; any one firing triggers the alert (OR)."
      • addedInput schema / properties / target / description
        Added value: +"Aria target name from config; default when omitted."
    • Changeddelete_alert_definition4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / confirmed / description
        Added value: +"Must be True to actually delete. Default False = preview only."
      • addedInput schema / properties / definition_id / description
        Added value: +"Alert definition UUID to delete."
      • addedInput schema / properties / target / description
        Added value: +"Aria target name from config; default when omitted."
    • Changeddelete_report4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / confirmed / description
        Added value: +"Must be True to actually delete. Default False = preview only."
      • addedInput schema / properties / report_id / description
        Added value: +"The report UUID to delete (from generate_report or list_reports)."
      • addedInput schema / properties / target / description
        Added value: +"Aria target name from config; default when omitted."
    • Changedfindings_list6 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / categories / description
        Added value: +"Comma-separated category filter."
      • addedInput schema / properties / finding_types / description
        Added value: +"Comma-separated findingType filter."
      • addedInput schema / properties / limit / description
        Added value: +"Max findings to return (default 50; None returns all)."
      • addedInput schema / properties / severities / description
        Added value: +"Comma-separated severity filter, e.g. \"CRITICAL,WARNING\"."
      • addedInput schema / properties / target / description
        Added value: +"Aria/VCF Operations target name from config; default when omitted."
    • Changedfleet_certificate_list3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / limit / description
        Added value: +"Max certificates to return (default 50; None returns all)."
      • addedInput schema / properties / target / description
        Added value: +"Aria/VCF Operations target name from config; default when omitted."
    • Changedfleet_domain_list4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / integration_id / description
        Added value: +"UUID of the registered VCF integration."
      • addedInput schema / properties / limit / description
        Added value: +"Max domains to return (default 50; None returns all)."
      • addedInput schema / properties / target / description
        Added value: +"Aria/VCF Operations target name from config; default when omitted."
    • Changedfleet_password_account_list3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / limit / description
        Added value: +"Max accounts to return (default 50; None returns all)."
      • addedInput schema / properties / target / description
        Added value: +"Aria/VCF Operations target name from config; default when omitted."
    • Changedgenerate_report4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / definition_id / description
        Added value: +"Report definition (template) UUID from list_report_definitions."
      • addedInput schema / properties / resource_ids / description
        Added value: +"REQUIRED — at least one resource UUID. The Report API generates against a single root resource (first ID is used); pass a cluster/datacenter UUID to cover its children. Find IDs via list_resources."
      • addedInput schema / properties / target / description
        Added value: +"Aria target name from config; default when omitted."
    • Changedget_alert3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / alert_id / description
        Added value: +"The alert UUID (from list_alerts)."
      • addedInput schema / properties / target / description
        Added value: +"Aria target name from config; default when omitted."
    • Changedget_aria_health2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / target / description
        Added value: +"Aria target name from config; default when omitted."
    • Changedget_capacity_overview3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / cluster_id / description
        Added value: +"The cluster resource UUID (ClusterComputeResource, from list_resources)."
      • addedInput schema / properties / target / description
        Added value: +"Aria target name from config; default when omitted."
    • Changedget_remaining_capacity3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / resource_id / description
        Added value: +"The resource UUID — a ClusterComputeResource or HostSystem (from list_resources)."
      • addedInput schema / properties / target / description
        Added value: +"Aria target name from config; default when omitted."
    • Changedget_report3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / report_id / description
        Added value: +"The report UUID (from generate_report or list_reports)."
      • addedInput schema / properties / target / description
        Added value: +"Aria target name from config; default when omitted."
    • Changedget_resource3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / resource_id / description
        Added value: +"The resource UUID (from list_resources)."
      • addedInput schema / properties / target / description
        Added value: +"Aria target name from config; default when omitted."
    • Changedget_resource_health3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / resource_id / description
        Added value: +"The resource UUID."
      • addedInput schema / properties / target / description
        Added value: +"Aria target name from config; default when omitted."
    • Changedget_resource_metrics6 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / hours / description
        Added value: +"Number of hours of history to retrieve. Default 1."
      • addedInput schema / properties / metric_keys / description
        Added value: +"Metric keys to fetch, e.g. [\"cpu|usage_average\", \"mem|usage_average\", \"disk|usage_average\", \"net|usage_average\"]."
      • addedInput schema / properties / resource_id / description
        Added value: +"The resource UUID."
      • addedInput schema / properties / rollup_type / description
        Added value: +"Aggregation type: AVG, MAX, MIN, SUM, COUNT, LATEST. Default AVG."
      • addedInput schema / properties / target / description
        Added value: +"Aria target name from config; default when omitted."
    • Changedget_resource_riskbadge3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / resource_id / description
        Added value: +"The resource UUID."
      • addedInput schema / properties / target / description
        Added value: +"Aria target name from config; default when omitted."
    • Changedget_time_remaining3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / resource_id / description
        Added value: +"The resource UUID (typically ClusterComputeResource)."
      • addedInput schema / properties / target / description
        Added value: +"Aria target name from config; default when omitted."
    • Changedget_top_consumers5 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / metric_key / description
        Added value: +"Metric to rank by, e.g. cpu|usage_average, mem|usage_average, disk|usage_average."
      • addedInput schema / properties / resource_kind / description
        Added value: +"Resource kind to scope the query. Default VirtualMachine."
      • addedInput schema / properties / target / description
        Added value: +"Aria target name from config; default when omitted."
      • addedInput schema / properties / top_n / description
        Added value: +"Number of top consumers to return (max 50). Default 10."
    • Changedinvestigate_alert3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / alert_id / description
        Added value: +"The alert UUID from list_alerts (not the resource UUID)."
      • addedInput schema / properties / target / description
        Added value: +"Aria target name from config; default when omitted."
    • Changedlist_alert_definitions5 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / limit / description
        Added value: +"Page size, 1–500 (default 100). Out-of-range is rejected."
      • addedInput schema / properties / name_filter / description
        Added value: +"Substring filter on definition name (case-insensitive)."
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Definitions to skip; pass the previous response's next_offset.",
        +  "title": "Offset",
        +  "type": "integer"
        +}
      • addedInput schema / properties / target / description
        Added value: +"Aria target name from config; default when omitted."
    • Changedlist_alerts7 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / active_only / description
        Added value: +"Return only active (non-cancelled) alerts. Default True."
      • addedInput schema / properties / criticality / description
        Added value: +"Filter by criticality: INFORMATION, WARNING, IMMEDIATE, CRITICAL."
      • addedInput schema / properties / limit / description
        Added value: +"Page size, 1–500 (default 100). Out-of-range is rejected."
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Alerts to skip; pass the previous response's next_offset.",
        +  "title": "Offset",
        +  "type": "integer"
        +}
      • addedInput schema / properties / resource_id / description
        Added value: +"Scope alerts to a specific resource UUID."
      • addedInput schema / properties / target / description
        Added value: +"Aria target name from config; default when omitted."
    • Changedlist_anomalies4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / limit / description
        Added value: +"Maximum ranked rows to return (1–500). Default 50. Rejected, not clamped, when out of range."
      • addedInput schema / properties / resource_id / description
        Added value: +"Optional resource UUID to scope to a single resource."
      • addedInput schema / properties / target / description
        Added value: +"Aria target name from config; default when omitted."
    • Changedlist_collector_groups2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / target / description
        Added value: +"Aria target name from config; default when omitted."
    • Changedlist_report_definitions5 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / limit / description
        Added value: +"Page size, 1–500 (default 100). Out-of-range is rejected."
      • addedInput schema / properties / name_filter / description
        Added value: +"Substring filter on report name (case-insensitive)."
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Definitions to skip; pass the previous response's next_offset.",
        +  "title": "Offset",
        +  "type": "integer"
        +}
      • addedInput schema / properties / target / description
        Added value: +"Aria target name from config; default when omitted."
    • Changedlist_reports4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / definition_id / description
        Added value: +"Optional report definition UUID to filter results."
      • addedInput schema / properties / limit / description
        Added value: +"Max reports to return (1–200). Default 50."
      • addedInput schema / properties / target / description
        Added value: +"Aria target name from config; default when omitted."
    • Changedlist_resources5 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of results. Default 100. Paginated automatically, so a larger limit spans more than one page."
      • addedInput schema / properties / name_filter / description
        Added value: +"Substring filter on resource name (case-insensitive)."
      • addedInput schema / properties / resource_kind / description
        Added value: +"e.g. VirtualMachine, HostSystem, ClusterComputeResource, Datastore, Datacenter."
      • addedInput schema / properties / target / description
        Added value: +"Aria target name from config; default when omitted."
    • Changedlist_rightsizing_recommendations4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / limit / description
        Added value: +"Maximum VMs to evaluate when listing (1–100). Default 50."
      • addedInput schema / properties / resource_id / description
        Added value: +"Optional VM resource UUID to scope to a single VM."
      • addedInput schema / properties / target / description
        Added value: +"Aria target name from config; default when omitted."
    • Changedlist_symptom_definitions6 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / limit / description
        Added value: +"Page size, 1–500 (default 100). Out-of-range is rejected."
      • addedInput schema / properties / name_filter / description
        Added value: +"Substring filter on symptom name (case-insensitive)."
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Definitions to skip; pass the previous response's next_offset.",
        +  "title": "Offset",
        +  "type": "integer"
        +}
      • addedInput schema / properties / resource_kind / description
        Added value: +"Optional resource kind filter, e.g. VirtualMachine, HostSystem."
      • addedInput schema / properties / target / description
        Added value: +"Aria target name from config; default when omitted."
    • Changedpromql_query6 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / limit / description
        Added value: +"Max result series to return (default 50; None returns all)."
      • addedInput schema / properties / query / description
        Added value: +"PromQL expression (required), e.g. \"cpu_usage_average{}\"."
      • addedInput schema / properties / source_id / description
        Added value: +"Optional data-source id to scope the query."
      • addedInput schema / properties / target / description
        Added value: +"Aria/VCF Operations target name from config; default when omitted."
      • addedInput schema / properties / time / description
        Added value: +"Optional evaluation timestamp (RFC3339 or Unix seconds)."
    • Changedset_alert_definition_state4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / definition_id / description
        Added value: +"Alert definition UUID (from list_alert_definitions)."
      • addedInput schema / properties / enabled / description
        Added value: +"True to enable the definition, False to disable it."
      • addedInput schema / properties / target / description
        Added value: +"Aria target name from config; default when omitted."
  2. 5 tool updatesv1.8.10
    • Addedfindings_list
    • Addedfleet_certificate_list
    • Addedfleet_domain_list
    • Addedfleet_password_account_list
    • Addedpromql_query
  3. 11 tool updatesv1.8.9
    • Changedget_top_consumers1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "items": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "title": "Result",
        -      "type": "array"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "get_top_consumersOutput",
        -  "type": "object"
        -}New value: +null
    • Addedinvestigate_alert
    • Changedlist_alert_definitions1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "items": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "title": "Result",
        -      "type": "array"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "list_alert_definitionsOutput",
        -  "type": "object"
        -}New value: +null
    • Changedlist_alerts1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "items": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "title": "Result",
        -      "type": "array"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "list_alertsOutput",
        -  "type": "object"
        -}New value: +null
    • Changedlist_anomalies1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "items": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "title": "Result",
        -      "type": "array"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "list_anomaliesOutput",
        -  "type": "object"
        -}New value: +null
    • Changedlist_collector_groups1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "items": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "title": "Result",
        -      "type": "array"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "list_collector_groupsOutput",
        -  "type": "object"
        -}New value: +null
    • Changedlist_report_definitions1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "items": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "title": "Result",
        -      "type": "array"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "list_report_definitionsOutput",
        -  "type": "object"
        -}New value: +null
    • Changedlist_reports1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "items": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "title": "Result",
        -      "type": "array"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "list_reportsOutput",
        -  "type": "object"
        -}New value: +null
    • Changedlist_resources1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "items": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "title": "Result",
        -      "type": "array"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "list_resourcesOutput",
        -  "type": "object"
        -}New value: +null
    • Changedlist_rightsizing_recommendations1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "items": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "title": "Result",
        -      "type": "array"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "list_rightsizing_recommendationsOutput",
        -  "type": "object"
        -}New value: +null
    • Changedlist_symptom_definitions1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "items": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "title": "Result",
        -      "type": "array"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "list_symptom_definitionsOutput",
        -  "type": "object"
        -}New value: +null
  4. 2 tool updatesv1.5.38
    • Changeddelete_alert_definition1 field changed
      • addedInput schema / properties / confirmed
        Added value: +{
        +  "default": false,
        +  "title": "Confirmed",
        +  "type": "boolean"
        +}
    • Changeddelete_report1 field changed
      • addedInput schema / properties / confirmed
        Added value: +{
        +  "default": false,
        +  "title": "Confirmed",
        +  "type": "boolean"
        +}
  5. 27 tool updatesv1.5.29
    • Addedacknowledge_alert
    • Addedcancel_alert
    • Addedcreate_alert_definition
    • Addeddelete_alert_definition
    • Addeddelete_report
    • Addedgenerate_report
    • Addedget_alert
    • Addedget_aria_health
    • Addedget_capacity_overview
    • Addedget_remaining_capacity
    • Addedget_report
    • Addedget_resource
    • Addedget_resource_health
    • Addedget_resource_metrics
    • Addedget_resource_riskbadge
    • Addedget_time_remaining
    • Addedget_top_consumers
    • Addedlist_alert_definitions
    • Addedlist_alerts
    • Addedlist_anomalies
    • Addedlist_collector_groups
    • Addedlist_report_definitions
    • Addedlist_reports
    • Addedlist_resources
    • Addedlist_rightsizing_recommendations
    • Addedlist_symptom_definitions
    • Addedset_alert_definition_state
  6. 27 tool updatesv1.5.28
    • Removedacknowledge_alert
    • Removedcancel_alert
    • Removedcreate_alert_definition
    • Removeddelete_alert_definition
    • Removeddelete_report
    • Removedgenerate_report
    • Removedget_alert
    • Removedget_aria_health
    • Removedget_capacity_overview
    • Removedget_remaining_capacity
    • Removedget_report
    • Removedget_resource
    • Removedget_resource_health
    • Removedget_resource_metrics
    • Removedget_resource_riskbadge
    • Removedget_time_remaining
    • Removedget_top_consumers
    • Removedlist_alert_definitions
    • Removedlist_alerts
    • Removedlist_anomalies
    • Removedlist_collector_groups
    • Removedlist_report_definitions
    • Removedlist_reports
    • Removedlist_resources
    • Removedlist_rightsizing_recommendations
    • Removedlist_symptom_definitions
    • Removedset_alert_definition_state
  7. 11 tool updatesv1.5.18
    • Changedacknowledge_alert1 field changed
      • addedInput schema / properties / confirmed
        Added value: +{
        +  "default": false,
        +  "title": "Confirmed",
        +  "type": "boolean"
        +}
    • Changedcancel_alert1 field changed
      • addedInput schema / properties / confirmed
        Added value: +{
        +  "default": false,
        +  "title": "Confirmed",
        +  "type": "boolean"
        +}
    • Addedcreate_alert_definition
    • Addeddelete_alert_definition
    • Addeddelete_report
    • Addedgenerate_report
    • Addedget_report
    • Addedlist_report_definitions
    • Addedlist_reports
    • Addedlist_symptom_definitions
    • Addedset_alert_definition_state
  8. 18 tool updatesv1.3.2
    • First observedacknowledge_alert
    • First observedcancel_alert
    • First observedget_alert
    • First observedget_aria_health
    • First observedget_capacity_overview
    • First observedget_remaining_capacity
    • First observedget_resource
    • First observedget_resource_health
    • First observedget_resource_metrics
    • First observedget_resource_riskbadge
    • First observedget_time_remaining
    • First observedget_top_consumers
    • First observedlist_alert_definitions
    • First observedlist_alerts
    • First observedlist_anomalies
    • First observedlist_collector_groups
    • First observedlist_resources
    • First observedlist_rightsizing_recommendations

TDQS

A4.1/5.0

Scored across 33 tools

Disambiguation3/5

Most tools are clearly separated by domain, but several convenience layers overlap: get_resource_riskbadge is a subset of get_resource_health, which is also covered by get_resource, and the three capacity tools return overlapping data. The descriptions are detailed and try to steer selection, but an agent could still plausibly pick the wrong tool for badge or capacity requests.

Naming Consistency4/5

The dominant verb_noun pattern (list_*, get_*, create_*, delete_*) is consistent across alerts, resources, capacity, and reports. The main deviations are the inverted noun_list style in fleet_certificate_list, fleet_password_account_list, fleet_domain_list, and findings_list, plus promql_query, which breaks the verb-first convention. These are noticeable but minor relative to the overall set.

Tool Count2/5

33 tools is heavy and exceeds the 25+ threshold for too many tools. While the broad Aria Operations scope justifies some breadth, the set is inflated by redundant convenience wrappers such as get_resource_riskbadge, get_resource_health, and the three overlapping capacity tools. Consolidating those would make the surface much tighter.

Completeness3/5

Main lifecycle paths are covered: alert definitions can be created/listed/disabled/deleted, alerts can be listed/detailed/acknowledged/cancelled, and reports have generate/list/get/delete. Notable gaps include no update_alert_definition, no metric-key discovery for get_resource_metrics/get_top_consumers, and no way to discover VCF integration IDs for fleet_domain_list.

Maintenance

ActivityActive
ResponsivenessResponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers