vmware-aria
This server provides AI-assisted monitoring, capacity planning, and operational insights for VMware Aria Operations (vRealize Operations) through 18 tools covering resources, alerts, capacity, anomaly detection, and platform health.
Resource Management
List resources by kind (VMs, hosts, clusters, datastores, datacenters) with optional filtering
Get detailed resource info including health, risk, and efficiency badges
Fetch time-series metrics (CPU, memory, disk, network) with configurable time range and rollup
Get health badge scores (0–100) and identify top consumers for a given metric
Alert Management
List active alerts filtered by criticality (INFORMATION, WARNING, IMMEDIATE, CRITICAL) or resource
View full alert details including symptoms and recommendations
Acknowledge alerts (mark as seen) or cancel/dismiss them
List alert definitions (templates defining triggering conditions)
Capacity Planning
Get capacity overview and recommendations for a cluster
Determine remaining capacity (CPU, memory, disk, network) before hitting limits
Predict time until capacity exhaustion based on usage trends
Get rightsizing recommendations to fix over- or under-provisioned VMs
Anomaly Detection
List ML-detected metric anomalies for any resource
Get risk badge scores (0–100) predicting likelihood of future performance or availability issues
Platform Health
Check overall Aria Operations platform health (services and nodes)
List collector groups and member statuses to diagnose missing metrics or stale data
Provides tools for interacting with VMware Aria Operations to perform resource monitoring, alert management, capacity planning, and platform health checks.
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).
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 doctorOffline / 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-ariaCLI 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 collectorsMCP 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 legacyvmware-aria-mcpconsole script is still kept for backward compatibility. If you must useuvx --from vmware-aria vmware-aria mcp(no install) and hitinvalid peer certificate: UnknownIssuerbehind a corporate TLS proxy, setUV_NATIVE_TLS=trueor use the recommendedvmware-aria mcpform 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 abc123Tokens 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 / CapacityCompanion Skills
Skill | Scope | Tools | Install |
vmware-aiops ⭐ entry point | VM lifecycle, deployment, guest ops, clusters | 49 |
|
Read-only monitoring, alarms, events, VM info | 27 |
| |
NSX networking: segments, gateways, NAT, IPAM | 33 |
| |
DFW microsegmentation, security groups, Traceflow | 21 |
| |
AVI / NSX ALB load balancing, AKO K8s operations | 28 |
| |
Datastores, iSCSI, vSAN | 11 |
| |
Tanzu Namespaces, TKC cluster lifecycle | 20 |
| |
Compliance baselines, drift detection | 6 |
|
Security
Passwords loaded from env vars or
.envfile, never fromconfig.yamlWrite 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
REST APIs: https://developer.broadcom.com/xapis — VCF Operations API (formerly Aria Operations suite-api)
SDKs: https://developer.broadcom.com/sdks — VCF Python SDK
CLI Tools: https://developer.broadcom.com/tools — PowerCLI 9.1 includes "VCF Operations (formerly vRealize Operations Manager)" cmdlets
License
MIT — see LICENSE
Available Tools
33 toolsacknowledge_alertAIdempotent
[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.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | Aria target name from config; default when omitted. | |
| alert_id | Yes | The alert UUID to acknowledge. | |
| confirmed | No | Must be True to actually acknowledge. Default False = preview only. |
TDQS
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.
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.
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.
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.
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.
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_alertADestructive
[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.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | Aria target name from config; default when omitted. | |
| alert_id | Yes | The alert UUID to cancel. | |
| confirmed | No | Must be True to actually cancel. Default False = preview only. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Alert definition name (must be unique in Aria Operations). | |
| target | No | Aria target name from config; default when omitted. | |
| criticality | No | Alert severity: INFORMATION, WARNING, IMMEDIATE, CRITICAL. | WARNING |
| description | Yes | When and why this alert fires. | |
| adapter_kind | No | Adapter kind key. Default VMWARE (vSphere adapter). | VMWARE |
| resource_kind | Yes | VirtualMachine, HostSystem, ClusterComputeResource, or Datastore. | |
| symptom_definition_ids | Yes | Symptom definition UUIDs; any one firing triggers the alert (OR). |
TDQS
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.
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.
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.
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.
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.
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_definitionADestructive
[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.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | Aria target name from config; default when omitted. | |
| confirmed | No | Must be True to actually delete. Default False = preview only. | |
| definition_id | Yes | Alert definition UUID to delete. |
TDQS
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.
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.
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.
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.
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.
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_reportADestructive
[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.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | Aria target name from config; default when omitted. | |
| confirmed | No | Must be True to actually delete. Default False = preview only. | |
| report_id | Yes | The report UUID to delete (from generate_report or list_reports). |
TDQS
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.
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.
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.
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.
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.
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_listARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max findings to return (default 50; None returns all). | |
| target | No | Aria/VCF Operations target name from config; default when omitted. | |
| categories | No | Comma-separated category filter. | |
| severities | No | Comma-separated severity filter, e.g. "CRITICAL,WARNING". | |
| finding_types | No | Comma-separated findingType filter. |
TDQS
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.
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.
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.
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.
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.
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_listARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max certificates to return (default 50; None returns all). | |
| target | No | Aria/VCF Operations target name from config; default when omitted. |
TDQS
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.
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.
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.
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.
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.
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_listARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max domains to return (default 50; None returns all). | |
| target | No | Aria/VCF Operations target name from config; default when omitted. | |
| integration_id | Yes | UUID of the registered VCF integration. |
TDQS
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.
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.
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.
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.
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.
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_listARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max accounts to return (default 50; None returns all). | |
| target | No | Aria/VCF Operations target name from config; default when omitted. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | Aria target name from config; default when omitted. | |
| resource_ids | No | 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. | |
| definition_id | Yes | Report definition (template) UUID from list_report_definitions. |
TDQS
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.
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.
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.
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.
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.
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_alertARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | Aria target name from config; default when omitted. | |
| alert_id | Yes | The alert UUID (from list_alerts). |
TDQS
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.
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.
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.
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.
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.
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_healthARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | Aria target name from config; default when omitted. |
TDQS
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.
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.
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.
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.
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.
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_overviewARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | Aria target name from config; default when omitted. | |
| cluster_id | Yes | The cluster resource UUID (ClusterComputeResource, from list_resources). |
TDQS
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.
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.
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.
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.
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.
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_capacityARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | Aria target name from config; default when omitted. | |
| resource_id | Yes | The resource UUID — a ClusterComputeResource or HostSystem (from list_resources). |
TDQS
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.
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.
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.
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.
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.
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_reportARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | Aria target name from config; default when omitted. | |
| report_id | Yes | The report UUID (from generate_report or list_reports). |
TDQS
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.
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.
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.
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.
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.
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_resourceARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | Aria target name from config; default when omitted. | |
| resource_id | Yes | The resource UUID (from list_resources). |
TDQS
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.
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.
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.
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.
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.
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_healthARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | Aria target name from config; default when omitted. | |
| resource_id | Yes | The resource UUID. |
TDQS
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.
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.
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.
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.
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.
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_metricsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| hours | No | Number of hours of history to retrieve. Default 1. | |
| target | No | Aria target name from config; default when omitted. | |
| metric_keys | Yes | Metric keys to fetch, e.g. ["cpu|usage_average", "mem|usage_average", "disk|usage_average", "net|usage_average"]. | |
| resource_id | Yes | The resource UUID. | |
| rollup_type | No | Aggregation type: AVG, MAX, MIN, SUM, COUNT, LATEST. Default AVG. | AVG |
TDQS
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.
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.
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.
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.
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.
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_riskbadgeARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | Aria target name from config; default when omitted. | |
| resource_id | Yes | The resource UUID. |
TDQS
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.
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.
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.
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.
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.
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_remainingARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | Aria target name from config; default when omitted. | |
| resource_id | Yes | The resource UUID (typically ClusterComputeResource). |
TDQS
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.
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.
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.
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.
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.
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_consumersARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| top_n | No | Number of top consumers to return (max 50). Default 10. | |
| target | No | Aria target name from config; default when omitted. | |
| metric_key | No | Metric to rank by, e.g. cpu|usage_average, mem|usage_average, disk|usage_average. | cpu|usage_average |
| resource_kind | No | Resource kind to scope the query. Default VirtualMachine. | VirtualMachine |
TDQS
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.
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.
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.
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.
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.
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_alertARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | Aria target name from config; default when omitted. | |
| alert_id | Yes | The alert UUID from list_alerts (not the resource UUID). |
TDQS
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.
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.
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.
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.
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.
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_definitionsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size, 1–500 (default 100). Out-of-range is rejected. | |
| offset | No | Definitions to skip; pass the previous response's next_offset. | |
| target | No | Aria target name from config; default when omitted. | |
| name_filter | No | Substring filter on definition name (case-insensitive). |
TDQS
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.
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.
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.
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.
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.
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_alertsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size, 1–500 (default 100). Out-of-range is rejected. | |
| offset | No | Alerts to skip; pass the previous response's next_offset. | |
| target | No | Aria target name from config; default when omitted. | |
| active_only | No | Return only active (non-cancelled) alerts. Default True. | |
| criticality | No | Filter by criticality: INFORMATION, WARNING, IMMEDIATE, CRITICAL. | |
| resource_id | No | Scope alerts to a specific resource UUID. |
TDQS
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.
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.
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.
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.
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.
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_anomaliesARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum ranked rows to return (1–500). Default 50. Rejected, not clamped, when out of range. | |
| target | No | Aria target name from config; default when omitted. | |
| resource_id | No | Optional resource UUID to scope to a single resource. |
TDQS
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.
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.
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.
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.
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.
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_groupsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | Aria target name from config; default when omitted. |
TDQS
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.
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.
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.
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.
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.
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_definitionsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size, 1–500 (default 100). Out-of-range is rejected. | |
| offset | No | Definitions to skip; pass the previous response's next_offset. | |
| target | No | Aria target name from config; default when omitted. | |
| name_filter | No | Substring filter on report name (case-insensitive). |
TDQS
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.
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.
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.
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.
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.
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_reportsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max reports to return (1–200). Default 50. | |
| target | No | Aria target name from config; default when omitted. | |
| definition_id | No | Optional report definition UUID to filter results. |
TDQS
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.
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.
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.
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.
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.
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_resourcesARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results. Default 100. Paginated automatically, so a larger limit spans more than one page. | |
| target | No | Aria target name from config; default when omitted. | |
| name_filter | No | Substring filter on resource name (case-insensitive). | |
| resource_kind | No | e.g. VirtualMachine, HostSystem, ClusterComputeResource, Datastore, Datacenter. | VirtualMachine |
TDQS
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.
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.
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.
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.
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.
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_recommendationsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum VMs to evaluate when listing (1–100). Default 50. | |
| target | No | Aria target name from config; default when omitted. | |
| resource_id | No | Optional VM resource UUID to scope to a single VM. |
TDQS
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.
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.
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.
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.
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.
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_definitionsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size, 1–500 (default 100). Out-of-range is rejected. | |
| offset | No | Definitions to skip; pass the previous response's next_offset. | |
| target | No | Aria target name from config; default when omitted. | |
| name_filter | No | Substring filter on symptom name (case-insensitive). | |
| resource_kind | No | Optional resource kind filter, e.g. VirtualMachine, HostSystem. |
TDQS
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.
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.
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.
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.
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.
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_queryARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| time | No | Optional evaluation timestamp (RFC3339 or Unix seconds). | |
| limit | No | Max result series to return (default 50; None returns all). | |
| query | Yes | PromQL expression (required), e.g. "cpu_usage_average{}". | |
| target | No | Aria/VCF Operations target name from config; default when omitted. | |
| source_id | No | Optional data-source id to scope the query. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | Aria target name from config; default when omitted. | |
| enabled | Yes | True to enable the definition, False to disable it. | |
| definition_id | Yes | Alert definition UUID (from list_alert_definitions). |
TDQS
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.
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.
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.
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.
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.
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.
33 tool updates
v1.10.0- Changed
acknowledge_alert4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / alert_id / descriptionAdded value: +"The alert UUID to acknowledge." - added
Input schema / properties / confirmed / descriptionAdded value: +"Must be True to actually acknowledge. Default False = preview only." - added
Input schema / properties / target / descriptionAdded value: +"Aria target name from config; default when omitted."
- Changed
cancel_alert4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / alert_id / descriptionAdded value: +"The alert UUID to cancel." - added
Input schema / properties / confirmed / descriptionAdded value: +"Must be True to actually cancel. Default False = preview only." - added
Input schema / properties / target / descriptionAdded value: +"Aria target name from config; default when omitted."
- Changed
create_alert_definition8 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / adapter_kind / descriptionAdded value: +"Adapter kind key. Default VMWARE (vSphere adapter)." - added
Input schema / properties / criticality / descriptionAdded value: +"Alert severity: INFORMATION, WARNING, IMMEDIATE, CRITICAL." - added
Input schema / properties / description / descriptionAdded value: +"When and why this alert fires." - added
Input schema / properties / name / descriptionAdded value: +"Alert definition name (must be unique in Aria Operations)." - added
Input schema / properties / resource_kind / descriptionAdded value: +"VirtualMachine, HostSystem, ClusterComputeResource, or Datastore." - added
Input schema / properties / symptom_definition_ids / descriptionAdded value: +"Symptom definition UUIDs; any one firing triggers the alert (OR)." - added
Input schema / properties / target / descriptionAdded value: +"Aria target name from config; default when omitted."
- Changed
delete_alert_definition4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / confirmed / descriptionAdded value: +"Must be True to actually delete. Default False = preview only." - added
Input schema / properties / definition_id / descriptionAdded value: +"Alert definition UUID to delete." - added
Input schema / properties / target / descriptionAdded value: +"Aria target name from config; default when omitted."
- Changed
delete_report4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / confirmed / descriptionAdded value: +"Must be True to actually delete. Default False = preview only." - added
Input schema / properties / report_id / descriptionAdded value: +"The report UUID to delete (from generate_report or list_reports)." - added
Input schema / properties / target / descriptionAdded value: +"Aria target name from config; default when omitted."
- Changed
findings_list6 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / categories / descriptionAdded value: +"Comma-separated category filter." - added
Input schema / properties / finding_types / descriptionAdded value: +"Comma-separated findingType filter." - added
Input schema / properties / limit / descriptionAdded value: +"Max findings to return (default 50; None returns all)." - added
Input schema / properties / severities / descriptionAdded value: +"Comma-separated severity filter, e.g. \"CRITICAL,WARNING\"." - added
Input schema / properties / target / descriptionAdded value: +"Aria/VCF Operations target name from config; default when omitted."
- Changed
fleet_certificate_list3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / limit / descriptionAdded value: +"Max certificates to return (default 50; None returns all)." - added
Input schema / properties / target / descriptionAdded value: +"Aria/VCF Operations target name from config; default when omitted."
- Changed
fleet_domain_list4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / integration_id / descriptionAdded value: +"UUID of the registered VCF integration." - added
Input schema / properties / limit / descriptionAdded value: +"Max domains to return (default 50; None returns all)." - added
Input schema / properties / target / descriptionAdded value: +"Aria/VCF Operations target name from config; default when omitted."
- Changed
fleet_password_account_list3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / limit / descriptionAdded value: +"Max accounts to return (default 50; None returns all)." - added
Input schema / properties / target / descriptionAdded value: +"Aria/VCF Operations target name from config; default when omitted."
- Changed
generate_report4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / definition_id / descriptionAdded value: +"Report definition (template) UUID from list_report_definitions." - added
Input schema / properties / resource_ids / descriptionAdded 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." - added
Input schema / properties / target / descriptionAdded value: +"Aria target name from config; default when omitted."
- Changed
get_alert3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / alert_id / descriptionAdded value: +"The alert UUID (from list_alerts)." - added
Input schema / properties / target / descriptionAdded value: +"Aria target name from config; default when omitted."
- Changed
get_aria_health2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / target / descriptionAdded value: +"Aria target name from config; default when omitted."
- Changed
get_capacity_overview3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / cluster_id / descriptionAdded value: +"The cluster resource UUID (ClusterComputeResource, from list_resources)." - added
Input schema / properties / target / descriptionAdded value: +"Aria target name from config; default when omitted."
- Changed
get_remaining_capacity3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / resource_id / descriptionAdded value: +"The resource UUID — a ClusterComputeResource or HostSystem (from list_resources)." - added
Input schema / properties / target / descriptionAdded value: +"Aria target name from config; default when omitted."
- Changed
get_report3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / report_id / descriptionAdded value: +"The report UUID (from generate_report or list_reports)." - added
Input schema / properties / target / descriptionAdded value: +"Aria target name from config; default when omitted."
- Changed
get_resource3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / resource_id / descriptionAdded value: +"The resource UUID (from list_resources)." - added
Input schema / properties / target / descriptionAdded value: +"Aria target name from config; default when omitted."
- Changed
get_resource_health3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / resource_id / descriptionAdded value: +"The resource UUID." - added
Input schema / properties / target / descriptionAdded value: +"Aria target name from config; default when omitted."
- Changed
get_resource_metrics6 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / hours / descriptionAdded value: +"Number of hours of history to retrieve. Default 1." - added
Input schema / properties / metric_keys / descriptionAdded value: +"Metric keys to fetch, e.g. [\"cpu|usage_average\", \"mem|usage_average\", \"disk|usage_average\", \"net|usage_average\"]." - added
Input schema / properties / resource_id / descriptionAdded value: +"The resource UUID." - added
Input schema / properties / rollup_type / descriptionAdded value: +"Aggregation type: AVG, MAX, MIN, SUM, COUNT, LATEST. Default AVG." - added
Input schema / properties / target / descriptionAdded value: +"Aria target name from config; default when omitted."
- Changed
get_resource_riskbadge3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / resource_id / descriptionAdded value: +"The resource UUID." - added
Input schema / properties / target / descriptionAdded value: +"Aria target name from config; default when omitted."
- Changed
get_time_remaining3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / resource_id / descriptionAdded value: +"The resource UUID (typically ClusterComputeResource)." - added
Input schema / properties / target / descriptionAdded value: +"Aria target name from config; default when omitted."
- Changed
get_top_consumers5 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / metric_key / descriptionAdded value: +"Metric to rank by, e.g. cpu|usage_average, mem|usage_average, disk|usage_average." - added
Input schema / properties / resource_kind / descriptionAdded value: +"Resource kind to scope the query. Default VirtualMachine." - added
Input schema / properties / target / descriptionAdded value: +"Aria target name from config; default when omitted." - added
Input schema / properties / top_n / descriptionAdded value: +"Number of top consumers to return (max 50). Default 10."
- Changed
investigate_alert3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / alert_id / descriptionAdded value: +"The alert UUID from list_alerts (not the resource UUID)." - added
Input schema / properties / target / descriptionAdded value: +"Aria target name from config; default when omitted."
- Changed
list_alert_definitions5 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / limit / descriptionAdded value: +"Page size, 1–500 (default 100). Out-of-range is rejected." - added
Input schema / properties / name_filter / descriptionAdded value: +"Substring filter on definition name (case-insensitive)." - added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "description": "Definitions to skip; pass the previous response's next_offset.", + "title": "Offset", + "type": "integer" +} - added
Input schema / properties / target / descriptionAdded value: +"Aria target name from config; default when omitted."
- Changed
list_alerts7 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / active_only / descriptionAdded value: +"Return only active (non-cancelled) alerts. Default True." - added
Input schema / properties / criticality / descriptionAdded value: +"Filter by criticality: INFORMATION, WARNING, IMMEDIATE, CRITICAL." - added
Input schema / properties / limit / descriptionAdded value: +"Page size, 1–500 (default 100). Out-of-range is rejected." - added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "description": "Alerts to skip; pass the previous response's next_offset.", + "title": "Offset", + "type": "integer" +} - added
Input schema / properties / resource_id / descriptionAdded value: +"Scope alerts to a specific resource UUID." - added
Input schema / properties / target / descriptionAdded value: +"Aria target name from config; default when omitted."
- Changed
list_anomalies4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / limit / descriptionAdded value: +"Maximum ranked rows to return (1–500). Default 50. Rejected, not clamped, when out of range." - added
Input schema / properties / resource_id / descriptionAdded value: +"Optional resource UUID to scope to a single resource." - added
Input schema / properties / target / descriptionAdded value: +"Aria target name from config; default when omitted."
- Changed
list_collector_groups2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / target / descriptionAdded value: +"Aria target name from config; default when omitted."
- Changed
list_report_definitions5 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / limit / descriptionAdded value: +"Page size, 1–500 (default 100). Out-of-range is rejected." - added
Input schema / properties / name_filter / descriptionAdded value: +"Substring filter on report name (case-insensitive)." - added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "description": "Definitions to skip; pass the previous response's next_offset.", + "title": "Offset", + "type": "integer" +} - added
Input schema / properties / target / descriptionAdded value: +"Aria target name from config; default when omitted."
- Changed
list_reports4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / definition_id / descriptionAdded value: +"Optional report definition UUID to filter results." - added
Input schema / properties / limit / descriptionAdded value: +"Max reports to return (1–200). Default 50." - added
Input schema / properties / target / descriptionAdded value: +"Aria target name from config; default when omitted."
- Changed
list_resources5 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / limit / descriptionAdded value: +"Maximum number of results. Default 100. Paginated automatically, so a larger limit spans more than one page." - added
Input schema / properties / name_filter / descriptionAdded value: +"Substring filter on resource name (case-insensitive)." - added
Input schema / properties / resource_kind / descriptionAdded value: +"e.g. VirtualMachine, HostSystem, ClusterComputeResource, Datastore, Datacenter." - added
Input schema / properties / target / descriptionAdded value: +"Aria target name from config; default when omitted."
- Changed
list_rightsizing_recommendations4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / limit / descriptionAdded value: +"Maximum VMs to evaluate when listing (1–100). Default 50." - added
Input schema / properties / resource_id / descriptionAdded value: +"Optional VM resource UUID to scope to a single VM." - added
Input schema / properties / target / descriptionAdded value: +"Aria target name from config; default when omitted."
- Changed
list_symptom_definitions6 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / limit / descriptionAdded value: +"Page size, 1–500 (default 100). Out-of-range is rejected." - added
Input schema / properties / name_filter / descriptionAdded value: +"Substring filter on symptom name (case-insensitive)." - added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "description": "Definitions to skip; pass the previous response's next_offset.", + "title": "Offset", + "type": "integer" +} - added
Input schema / properties / resource_kind / descriptionAdded value: +"Optional resource kind filter, e.g. VirtualMachine, HostSystem." - added
Input schema / properties / target / descriptionAdded value: +"Aria target name from config; default when omitted."
- Changed
promql_query6 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / limit / descriptionAdded value: +"Max result series to return (default 50; None returns all)." - added
Input schema / properties / query / descriptionAdded value: +"PromQL expression (required), e.g. \"cpu_usage_average{}\"." - added
Input schema / properties / source_id / descriptionAdded value: +"Optional data-source id to scope the query." - added
Input schema / properties / target / descriptionAdded value: +"Aria/VCF Operations target name from config; default when omitted." - added
Input schema / properties / time / descriptionAdded value: +"Optional evaluation timestamp (RFC3339 or Unix seconds)."
- Changed
set_alert_definition_state4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / definition_id / descriptionAdded value: +"Alert definition UUID (from list_alert_definitions)." - added
Input schema / properties / enabled / descriptionAdded value: +"True to enable the definition, False to disable it." - added
Input schema / properties / target / descriptionAdded value: +"Aria target name from config; default when omitted."
5 tool updates
v1.8.10- Added
findings_list - Added
fleet_certificate_list - Added
fleet_domain_list - Added
fleet_password_account_list - Added
promql_query
11 tool updates
v1.8.9- Changed
get_top_consumers1 field changed- changed
Output 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
- Added
investigate_alert - Changed
list_alert_definitions1 field changed- changed
Output 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
- Changed
list_alerts1 field changed- changed
Output 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
- Changed
list_anomalies1 field changed- changed
Output 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
- Changed
list_collector_groups1 field changed- changed
Output 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
- Changed
list_report_definitions1 field changed- changed
Output 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
- Changed
list_reports1 field changed- changed
Output 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
- Changed
list_resources1 field changed- changed
Output 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
- Changed
list_rightsizing_recommendations1 field changed- changed
Output 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
- Changed
list_symptom_definitions1 field changed- changed
Output 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
2 tool updates
v1.5.38- Changed
delete_alert_definition1 field changed- added
Input schema / properties / confirmedAdded value: +{ + "default": false, + "title": "Confirmed", + "type": "boolean" +}
- Changed
delete_report1 field changed- added
Input schema / properties / confirmedAdded value: +{ + "default": false, + "title": "Confirmed", + "type": "boolean" +}
27 tool updates
v1.5.29- Added
acknowledge_alert - Added
cancel_alert - Added
create_alert_definition - Added
delete_alert_definition - Added
delete_report - Added
generate_report - Added
get_alert - Added
get_aria_health - Added
get_capacity_overview - Added
get_remaining_capacity - Added
get_report - Added
get_resource - Added
get_resource_health - Added
get_resource_metrics - Added
get_resource_riskbadge - Added
get_time_remaining - Added
get_top_consumers - Added
list_alert_definitions - Added
list_alerts - Added
list_anomalies - Added
list_collector_groups - Added
list_report_definitions - Added
list_reports - Added
list_resources - Added
list_rightsizing_recommendations - Added
list_symptom_definitions - Added
set_alert_definition_state
27 tool updates
v1.5.28- Removed
acknowledge_alert - Removed
cancel_alert - Removed
create_alert_definition - Removed
delete_alert_definition - Removed
delete_report - Removed
generate_report - Removed
get_alert - Removed
get_aria_health - Removed
get_capacity_overview - Removed
get_remaining_capacity - Removed
get_report - Removed
get_resource - Removed
get_resource_health - Removed
get_resource_metrics - Removed
get_resource_riskbadge - Removed
get_time_remaining - Removed
get_top_consumers - Removed
list_alert_definitions - Removed
list_alerts - Removed
list_anomalies - Removed
list_collector_groups - Removed
list_report_definitions - Removed
list_reports - Removed
list_resources - Removed
list_rightsizing_recommendations - Removed
list_symptom_definitions - Removed
set_alert_definition_state
11 tool updates
v1.5.18- Changed
acknowledge_alert1 field changed- added
Input schema / properties / confirmedAdded value: +{ + "default": false, + "title": "Confirmed", + "type": "boolean" +}
- Changed
cancel_alert1 field changed- added
Input schema / properties / confirmedAdded value: +{ + "default": false, + "title": "Confirmed", + "type": "boolean" +}
- Added
create_alert_definition - Added
delete_alert_definition - Added
delete_report - Added
generate_report - Added
get_report - Added
list_report_definitions - Added
list_reports - Added
list_symptom_definitions - Added
set_alert_definition_state
18 tool updates
v1.3.2- First observed
acknowledge_alert - First observed
cancel_alert - First observed
get_alert - First observed
get_aria_health - First observed
get_capacity_overview - First observed
get_remaining_capacity - First observed
get_resource - First observed
get_resource_health - First observed
get_resource_metrics - First observed
get_resource_riskbadge - First observed
get_time_remaining - First observed
get_top_consumers - First observed
list_alert_definitions - First observed
list_alerts - First observed
list_anomalies - First observed
list_collector_groups - First observed
list_resources - First observed
list_rightsizing_recommendations
TDQS
Scored across 33 tools
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.
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.
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.
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
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
FinOps MCP: query allocated, correlated cloud and AI cost across AWS, GCP, Azure and Snowflake.
- mttrlyOAuthcom.mttrly
AI-powered incident management and server monitoring via MCP.
- SpanlyOAuthcom.spanly
MCP observability. Query live traffic, errors, duration, and alerts from your AI agent.
MCP-native AI SRE: ask what's broken in production, get a reviewed GitHub fix PR.
Related MCP Servers
- AlicenseAqualityAmaintenanceAI-powered VMware vCenter/ESXi monitoring and operations. 20 MCP tools for inventory queries, health monitoring, VM lifecycle management, fast provisioning (Linked Clone, OVA, template deploy), snapshot management, and datastore browsing. Supports vSphere 6.5–8.0. Works with local models via Ollama/LM Studio.24472MIT
- AlicenseAqualityAmaintenanceAI-powered VMware vSphere with Tanzu (VKS) management. Create and manage Supervisor Namespaces and TanzuKubernetesClusters with 20 MCP tools.235MIT
- AlicenseAqualityAmaintenanceAI-powered VMware storage management for vSphere. Manage datastores, iSCSI targets, and vSAN via natural language with 11 MCP tools.123MIT
- AlicenseAqualityDmaintenanceMCP server enabling AI assistants to interact with your LogicMonitor, providing 125 tools for comprehensive monitoring and management operations.708713AGPL 3.0