Network AI Assistant
Provides tools for managing Cisco ACI data center fabrics (APIC) and Cisco NDFC (Nexus Dashboard Fabric Controller), including fabric health, tenants, EPGs, VRFs, contracts, topology, analytics, and events.
Provides tools for centralized log search with time filters and streaming, including searching logs, listing streams, and system overview.
Provides tools for managing MikroTik routers and switches via REST API and SSH, including interfaces, BGP, routing, system health, and custom commands.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Network AI AssistantShow me the health of all Cisco APIC tenants"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Network AI Assistant
Asynchronous MCP (Model Context Protocol) server for unified multi-platform network infrastructure management.
Expose network devices, WiFi controllers, monitoring systems, and data centers through a unified API accessible by Claude Desktop, Warp AI, and any MCP-compatible client.
Key Features
100% Asynchronous Architecture
Async/await engine: All I/O operations leverage
asyncio,asyncssh, andhttpxfor optimal performanceParallel execution: Native support for multi-device operations with timeout protection
Persistent sessions: Reusable HTTP connections with keepalive to minimize latency
Smart JWT caching: Thread-safe authentication token management with automatic renewal
10 Specialized Connectors
Connector | Type | MCP Tools | Description |
Generic SSH | SSH | 2 | Universal CLI access to any SSH device (Cisco, Juniper, Arista, Linux, etc.) |
MikroTik REST | REST API | 9 | Complete management via REST API (interfaces, BGP, routing, system health) |
MikroTik SSH | SSH | 2 | Specific commands unavailable in REST (route check, custom commands) |
Palo Alto SSH | SSH PTY | 2 | PAN-OS firewalls with PTY interactive sessions (VPN, routing, system) |
Palo Alto Panorama | REST API | 16 | Panorama centralized management (devices, device-groups, security rules, compliance, audit) |
Aruba WiFi | REST API | 9 | WiFi controller (APs, clients, rogues, RF, WLANs, statistics) |
Graylog | REST API | 3 | Centralized log search with time filters and streaming |
LibreNMS | REST API | 10 | Network monitoring (inventory, health, ports, sensors, events) |
Cisco APIC (ACI) | REST API | 28 | ACI data center (fabric, tenants, EPGs, VRFs, contracts, topology, analytics) |
Cisco NDFC | REST API | 14 | Nexus Dashboard Fabric Controller (fabrics, switches, networks, VRFs, events) |
Total: 97 MCP tools (95 connectors + 2 skills tools)
Related MCP server: ai-mcp-terminal
Installation
Prerequisites
Python 3.12 or higher
UV package manager
dotenvx for encrypted credentials (
brew install dotenvx/brew/dotenvx)Network access to target devices/APIs
MCP client (Claude Desktop, Warp AI, etc.)
Install with UV
# Clone the repository
git clone https://github.com/angoran/git-netai.git
cd git-netai
# Sync dependencies (UV automatically creates virtual environment)
uv sync
# Verify installation
uv run python -c "from server import mcp; print(f'{mcp.name} operational')"Configuration
Environment Variables
Create a .env file at project root with the following variables:
# Generic SSH
SSH_USERNAME="admin"
SSH_PASSWORD="your_password"
# MikroTik REST API
MIKROTIK_USERNAME="api_user"
MIKROTIK_PASSWORD="api_password"
MIKROTIK_PORT="443"
# MikroTik SSH (if different from REST)
MIKROTIK_SSH_USERNAME="ssh_user"
MIKROTIK_SSH_PASSWORD="ssh_password"
MIKROTIK_SSH_PORT="22"
# Palo Alto Firewalls
PALOALTO_SSH_USERNAME="admin"
PALOALTO_SSH_PASSWORD="firewall_password"
# Aruba WiFi Controller
ARUBA_IP="10.x.x.x"
ARUBA_USERNAME="admin"
ARUBA_PASSWORD="aruba_password"
# Graylog
GRAYLOG_API_URL="https://graylog.example.com"
GRAYLOG_USERNAME="graylog_user"
GRAYLOG_PASSWORD="graylog_password"
# LibreNMS
LIBRENMS_URL="https://librenms.example.com"
LIBRENMS_API_TOKEN="your_api_token_here"
# Cisco APIC (ACI)
APIC_HOST="https://apic.example.com"
APIC_USERNAME="apic_user"
APIC_PASSWORD="apic_password"
APIC_VERIFY_SSL="false"
APIC_TIMEOUT="30"
APIC_TOKEN_CACHE_DURATION="3540"
# Cisco NDFC
NDFC_HOST="https://ndfc.example.com"
NDFC_USER="ndfc_user"
NDFC_PASSWORD="ndfc_password"
NDFC_DOMAIN="DefaultAuth"
NDFC_VERIFY_SSL="false"
NDFC_TIMEOUT="30"
# Palo Alto Panorama
PANORAMA_URL="https://panorama.example.com/api"
PANORAMA_USERNAME="panorama_user"
PANORAMA_PASSWORD="panorama_password"
PANORAMA_TIMEOUT="30"Security Note: Credentials are stored encrypted using dotenvx. The .env file contains AES-256-GCM encrypted values. The private key is stored in .env.keys (excluded from version control). Never commit .env.keys to the repository.
Encrypting Credentials
After filling in your .env file, encrypt it with dotenvx:
# Encrypt all values in .env (generates .env.keys with the private key)
dotenvx encrypt
# Verify decryption works correctly
dotenvx run -- uv run python -c "from server import mcp; print(f'{mcp.name} operational')"Keep .env.keys secure and distribute it to other users via a secure channel (password manager, secrets vault). The encrypted .env can be safely shared or committed to version control.
MCP Client Configuration
Claude Desktop
Configuration file locations:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"netai-o": {
"command": "dotenvx",
"args": [
"run",
"--env-file", "/absolute/path/to/netai/.env",
"--",
"uv",
"--directory", "/absolute/path/to/netai",
"run",
"python",
"server.py"
],
"env": {
"DOTENV_PRIVATE_KEY": "<your-private-key-from-.env.keys>"
}
}
}
}Warp AI
Configuration file: ~/.warp/mcp_config.json
{
"mcpServers": {
"netai-o": {
"command": "dotenvx",
"args": ["run", "--", "uv", "run", "python", "server.py"],
"env": {
"DOTENV_PRIVATE_KEY": "<your-private-key-from-.env.keys>"
},
"working_directory": "/absolute/path/to/netai"
}
}
}Usage
Starting the Server
# Launch MCP server in stdio mode (with encrypted .env decryption)
dotenvx run -- uv run python server.pyThe server exposes all MCP tools via stdio protocol. MCP clients (Claude Desktop, Warp) launch the server automatically based on their configuration files.
Example Commands
The following examples demonstrate natural language commands that can be used with Claude Desktop or Warp AI:
Generic SSH Operations
Execute "show version" on device 192.168.1.1
Run "show ip route" on devices 192.168.1.1 and 192.168.1.2 in parallelMikroTik Management
Show BGP sessions on MikroTik router 10.0.0.1
Check route to 8.8.8.8 on MikroTik 10.0.0.1 via SSH
Display interface statistics for 10.0.0.1Palo Alto Firewall Operations
Show VPN status on Palo Alto firewall 10.240.203.241
Execute "show system info" on firewalls 10.240.203.241 and 10.240.203.242 in parallel
Display routing table on firewall 10.240.203.241Aruba WiFi Controller
List all access points on Aruba controller
Show connected WiFi clients
Detect rogue access points
Display RF channel utilization
Show WLAN configurationGraylog Log Management
Search for "authentication failure" in logs from the last 2 hours
List available Graylog streams
Show system overview and statisticsLibreNMS Network Monitoring
Show all monitored MikroTik devices
Display health metrics for device router-core-01
List all ports on switch-distro-01
Show temperature sensors for all devices
Retrieve event logs for the last 24 hoursCisco APIC (ACI Data Center)
Show overall ACI fabric health
List all APIC tenants
Search for endpoint with IP address 10.1.1.50
Analyze connectivity between EPG web and EPG database
Show top talkers in Production tenant
Display fabric topology
List all contracts in tenant ProductionCisco NDFC
List all NDFC fabrics
Show switches in fabric DC1
Get critical events from the last 24 hours
Show interface details for switch with serial FDO23460MQC
Display VRFs in fabric DC1
Show network deployment statusPalo Alto Panorama
Show Panorama system information
List all managed firewalls
Show device groups and their members
Analyze security rules quality for device-group Production
Find rules without security profile in device-group DMZ
Check version compliance across all firewalls
Show configuration audit logs
Find duplicate address objects
Show pending configuration changesSkills (Guided Workflows)
The recommended way to invoke a skill is to explicitly instruct the agent to load and follow it:
Load and execute the skill "infrastructure-health-check".
Follow every step of the procedure in order and produce a structured report.Use skills_list to find the most appropriate skill, then load it with skills_load
and execute it step by step.
Task: BGP sessions on router 10.0.0.1 are flapping since this morning.# Discovery and filtering
List all available skills
List skills for platform ACI
List skills tagged with "change-management"
# Monitoring and NOC
Run an infrastructure health check across all platforms
Perform a WiFi health monitoring report on the Aruba controller
Do a deep dive on device router-wan-01
# Troubleshooting
Diagnose BGP on MikroTik router 10.0.0.1
Track endpoint with IP 10.1.2.50 in the ACI fabric
Run a full ACI fabric health diagnostic
Check connectivity between device A and device B
# Compliance and Audit
Run a Panorama security audit on device-group Production
Check software version compliance and certificate expiry across all firewalls
Audit the ACI configuration for tenant Prod
# Change Management
Perform a pre-check before the maintenance window for change CHG0012345
Validate the post-change state and compare with the pre-check baseline
Detect any unauthorized configuration changes in the last 48 hours
# Inventory and Capacity
Generate a consolidated multi-vendor inventory
Map the physical network topology using LLDP discovery
Produce a capacity planning report for the infrastructure
# Incident Response
Correlate events and logs to identify the root cause of the incident
reported at 14:30 UTC — application servers cannot reach the databaseSkills are step-by-step operational procedures in Markdown. The LLM calls skills_list() to discover available procedures filtered by platform or tag, then skills_load() to retrieve the full procedure and follow it by calling the referenced MCP tools in sequence. Each skill includes a Decision Matrix, Output Standards for enterprise-grade reporting, and a Notes section with operational best practices.
Technical Architecture
Project Structure
git-netai/
├── server.py # MCP entry point (FastMCP stdio transport)
├── skills_engine.py # Skills index + loader (in-memory, YAML frontmatter)
├── connectors/ # Asynchronous connector modules
│ ├── ssh_c.py # Generic SSH connector (asyncssh)
│ ├── mikrotik_c.py # MikroTik REST API connector (httpx)
│ ├── mikrotik_ssh_c.py # MikroTik SSH connector (asyncssh)
│ ├── paloalto_c.py # Palo Alto SSH PTY connector (asyncssh)
│ ├── panorama_c.py # Palo Alto Panorama REST API connector (httpx + XML→JSON)
│ ├── aruba_c.py # Aruba WiFi REST API connector (httpx)
│ ├── graylog_c.py # Graylog REST API connector (httpx)
│ ├── librenms_c.py # LibreNMS REST API connector (httpx)
│ ├── apic_c.py # Cisco APIC REST API connector (httpx + JWT cache)
│ └── ndfc_c.py # Cisco NDFC REST API connector (httpx + JWT cache)
├── skills/ # Diagnostic skills (Markdown procedures with YAML frontmatter)
│ ├── TEMPLATE.md # Template and frontmatter reference for new skills
│ ├── bgp-diagnostic-mikrotik.md # BGP session diagnostic on MikroTik
│ ├── connectivity-check.md # End-to-end connectivity check
│ ├── multicast-diagnostic-aci.md # ACI multicast diagnostic
│ ├── infrastructure-health-check.md # Multi-platform health overview (NOC/shift handover)
│ ├── wifi-health-monitoring.md # Aruba WiFi fleet health and RF audit
│ ├── device-deep-dive.md # Deep investigation of a single device (LibreNMS)
│ ├── aci-endpoint-tracking.md # Locate and diagnose an endpoint in ACI
│ ├── aci-fabric-health-diagnostic.md # ACI fabric degradation investigation
│ ├── aci-configuration-audit.md # ACI logical config consistency audit
│ ├── aci-traffic-analysis.md # ACI top talkers and interface utilization
│ ├── panorama-security-audit.md # Firewall security rules quality audit
│ ├── compliance-versions-certificates.md # Software versions and certificate expiry check
│ ├── change-pre-check.md # Baseline capture before a planned change
│ ├── change-post-check.md # Regression validation after a change
│ ├── configuration-drift-detection.md # Unauthorized change detection (multi-source)
│ ├── multi-vendor-inventory.md # Consolidated inventory across all platforms
│ ├── network-topology-mapping.md # LLDP-based physical topology discovery
│ ├── ndfc-deployment-validation.md # NDFC network/VRF deployment validation
│ ├── incident-root-cause-correlation.md # Multi-source incident correlation and timeline
│ └── capacity-planning-report.md # Infrastructure capacity assessment
├── pyproject.toml # UV project configuration and dependencies
├── uv.lock # UV dependency lockfile
├── .env # Environment variables (not version controlled)
├── .gitignore # Git ignore rules
└── README.md # Project documentationSkills System
Skills are step-by-step diagnostic and operational procedures stored as Markdown files in skills/*.md. Each file carries a YAML frontmatter header (title, platform, tags, required tools) parsed into an in-memory index at server startup. Two dedicated MCP tools expose the system.
How it works:
The LLM calls
skills_list()to discover available skills — returns metadata only (name, title, platform, tags, description, required tools), never contentOptional filters:
skills_list(platform="mikrotik")orskills_list(tag="bgp")The LLM calls
skills_load("bgp-diagnostic-mikrotik")to retrieve the full procedure — partial and case-insensitive name matching supported; bothskill_nameandnameparameters are acceptedThe Markdown content describes each step: which MCP tool to call, expected results, and decision logic
The LLM follows the procedure autonomously, calling the referenced tools in sequence
Each skill enforces Output Standards: structured sections, professional tone, enterprise-ready reports suitable for incident tickets, audit documents, or management briefings
Creating a new skill:
Copy
skills/TEMPLATE.mdtoskills/{subject}-{platform}.mdFill in the YAML frontmatter (title, platform, tags, tools, description)
Write the procedure steps referencing existing MCP tools
Call
skills_list(reload=True)to refresh the index — no server restart needed
Frontmatter schema (required in every skill file):
---
title: BGP Diagnostic on MikroTik
platform: mikrotik # mikrotik | aruba | aci | graylog | librenms | paloalto | panorama | generic
tags: [bgp, routing, peering, sessions]
tools: [get_mikrotik_bgp_sessions, get_mikrotik_bgp_connections]
description: One-sentence description of what this skill diagnoses.
---Available skills (20):
Skill | Platform | Category | Description |
| mikrotik | Troubleshooting | BGP session diagnostic (sessions, config, routes, logs) |
| generic | Troubleshooting | End-to-end connectivity verification across devices |
| aci | Troubleshooting | ACI fabric multicast diagnostic (GIPo, bridge domains, IGMP) |
| generic | Monitoring | Multi-platform health overview for NOC/shift handover |
| aruba | Monitoring | WiFi fleet health: APs, clients, RF channels, rogue APs |
| librenms | Monitoring | Full investigation of a single device (sensors, interfaces, logs) |
| aci | Troubleshooting | Locate an endpoint in ACI fabric and diagnose connectivity |
| aci | Troubleshooting | ACI fabric degradation: faults, nodes, topology, resources |
| panorama | Compliance | Firewall security rules quality: profiles, unused rules, overrides |
| panorama | Compliance | Software version matrix and certificate expiry across fleet |
| aci | Compliance | ACI logical config consistency: tenants, VRFs, EPGs, contracts |
| generic | Change Management | Baseline capture before a planned maintenance change |
| generic | Change Management | Regression validation by comparison with pre-check baseline |
| generic | Change Management | Unauthorized change detection across Panorama, ACI, and logs |
| generic | Inventory | Consolidated inventory across all platforms (CMDB-ready) |
| generic | Inventory | LLDP-based physical topology discovery and documentation |
| aci | Capacity | ACI top talkers, interface utilization, and TCAM capacity |
| generic | Automation | NDFC network/VRF deployment status and configuration preview |
| generic | Incident Response | Multi-source timeline correlation to identify root cause |
| generic | Capacity | Infrastructure capacity assessment across all domains |
Asynchronous Design Patterns
1. Persistent HTTP Sessions
REST API connectors (Aruba, Graylog, LibreNMS) use persistent HTTP connections to minimize connection overhead:
async with httpx.AsyncClient(timeout=30) as client:
response = await client.get(url, headers=headers)
# HTTP session is automatically reused for subsequent requests2. Thread-Safe JWT Token Caching
APIC and NDFC connectors implement thread-safe JWT token caching with automatic renewal:
_token_cache = {"token": None, "expires_at": 0, "lock": asyncio.Lock()}
async def _get_token():
async with _token_cache["lock"]:
if time.time() < _token_cache["expires_at"]:
return _token_cache["token"]
# Automatic token renewal when expired
return await _authenticate()Key features:
Async lock prevents concurrent authentication requests
Configurable token expiration with safety margin
Automatic renewal on 401 responses
Zero-downtime token refresh
3. Parallel Execution with Timeout Protection
SSH connectors support parallel command execution across multiple devices:
async def send_custom_command_parallel(targets: List[Dict], timeout: int = 120):
tasks = [execute_single(target) for target in targets]
results = await asyncio.wait_for(
asyncio.gather(*tasks, return_exceptions=True),
timeout=timeout
)
return resultsBenefits:
Concurrent execution across multiple devices
Global timeout prevents indefinite hangs
Exception handling per device
Results aggregated in single response
4. PTY Interactive Sessions
Palo Alto PAN-OS requires PTY (pseudo-terminal) interactive sessions due to non-standard SSH implementation:
async with asyncssh.connect(ip, ...) as conn:
async with conn.create_process(term_type='vt100') as process:
await process.stdin.write(command + '\n')
output = await process.stdout.read()Why PTY is required:
PAN-OS CLI expects interactive terminal
Standard SSH exec channels are rejected
Terminal emulation (vt100) required for proper output formatting
5. Encrypted Credential Injection (dotenvx)
Credentials are never stored in plain text. dotenvx intercepts the process launch, decrypts the .env file (AES-256-GCM), and injects the variables into the process environment before Python starts. The application code reads os.getenv() as usual — no change required in the connectors.
dotenvx run -- uv run python server.py
│
├─ reads .env (AES-256-GCM ciphertext)
├─ reads DOTENV_PRIVATE_KEY (from .env.keys or env field in MCP config)
├─ decrypts → injects into os.environ
└─ spawns Python process
└─ connectors read os.getenv("APIC_PASSWORD") → plaintext valueKey properties:
The encrypted
.envcan be committed to version control — ciphertext onlyThe private key (
.env.keys) is the only secret to protect and distributedotenvx is external to UV — installed once per machine via Homebrew or install script
If
DOTENV_PRIVATE_KEYis missing or invalid, dotenvx logs a warning but does not block startup — connectors will fail at first network call with aNonecredential error
Key Dependencies
Library | Version | Purpose |
fastmcp | 2.13+ | MCP server framework with stdio transport |
asyncssh | 2.21+ | Asynchronous SSH client (RFC-compliant + PTY support) |
httpx | 0.28+ | Async HTTP client with connection pooling |
mcp[cli] | 1.23+ | MCP protocol implementation and CLI tools |
dotenvx (external) | 1.54+ | Encrypted |
Testing
Quick Verification
# Verify MCP server loads correctly (with encrypted .env)
dotenvx run -- uv run python -c "from server import mcp; print(f'{mcp.name} operational')"
# Test SSH connector
uv run python -c "
import asyncio
from connectors.ssh_c import send_custom_command
result = asyncio.run(send_custom_command('192.168.1.1', 'show version'))
print(result)
"
# Test REST API connector (LibreNMS)
uv run python -c "
import asyncio
from connectors.librenms_c import list_devices
result = asyncio.run(list_devices())
print(result)
"Response Format
All connector functions return a standardized dictionary structure:
{
"success": bool, # True if operation completed successfully
"output": dict|str|list, # Response data (structure varies by connector)
"error": str # Error message if success is False
}Success response example:
{
"success": True,
"output": {"hostname": "router-01", "version": "7.14.1"},
"error": None
}Error response example:
{
"success": False,
"output": None,
"error": "Connection timeout after 30 seconds"
}Security Considerations
Development vs Production
Aspect | Development Environment | Production Environment |
Credentials | Local | Secrets manager (HashiCorp Vault, AWS Secrets Manager, 1Password CLI) |
SSL Verification |
|
|
SSH Known Hosts | Disabled ( | Strict validation with maintained |
Account Permissions | Admin accounts for full access | Service accounts with minimal required privileges (least privilege principle) |
Logging | Debug logging enabled for troubleshooting | Session logs disabled to prevent credential exposure |
Network Access | Direct device access | Restricted access via bastion host/jump server with firewall rules |
Production Credential Management
Example using 1Password CLI for secure credential injection:
# Launch server — dotenvx decrypts .env at startup using the private key
dotenvx run -- uv run python server.py
# Alternative: inject private key from a secrets manager (1Password, Vault, etc.)
export DOTENV_PRIVATE_KEY=$(op read "op://Production/netai/dotenv-private-key")
dotenvx run -- uv run python server.pyAudit and Compliance
For production deployments:
Enable audit logging for all MCP tool invocations
Implement role-based access control (RBAC) at MCP client level
Rotate service account credentials regularly (90-day maximum)
Monitor for suspicious command patterns or unauthorized access attempts
Maintain audit trail of all configuration changes
Troubleshooting
Common Issues and Solutions
Issue | Diagnosis | Solution |
SSH authentication failure | Incorrect credentials or account locked | Verify |
Connection timeout | Network unreachable or firewall blocking | Verify connectivity: |
SSL/TLS certificate error | Self-signed certificate or untrusted CA | Development: Set |
JWT token expired (APIC/NDFC) | Token lifetime exceeded | Token renewal is automatic. If persistent, verify credentials and check APIC/NDFC authentication logs. |
MCP server fails to start | Missing dependencies or Python version mismatch | Check |
Palo Alto session timeout | PAN-OS aggressive session timeout | Increase |
LibreNMS API 401 error | Invalid or expired API token | Regenerate API token in LibreNMS web interface under user settings. Update |
APIC/NDFC 403 forbidden | Insufficient account permissions | Verify account has required role assignments (admin or fabric-admin for full access). |
Enabling Debug Logging
Add the following to server.py for detailed logging output:
import logging
logging.basicConfig(
level=logging.DEBUG,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)For production environments, configure logging to external syslog or SIEM:
import logging
from logging.handlers import SysLogHandler
handler = SysLogHandler(address=('syslog.example.com', 514))
logging.basicConfig(handlers=[handler], level=logging.INFO)Roadmap
Current Implementation
100% asynchronous architecture (asyncio/asyncssh/httpx)
10 connectors (SSH, MikroTik REST+SSH, Aruba, Palo Alto SSH, Panorama, Graylog, LibreNMS, APIC, NDFC)
97 exposed MCP tools (95 connectors + 2 skills tools)
Smart JWT cache with automatic renewal
Persistent HTTP sessions with keepalive
Parallel execution with timeout protection
PTY support for Palo Alto PAN-OS
Modern UV management (pyproject.toml + uv.lock)
Encrypted credential management with dotenvx (AES-256-GCM)
Panorama API integration with XML→JSON conversion
Skills system with in-memory index, YAML frontmatter, platform/tag filtering, and fuzzy name matching
20 professional skills across 7 operational categories (monitoring, troubleshooting, compliance, change management, inventory, capacity, incident response)
Enterprise Output Standards enforced in every skill (structured reports, professional tone, enterprise-ready)
Planned Enhancements
Additional Platform Support & more endpoints:
Add more LibreNMS endpoints (alerts, device groups, inventory)
Add more APIC endpoints (troubleshooting, change management)
Expand Aruba capabilities (RF analytics, heat maps)
Expand Panorama capabilities (policy push, commit operations)
Skills:
OSPF diagnostic skill (MikroTik / generic)
VPN tunnel diagnostic skill (Palo Alto)
WiFi client troubleshooting skill (Aruba)
Post-incident post-mortem report skill
License
This project is licensed under the MIT License. See the LICENSE file for complete terms and conditions.
Acknowledgments
FastMCP - High-performance MCP server framework
asyncssh - Production-grade asynchronous SSH implementation
httpx - Modern async HTTP client with HTTP/2 support
UV - Next-generation Python package manager built in Rust
Anthropic - Model Context Protocol specification and reference implementations
Support
For issues, questions, or contributions:
Issue Tracker: GitHub Issues
Discussions: GitHub Discussions
Professional network automation for enterprise environments
Available Tools
97 toolsapic_analyze_connectivityA
Perform comprehensive connectivity and health analysis of the APIC infrastructure.
Returns complete analysis including:
- APIC controller connectivity and version
- Fabric health (nodes online, critical faults)
- Capacity metrics and high-utilization nodes
- Multicast configuration summary
This is a composite function that provides an overall health check of the entire fabric.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden. It explains what the tool returns but does not mention that it is a read-only operation or any potential side effects. No contradictions exist, but behavioral traits are minimally disclosed.
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 very concise, front-loading the main purpose and using bullet points for clarity. 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 tool has no output schema, and the description only lists output categories. For a composite function, more detail on the output structure or how to interpret results would improve completeness. However, given the tool's simplicity, the current description is minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so schema coverage is 100%. The description does not need to add parameter details, and the baseline for zero parameters is 4. No additional semantics are required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs comprehensive connectivity and health analysis. It lists specific areas covered (controller connectivity, fabric health, capacity, multicast) and explicitly calls it a composite function, distinguishing it from sibling tools that focus on individual aspects.
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 indicates it's a composite function for overall health check, implying it should be used for a broad overview. However, it does not explicitly guide when to use this vs. the more specific sibling tools (e.g., apic_get_fabric_health) or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apic_analyze_pathA
Analyze network paths between two EPGs.
Args:
src_epg: Source EPG DN or name
dst_epg: Destination EPG DN or name
Returns:
- Contracts found between EPGs
- Consumer/provider relationships
- Connectivity status
Useful for troubleshooting connectivity issues and validating security policies.
| Name | Required | Description | Default |
|---|---|---|---|
| src_epg | Yes | ||
| dst_epg | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It lists return values (Contracts, relationships, connectivity status) and explains inputs. However, it does not mention whether the tool is read-only, authentication requirements, or error handling if EPGs are invalid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with clear sections for Arguments and Returns. Every sentence adds value without redundancy. It is appropriately short and front-loaded with the main purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 2 simple parameters, no output schema, and no annotations, the description provides sufficient context for basic usage. It explains inputs and expected outputs. However, it could be improved by mentioning prerequisites (e.g., EPG must exist) or typical failure modes.
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 has 0% description coverage, so the description must add meaning. It defines each parameter ('Source EPG DN or name', 'Destination EPG DN or name'), which clarifies that they expect EPG identifiers. This adds value beyond the schema's basic type and title.
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: 'Analyze network paths between two EPGs.' It specifies the resource (EPGs) and the action (analyze paths). However, it does not explicitly differentiate from the sibling tool 'apic_analyze_connectivity', which could have similar functionality.
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 includes usage context: 'Useful for troubleshooting connectivity issues and validating security policies.' However, it does not provide guidance on when not to use this tool or mention alternative tools for similar tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apic_get_audit_logsA
Retrieve audit logs of configuration changes.
Args:
hours: Number of hours back to retrieve logs (default: 24h)
Returns audit logs with user activity breakdown and configuration changes.
Limited to 50 most recent changes.
| Name | Required | Description | Default |
|---|---|---|---|
| hours | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses limit of 50 most recent changes and parameter behavior. No annotations provided, so description carries burden. Missing details on response format or rate limits, but sufficient for a read-only 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?
Short, front-loaded description with purpose first, then parameter documentation. No wasted words; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, the description provides enough context: purpose, return content, limit, and parameter. Complete for the tool's complexity.
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?
Single parameter 'hours' explained with meaning and default value. Schema had 0% coverage, so description fully compensates, adding clear semantics.
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?
Clear verb+resource: 'Retrieve audit logs of configuration changes.' Distinct from siblings like apic_get_events or apic_get_faults.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use compared to alternative tools. Implied for auditing config changes, but lacking guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apic_get_bridge_domain_multicast_by_tenantA
Retrieve multicast information for bridge domains of a specific tenant.
Args:
tenant: Tenant name to filter bridge domains
Returns multicast configuration for the tenant's bridge domains including GIPo addresses.
| Name | Required | Description | Default |
|---|---|---|---|
| tenant | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It states the tool retrieves multicast information and returns GIPo addresses, but it does not disclose permissions, idempotency, or potential side effects. The behavior is adequately described for a simple read operation, but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a clear title line, an Args list, and a Returns note. Every sentence adds value, and the structure is easily parseable by an AI agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description is largely sufficient. It explains what the tool does, its input, and what it returns. However, the lack of annotations and minimal behavioral details leave minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% coverage (no parameter descriptions), but the description's Args section adds meaning: 'tenant: Tenant name to filter bridge domains'. This clarifies the parameter's role beyond the schema, though it doesn't specify format or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Retrieve') and the resource ('multicast information for bridge domains') with a specific scope ('of a specific tenant'). This distinguishes it from siblings like 'apic_get_bridge_domains_multicast' which likely returns all bridge domains without tenant filtering.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for a specific tenant but does not explicitly state when to use this tool versus alternatives like 'apic_get_bridge_domains_multicast'. No exclusions or contextual guidance is provided, leaving the agent to infer from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apic_get_bridge_domains_multicastA
Retrieve multicast information for all bridge domains.
Returns comprehensive multicast configuration including:
- GIPo multicast addresses (bcastP) for BUM traffic
- IGMP snooping configuration
- Multicast flooding settings
- IPv6 multicast support
- Discovered IGMP groups
- Static multicast groups
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. Describes return content in detail (GIPo addresses, IGMP snooping, etc.). Implicitly read-only ('Retrieve'), but does not mention potential size or performance implications. Adequate for a simple GET.
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?
Front-loaded with main purpose; uses bullet list for return details. No extraneous words. Concise and well-structured.
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?
Comprehensive for a no-parameter tool; explains return fields. Lacks prerequisites, permissions, or error handling, but these are less critical for a simple read. Output schema absent, but description covers it.
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?
Tool has 0 parameters. Per guidelines, baseline is 4. Description adds value by listing return content beyond empty 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 clearly states it retrieves multicast information for all bridge domains. Specific verb 'Retrieve' and resource 'multicast information for all bridge domains'. Distinguishes from sibling apic_get_bridge_domain_multicast_by_tenant by 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?
Implicitly indicates use for all bridge domains; sibling tool exists for specific tenant. No explicit when-not or alternatives, but context is clear enough for agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apic_get_capacity_metricsA
Retrieve fabric capacity metrics.
Returns capacity information for each node including:
- Current usage
- Maximum capacity
- Utilization percentage
- Context information
Useful for capacity planning and resource monitoring.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must convey behavioral traits. It states what data is returned (current usage, max capacity, utilization, context) but does not disclose whether data is real-time, cached, or any access permissions needed. For a read-only tool with no parameters, the disclosure is adequate but could be more detailed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences plus a bullet list. It front-loads the main action ('Retrieve fabric capacity metrics') and provides key details without unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and no output schema, the description explains the return structure adequately. It could mention the data freshness or scope, but for a simple retrieval tool it is complete enough for an agent to understand the tool's output.
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?
There are no parameters, so schema coverage is trivially 100%. The description adds value by listing the returned fields (current usage, maximum capacity, etc.), which goes beyond the empty schema. Baseline for 0 params is 4, and the description meets that.
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 retrieves fabric capacity metrics per node, listing specific fields. While the purpose is clear, it does not explicitly distinguish from sibling tools like apic_get_resource_utilization or apic_get_cpu_utilization, though the 'fabric capacity' context provides some differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'useful for capacity planning and resource monitoring,' providing general usage context. However, it does not specify when to avoid this tool or mention alternative tools (e.g., apic_get_cpu_utilization for CPU-specific metrics).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apic_get_contractsA
Retrieve security contracts from APIC.
Args:
tenant: Optional tenant name filter. If not specified, returns contracts from all tenants.
Returns contracts with tenant, name, description, scope, priority, and DSCP settings.
| Name | Required | Description | Default |
|---|---|---|---|
| tenant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It only states the retrieval action without mentioning side effects, authentication needs, rate limits, or that it is a read-only operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (4 sentences) and front-loaded with the main purpose. 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?
For a simple tool with one optional parameter and no output schema, the description provides sufficient context—purpose, parameter usage, and return field list—making it complete for typical use.
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?
Despite 0% schema description coverage, the description adds significant meaning by explaining the tenant parameter (optional filter) and its default behavior. It also lists return fields, compensating well for the lack of schema parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves security contracts from APIC with an optional tenant filter. However, it does not differentiate from many sibling 'apic_get_*' tools that also retrieve specific resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by explaining the tenant filter behavior ('returns contracts from all tenants' if not specified) but does not explicitly state when to use this tool over alternatives or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apic_get_cpu_utilizationA
Retrieve CPU utilization for all fabric nodes.
Returns CPU usage statistics per node including average, max, and min utilization. Shows user, kernel, idle, and wait times for each node.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It describes return values but does not mention that the operation is read-only (e.g., no destructive side effects), authentication requirements, rate limits, or whether data is real-time or historical.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no extraneous information. Front-loaded with the primary action and followed by specific details, making it efficient for an AI agent to parse.
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 tool with no parameters and no output schema, the description adequately explains what the tool does and what it returns. It is missing potential details like time range or snapshot nature, but is otherwise complete for a straightforward retrieval operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, and schema description coverage is 100% (trivially). The description adds value by detailing the output fields (CPU usage statistics per node, user/kernel/idle/wait times), which goes beyond the empty 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 retrieves CPU utilization for all fabric nodes and lists specific metrics (average, max, min, user, kernel, idle, wait). The verb 'Retrieve' and resource 'CPU utilization for all fabric nodes' are unambiguous, distinguishing it from sibling tools like 'apic_get_resource_utilization'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, such as 'apic_get_resource_utilization' which may also cover CPU. No prerequisites, exclusions, or context for invocation are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apic_get_epg_endpointsA
Retrieve endpoints from a specific EPG.
Args:
tenant: Tenant name
application: Application profile name
epg: Endpoint Group name
Returns all endpoints in the EPG with MAC, IP, encapsulation, and location details.
| Name | Required | Description | Default |
|---|---|---|---|
| tenant | Yes | ||
| application | Yes | ||
| epg | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden. It details that the tool returns all endpoints with MAC, IP, encapsulation, and location, implying a read-only operation. No side effects or contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a clear purpose, argument list, and return information front-loaded. It wastes no words but could integrate the argument list more naturally.
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 covers basic purpose and return fields, but lacks context on pagination, limits, error cases, or required permissions. For a simple retrieval tool, it is minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It only lists parameter names without additional semantics like formats, allowed values, or examples. The names are self-explanatory but more detail would help.
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 retrieves endpoints from a specific EPG, using a specific verb and resource. It distinguishes from sibling tools like 'apic_get_epgs' which retrieve EPGs themselves.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as 'apic_track_endpoint' or 'apic_search_by_ip'. The description does not mention when not to use it or any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apic_get_epgsA
Retrieve Endpoint Groups (EPGs) from APIC.
Args:
tenant: Optional tenant name filter. If not specified, returns EPGs from all tenants.
Returns EPGs with tenant, application, name, description, and policy details.
| Name | Required | Description | Default |
|---|---|---|---|
| tenant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description implies a read-only operation ('Retrieve') but with no annotations, it offers no additional details on authorization, rate limits, or side effects. Adequate for a simple get tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences with no wasted words. Front-loaded with the primary purpose, followed by parameter details and return info.
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?
Reasonably complete for a simple read-only tool: it covers purpose, filter parameter, and return content. Lacks potential details like pagination, but not critical 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?
With 0% schema description coverage, the description adds essential meaning: the tenant parameter is an optional filter, and explains the default behavior when omitted.
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 retrieves Endpoint Groups (EPGs) from APIC, with a specific verb and resource. It also lists the return content, distinguishing it from siblings like apic_get_epg_endpoints.
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 clear context for the optional tenant parameter and default behavior, but does not explicitly compare to alternatives or state 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.
apic_get_eventsA
Retrieve recent events from APIC event log.
Args:
time_range: Time range in hours (default: 24h)
Returns recent events with severity breakdown, sorted by creation time.
Limited to 100 most recent events.
| Name | Required | Description | Default |
|---|---|---|---|
| time_range | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that results are limited to 100 most recent events, sorted by creation time, and include severity breakdown. With no annotations provided, this is sufficient behavioral context for a read-only retrieval tool, though it could explicitly state it has no side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at 4 lines, front-loaded with purpose, then args and return details. 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?
For a simple one-parameter tool with no output schema, the description covers the key aspects: what is returned, the limit, and sorting. It could optionally mention authentication requirements, but overall is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds essential meaning to the single parameter time_range by specifying units (hours) and default behavior (24h). Since schema coverage is 0%, this fully compensates, making the parameter clear and actionable.
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 it retrieves recent events from the APIC event log. While it distinguishes from sibling tools like apic_get_faults or apic_get_audit_logs implicitly by resource difference, it does not explicitly differentiate, which would be helpful given the many 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?
The description provides no guidance on when to use this tool versus alternatives. There is no mention of use cases, when-not-to-use, or comparisons to sibling tools such as apic_get_faults or apic_get_audit_logs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apic_get_fabric_healthA
Get ACI fabric overall health status.
Returns health summary including critical faults count, controller status, and details of the 5 most recent critical faults.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full burden for behavioral disclosure. It does not mention that the operation is read-only, any required permissions, or potential side effects. For a health retrieval tool, this is adequate but minimal.
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, front-loads the purpose, and provides specific output details without any unnecessary words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explains the return values (health summary, critical faults count, controller status, 5 most recent critical faults). It is mostly complete but could mention the overall health score or timestamp.
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?
There are zero parameters, so the schema coverage is 100% and the description naturally adds no parameter information. Baseline 4 is appropriate as no additional explanation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get ACI fabric overall health status' and lists specific outputs (critical faults count, controller status, details of 5 most recent critical faults), which distinguishes it from sibling tools like apic_get_health_scores and apic_get_faults.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool versus alternatives. It implies general use for health status but lacks when-not-to-use or alternative suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apic_get_fabric_topologyA
Retrieve ACI fabric topology with nodes and links.
Returns complete fabric topology including all nodes (controllers, leafs, spines) and fabric links between them. Useful for understanding physical connectivity.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It states what the tool returns (complete fabric topology including all nodes and links). It does not mention any side effects or destructive actions, but as a read-only retrieval, this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of two short sentences. The first sentence states the action and object, and the second provides additional detail and a usage hint. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and no output schema, the description adequately explains what it does and its purpose. It could mention the format or data structure, but for a simple retrieval tool, it is complete enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, so the description doesn't need to add parameter information. Baseline for 0 parameters is 4, and the description does not need to add anything 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 retrieves ACI fabric topology with nodes and links. It specifies the resource (fabric topology) and action (retrieve), and distinguishes itself from siblings like apic_get_fabric_health or apic_get_nodes_inventory by focusing on topology.
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 a usage hint ('Useful for understanding physical connectivity'), which implies when to use it. However, it does not explicitly mention when not to use it or provide alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apic_get_faultsA
Retrieve active faults from the Cisco APIC system.
Returns list of active faults with severity breakdown (critical, major, minor, warning, info). Faults are sorted by severity and creation time (most recent first). Limited to 50 most recent/critical faults.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and discloses key behaviors: returns severity breakdown, sorted by severity and time, limited to 50 most recent/critical faults. This is good for a read-only 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?
Three sentences with no fluff. The purpose is front-loaded in the first sentence. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description explains the return format (severity breakdown, sorted, limited). Given the tool's simplicity (no parameters), it is fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has zero parameters, so schema coverage is 100%. Description adds no parameter details but includes behavioral details about the return. Baseline for no parameters is 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 states the purpose: retrieving active faults from Cisco APIC system. It provides specific details about the return format (severity breakdown, sorted, limited to 50), distinguishing it from sibling tools like apic_get_events.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives. However, for a simple retrieval tool, context is implied. No exclusion or alternative guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apic_get_gipo_pool_configA
Retrieve GIPo (Group IP Outer) multicast pool configuration.
Returns GIPo pool configuration for bridge domains and VRFs. GIPo addresses are used for BUM (Broadcast, Unknown unicast, Multicast) traffic in the fabric.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The verbs 'Retrieve' and 'Returns' suggest a read-only operation, but the description does not explicitly state no side effects or safety profile (e.g., it is a get operation). With no annotations provided, the description carries the burden, and while acceptable, it could be more explicit about being non-destructive.
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 that are concise and front-loaded: the first sentence states the purpose, the second describes the return value, and the third provides context. No extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters and no output schema, the description adequately explains what it returns (pool configuration for bridge domains and VRFs) and provides conceptual context (BUM traffic). It could mention that it returns all pools (implicitly), but it is sufficiently complete for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema coverage is 100% by default. Per the rubric, this scores a baseline of 4. The description adds no parameter info, which is appropriate given there are none.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool retrieves GIPo multicast pool configuration and explains what GIPo is used for (BUM traffic). It distinguishes this tool from siblings like apic_get_bridge_domain_multicast_by_tenant by focusing on pool configuration rather than per-tenant multicast, but does not explicitly differentiate from all similar 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?
The description implies usage when GIPo pool config is needed, but no explicit guidance on when to use versus alternatives (e.g., vs. tools for tenant-specific multicast) or prerequisites. Usage context is hinted but not fully stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apic_get_health_scoresA
Retrieve health scores of APIC objects.
Returns health scores of monitored objects with severity classification.
Objects are classified as healthy (>=90), minor (75-89), major (50-74), or critical (<50).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It explains that the tool returns health scores with severity classification, which is informative. However, it does not state whether the operation is read-only (though implied), nor does it discuss side effects or authorization requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with three short sentences. The first sentence clearly states the purpose, the second describes the return type, and the third details the classification. No extraneous words 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?
The tool has no output schema, but the description adequately explains what is returned (health scores with severity thresholds). For a parameterless tool, this is fairly complete. However, it could clarify whether the scores are for all objects or require a filter, but since there are no parameters, the return is assumed to be comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, so the input schema is empty with 100% coverage. The description adds no parameter information, which is appropriate since none exist. According to guidelines, baseline for 0 parameters is 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 states the tool retrieves health scores of APIC objects and explains the severity classification. It is specific about the resource (APIC objects) and the action (retrieve health scores). However, it does not explicitly differentiate from similar sibling tools like apic_get_fabric_health, which may also return health-related data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as apic_get_fabric_health or apic_get_resource_utilization. There is no mention of prerequisites, limitations, or context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apic_get_interface_statisticsB
Retrieve interface statistics for specific node and/or interface.
Args:
node_id: Optional node ID filter
interface: Optional specific interface name
Returns interface statistics including operational state, speed, and usage.
Useful for monitoring interface health and performance.
| Name | Required | Description | Default |
|---|---|---|---|
| node_id | No | ||
| interface | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that it returns operational state, speed, and usage, which is somewhat informative. However, with no annotations, the description carries the full burden; it fails to mention side effects (none expected), rate limits, pagination, or behavior when no filters are given. It adds some value but is not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, using two short paragraphs to cover summary, parameters, and return value. It front-loads the main action. Could be slightly more efficient by merging the args into the first sentence, but overall it is well-structured and wastes little space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (2 optional params, no output schema), the description covers the key aspects: what it does, its parameters, and what it returns. It does not explicitly cover edge cases like missing both parameters, but for a simple retrieval tool it is adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does provide basic meaning for the two parameters (node_id as optional node ID filter, interface as optional interface name), which aligns with the schema titles. However, it doesn't add nuance like accepted formats or constraints, so it only partially compensates for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves interface statistics for a node and/or interface using a clear verb ('Retrieve') and resource ('interface statistics'). The optional filters are listed. However, it does not explicitly differentiate from sibling tools like apic_get_physical_interfaces, relying on the name for distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description only vaguely suggests it is 'useful for monitoring interface health and performance', but lacks explicit guidance on when to use this tool versus alternatives, what prerequisites exist, or when not to use it. No mention of sibling tools or scenarios is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apic_get_lldp_neighborsA
Retrieve LLDP neighbors discovered on fabric nodes.
Args:
node_id: Optional node ID filter. If not specified, returns neighbors from all nodes (limited to 50).
Returns LLDP neighbor information including remote system name, port description,
chassis ID, and management IP. Useful for understanding physical topology.
| Name | Required | Description | Default |
|---|---|---|---|
| node_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses the 50-item limit when no node_id is specified, which is a useful behavioral constraint. No annotations are provided, so the description carries the full burden. Lacks details on permissions or rate limits, but is otherwise honest.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a short paragraph with clear sections: purpose, parameter explanation, return value summary, and use case. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (one optional parameter, no output schema), the description covers the main aspects: purpose, parameter, return fields, and a usage hint. It could be more explicit about the actual data structure (e.g., list of objects), but it is sufficient for an agent to decide and invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, node_id, is explained as an optional filter; the description clarifies the default behavior (all nodes) and the limit (50). This adds significant meaning beyond the raw schema, which has no description. Schema coverage is 0%, so the description compensates well.
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?
Clearly states 'Retrieve LLDP neighbors discovered on fabric nodes.' This is a specific verb+resource combination that distinguishes it from sibling tools like apic_get_fabric_topology or apic_get_physical_interfaces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions 'Useful for understanding physical topology,' providing context for when to use. However, it does not explicitly exclude alternatives or state 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.
apic_get_nodes_inventoryA
Retrieve ACI fabric nodes inventory.
Returns complete inventory of fabric nodes including controllers, leafs, and spines. Includes node ID, name, serial number, model, role, version, IP address, and fabric status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description implies read-only via 'Retrieve' but does not explicitly state non-destructive behavior or any other traits like permissions or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. Front-loaded with action and subject.
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 no parameters, description adequately covers return fields. Missing mention of scope prerequisites, but overall sufficient.
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?
No parameters, schema coverage is 100%. Description does not add parameter info beyond schema, baseline of 3 applies per guidelines.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Retrieve' and resource 'ACI fabric nodes inventory', listing included items (node ID, name, serial, model, role, version, IP, status). Distinguishes from siblings like apic_get_fabric_topology.
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?
Purpose is clear, implying use for inventory data. Does not explicitly contrast with alternatives like apic_get_fabric_topology, but the distinct purpose provides adequate guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apic_get_physical_interfacesA
Retrieve physical interfaces from a specific node or all nodes.
Args:
node_id: Optional node ID filter. If not specified, returns interfaces from all nodes (limited to 100).
Returns list of physical interfaces with admin state, operational state, speed, usage, and MTU.
| Name | Required | Description | Default |
|---|---|---|---|
| node_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses that the tool returns a list of physical interfaces with specific fields (admin state, etc.) and notes a limit. It does not mention destructive behavior, which is appropriate for a read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: one sentence for purpose, then clear sections for args and returns. Every sentence provides essential information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity (1 optional param, no output schema, no annotations), the description covers all necessary context: what the tool does, how the parameter works, and what the response contains.
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 sole parameter node_id is fully explained: optional, acts as a filter, and default behavior when omitted (returns all nodes with a limit). This adds significant meaning beyond the empty schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves physical interfaces from a specific node or all nodes, using a specific verb and resource. It distinguishes from sibling tools which target other resources like audit logs, contracts, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies when to use the optional node_id filter and notes the default behavior and limit (100). It does not explicitly exclude alternatives or provide when-not-to-use guidance, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apic_get_resource_utilizationA
Analyze CPU and memory resource utilization across the fabric.
Returns:
- CPU utilization per node
- Memory utilization per node
- Average CPU and memory usage
- Nodes with high utilization (>80% CPU, >85% memory)
Essential for performance monitoring and capacity planning.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the data returned (CPU and memory metrics per node, averages, high utilization thresholds) but does not mention that the tool is read-only, has no side effects, or any authentication or rate limits. While the return details are useful, it lacks full behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured. It starts with a clear purpose statement, then uses bullet points for the return values, and ends with a usage context sentence. Every sentence is necessary and contributes value with zero fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and no output schema, the description provides a complete picture: what it does, what it returns (including thresholds), and why it's useful. It covers the essential information an agent needs to decide when to invoke this tool and what to expect from the output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters (schema coverage 100% trivially). Per guidelines, baseline is 4 for no params. The description adds rich meaning beyond the empty schema, specifying exactly what metrics are analyzed and returned (CPU, memory, averages, thresholds). This fully compensates for the lack of params.
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?
Clearly states that the tool analyzes CPU and memory resource utilization across the fabric. It lists specific return values (per node, averages, high utilization thresholds) and distinguishes from siblings like apic_get_cpu_utilization by covering both CPU and memory. This is a specific verb+resource combination with good differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool, stating it is 'Essential for performance monitoring and capacity planning.' However, it does not explicitly exclude cases where a more specific tool (e.g., only CPU) would be better, nor does it cite alternatives. This is good but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apic_get_tenantsA
List all tenants configured on the Cisco APIC.
Returns list of tenants with name, DN, description, and status. Tenants are sorted alphabetically by name.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It clearly states the tool returns a list of tenants with specific fields and alphabetical sorting, indicating a safe read-only operation. Does not mention potential limitations or authentication needs, but sufficient for a simple listing.
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 succinct sentences: first states purpose, second details output format. No unnecessary words. Highly efficient.
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?
No output schema exists, but description comprehensively covers return fields and sorting. For a simple list tool with no parameters, it provides complete context for agent to understand and use the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has zero parameters, so schema coverage is 100%. Description adds no parameter info, but none needed. Adequate for no-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'List' and resource 'all tenants configured on the Cisco APIC'. Specifies returned fields (name, DN, description, status) and sorting, distinguishing it from siblings like apic_get_contracts or apic_get_epgs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use versus alternatives. Usage is implied (to list all tenants), but no exclusions or context provided for sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apic_get_top_talkersA
Identify top network conversations (top talkers).
Returns the top 20 traffic generators including:
- Tenant and EPG information
- Bytes and packets transferred
- Utilization percentage
- Traffic ranking
Useful for identifying bandwidth consumers and traffic patterns.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states it returns a list of top traffic generators but does not disclose any behavioral traits (e.g., read-only nature, side effects, authentication requirements). The description is incomplete regarding tool behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (two short paragraphs), front-loaded with the primary purpose, and enumerates returned fields without superfluous content. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and no output schema, the description adequately explains what the tool does and what it returns. It covers the essential context for a simple query tool. Minor improvement would be stating it is a read-only operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so schema coverage is trivially 100%. The description does not need to add parameter information. Per rules, 0 parameters = baseline 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 states the tool identifies top network conversations and lists specific returned data (tenant/EPG, bytes, packets, utilization, ranking). Though it doesn't explicitly differentiate from sibling tools like apic_get_traffic_analysis, the verb 'identify' and resource 'top talkers' provide specific purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions it is 'useful for identifying bandwidth consumers and traffic patterns', implying usage context, but lacks explicit when-to-use or when-not-to-use guidance and does not distinguish from nearby siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apic_get_traffic_analysisB
Analyze network traffic for a tenant or EPG.
Args:
tenant: Optional tenant name to filter traffic
epg: Optional EPG name to filter traffic (requires tenant)
Returns traffic statistics including:
- Bytes average, max, and min
- Traffic data over 5-minute intervals
- Total bytes transferred
Useful for traffic monitoring and troubleshooting.
| Name | Required | Description | Default |
|---|---|---|---|
| tenant | No | ||
| epg | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It explains return values (bytes averages, intervals) but omits side effects, authentication needs, rate limits, or whether the operation is read-only.
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?
Approximately 100 words with clear sections: purpose, args, returns, use case. No repetition or fluff. Front-loaded with main purpose.
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?
Describes parameters and return values adequately given no output schema, but lacks details on pagination, limits, or error handling. Acceptable for a simple query tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description compensates by specifying that tenant is optional, epg requires tenant, and both are filters. Adds meaningful dependency info not present in 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?
Clearly states it analyzes network traffic for a tenant or EPG, using specific verbs and resource. Differentiates from siblings by focusing on traffic statistics rather than connectivity, health, or endpoint tracking.
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?
Only mentions 'Useful for traffic monitoring and troubleshooting' but provides no explicit guidance on when to use this tool versus alternatives like apic_get_top_talkers or apic_get_interface_statistics, nor does it mention when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apic_get_vrfsA
Retrieve VRFs (Virtual Routing and Forwarding instances) from APIC.
Args:
tenant: Optional tenant name filter. If not specified, returns VRFs from all tenants.
Returns VRFs with tenant, name, description, and policy control settings.
| Name | Required | Description | Default |
|---|---|---|---|
| tenant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must carry the behavioral burden. It correctly indicates a read-only retrieval without side effects, but omits potential pagination, error handling, or permission requirements. For a simple list operation, it is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded with the main action. It lists returned fields in a clear sentence. Could be slightly more structured (e.g., bullet points), but remains efficient and 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 no output schema, the description covers the key return fields (tenant, name, description, policy control settings). It lacks details on pagination, error responses, or rate limits, but for a straightforward retrieval tool, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description fully explains the tenant parameter with its default and behavior. This adds essential meaning beyond the schema's type definition.
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 'Retrieve VRFs (Virtual Routing and Forwarding instances) from APIC', clearly stating the verb and resource. It distinguishes from siblings like ndfc_get_vrfs and other apic_* tools by specifying the APIC context.
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?
Guidance on the tenant filter is explicit: 'Optional tenant name filter. If not specified, returns VRFs from all tenants.' However, it does not mention when to use this tool over similar tools from other platforms (e.g., ndfc_get_vrfs), though the APIC prefix implies the scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apic_search_by_ipA
Search APIC objects by IP address.
Args:
ip_address: IP address to search
Returns matching endpoints and subnets that contain or use this IP address.
Comprehensive search across the fabric.
| Name | Required | Description | Default |
|---|---|---|---|
| ip_address | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It states that the tool returns 'matching endpoints and subnets' and performs a 'comprehensive search across the fabric', which implies read-only behavior and broad scope. However, it does not disclose auth requirements or rate limits, which is acceptable for a simple search 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 extremely concise, using three short sentences to convey purpose, parameter, and return value. Every sentence adds value with no wasted words, and the purpose 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?
Given the tool's simplicity (one parameter, no output schema), the description adequately covers the return value and behavior. It lacks detail on error conditions or pagination, but for a straightforward search, it is complete enough for an agent to use 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?
The schema provides no description for the single parameter (ip_address), but the description in the Args section states 'IP address to search', adding semantic meaning beyond the type definition. This compensates for the 0% schema description 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 verb 'Search', resource 'APIC objects', and scope 'by IP address'. It distinguishes itself from sibling tools like apic_analyze_connectivity or apic_get_epg_endpoints by specifying a unique input (IP address) and output (endpoints and subnets).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing to find APIC objects by IP address, but does not explicitly state when to use this tool vs alternatives or provide exclusion criteria. The purpose is clear enough for basic selection, but lacks direct guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apic_test_connectionB
Test connection to Cisco APIC controller.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose behavioral traits such as side effects, authentication requirements, or idempotency. Since no annotations are provided, the description carries the full burden, and it fails to clarify whether the tool is read-only or modifies state. The term 'test' implies a safe operation, but this is not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (one sentence) and front-loaded. Every word serves a purpose, but it lacks some valuable detail. It is not verbose, but could be slightly expanded without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description should give some indication of what the tool returns (e.g., success/failure, connection status). It does not. For a connection test, the agent needs to know how to interpret the result. The description is incomplete for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema coverage is 100%. Per guidelines, baseline for 0 params is 4. The description does not need to add parameter information, but it could have explicitly noted that no arguments are required. However, this is not a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'test connection' and the resource 'Cisco APIC controller'. It is specific enough to distinguish from sibling tools, which are mostly retrieval or analysis tools. However, it could be more precise by indicating what 'test' entails (e.g., API reachability, authentication).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. For example, it could mention that this should be used before other APIC operations to verify connectivity. The description lacks any context about prerequisites or scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apic_track_endpointA
Track a specific endpoint by MAC or IP address.
Args:
mac_or_ip: MAC address (format: XX:XX:XX:XX:XX:XX or XX-XX-XX-XX-XX-XX) or IP address
Returns endpoint location including tenant, application, EPG, encapsulation, and other details.
Useful for troubleshooting connectivity issues.
| Name | Required | Description | Default |
|---|---|---|---|
| mac_or_ip | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It describes input format and return details, but does not disclose behavioral traits such as authentication needs, rate limits, or whether the operation is read-only. The description is adequate but lacks depth.
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 very concise with five sentences, front-loading the main purpose. Every sentence adds value: purpose, parameter format, return details, and use case. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity with one parameter and no output schema, the description provides enough context: what input to provide and what the output contains (tenant, application, EPG, etc.). It could mention the return format (e.g., JSON) but is otherwise complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description compensates by detailing the parameter mac_or_ip, including acceptable MAC address formats (XX:XX:XX:XX:XX:XX or XX-XX-XX-XX-XX-XX) and that IP addresses are also accepted. It does not specify IP format (e.g., IPv4 vs IPv6), which would be helpful.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'track' and the resource 'endpoint', specifying that it can be done by MAC or IP address. It distinguishes from siblings like apic_search_by_ip (which only searches by IP) and apic_get_epg_endpoints (which lists all endpoints in an EPG).
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 'Useful for troubleshooting connectivity issues,' which implies a use case but does not explicitly state when to use this tool over alternatives or when not to use it. No exclusions or alternative tools are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
aruba_custom_commandA
Execute custom show command on Aruba controller (e.g., 'show ap database').
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It only states 'Execute custom show command', which implies a read operation, but does not confirm whether it is truly read-only, require permissions, or affect state. This is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with an example. It is front-loaded and contains no fluff. Every word is necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is a generic command executor with one parameter, no output schema, and no annotations, the description is too brief. It lacks details on command scope (only show commands?), error handling, output format, and whether it supports non-show commands. This is insufficient for an agent to use reliably.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for the single parameter 'command', but the description adds meaning by stating it takes a 'custom show command' and provides an example. This compensates for the empty schema description and helps the agent understand the parameter's purpose.
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 uses verb 'Execute' and specific resource 'custom show command on Aruba controller', with example 'show ap database'. It clearly distinguishes from sibling tools that are specific get commands, as it is a generic runner for commands not covered by those 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?
The description implies this tool is for custom show commands not available as dedicated tools, but it lacks explicit guidance on when to use vs alternatives. The example 'show ap database' actually corresponds to a sibling tool, which could cause confusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
aruba_get_ap_databaseC
Get complete list of Access Points from Aruba controller.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full burden. It states 'complete list' but fails to disclose read-only nature, potential pagination, performance implications, or how the limit parameter affects behavior.
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 single sentence is extremely concise and front-loaded, containing no extraneous words. Every word 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?
Given the presence of an optional parameter and no output schema, the description should explain the limit parameter's effect and what the output contains. It only states the basic purpose, leaving significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not mention the 'limit' parameter at all. An agent receives no guidance on how to use the parameter, which is essential for controlling output.
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 retrieves a complete list of Access Points from Aruba controller. However, it does not explicitly differentiate from similar sibling tools like aruba_get_ap_stats which might provide AP statistics rather than a list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as aruba_get_ap_stats or aruba_get_rogue_aps. The description lacks context for selecting this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
aruba_get_ap_statsB
Get AP performance metrics and ARM state.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It implies a read-only operation by using 'Get,' but adds no detail about rate limits, prerequisites, or return format. The transparency is minimal but not misleading.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single focused sentence with no extraneous words. It efficiently conveys the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, so the description should hint at return structure. It mentions 'performance metrics and ARM state,' which gives some idea but lacks detail on what specific metrics or state fields are included. Adequate but not thorough.
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?
There are zero parameters, and schema coverage is trivially 100%. Per the rubric, 0 parameters baseline is 4. The description adds no parameter-level info, but none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('AP'), and specifies the data categories ('performance metrics' and 'ARM state'). It clearly distinguishes its purpose from sibling tools like aruba_get_ap_database, though it doesn't explicitly contrast with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool over alternatives, nor any prerequisites or context. It simply states what it retrieves, leaving the agent to infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
aruba_get_channelsB
Get active channel information for RF optimization.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose any behavioral traits such as side effects, permissions, or return value characteristics. It only states the action without further detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no wasted words, immediately stating the purpose. Front-loaded effectively.
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 parameterless tool, the description provides the core purpose. However, it lacks details on the source (e.g., controller, AP) or expected output format. Could be more complete given the absence of 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?
The tool has no parameters, and schema coverage is 100% trivially. The description does not add parameter meaning but that is not needed. Baseline for 0 parameters is 4, and the description is adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'active channel information', with context 'for RF optimization'. It is not a tautology and distinguishes from obvious siblings, though it could be more specific about which channels or source device.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'aruba_get_ap_stats' or 'aruba_get_clients'. There is no mention of preconditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
aruba_get_clientsC
Get list of connected WiFi clients.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only states the basic action. It does not disclose any behavioral traits such as pagination, rate limits, authentication requirements, or what constitutes a 'connected' client.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words, but it lacks key information that should be front-loaded, such as parameter effects or return format.
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 tool with one optional parameter and no output schema, the description is incomplete. It does not explain what 'connected' means, whether filtering is possible, or what the output contains. An agent would struggle to use this tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter limit is not explained in the description. With 0% schema description coverage, the description should compensate by explaining the parameter's purpose and behavior, but it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it gets a list of connected WiFi clients, which distinguishes it from sibling tools like aruba_get_ap_stats or aruba_get_channels. However, it does not specify whether this includes all clients or just currently associated ones.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives like aruba_get_ap_database or aruba_get_ap_stats. The agent has no information about selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
aruba_get_controller_infoA
Get Aruba controller system information and version.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose any behavioral traits beyond 'Get', which implies a read operation but lacks details on permissions, side effects, or return format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (6 words) and front-loaded, with no wasted words. It efficiently conveys the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and no output schema, the description is adequate but vague about what 'system information and version' includes. More detail would improve agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so schema coverage is complete; baseline of 4 applies as description adds no parameter info (none needed).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'Aruba controller system information and version', which is specific and distinguishes this tool from siblings targeting other devices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use or alternatives. However, it is implied from the name and sibling context; it's the straightforward choice for Aruba controller info.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
aruba_get_licensesB
Get license compliance information.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description implies a read operation but provides no details about authentication requirements, side effects, or data freshness. With no annotations available, the description should offer more behavioral context, such as whether the operation is safe or what happens on failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence and very concise. It is front-loaded with the key action and object. However, it could be slightly more informative (e.g., specifying compliance aspects like expiry or usage) without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and no annotations, so the description is the sole source of context. It fails to explain what 'license compliance information' entails, leaving ambiguity about whether it covers counts, expirations, or violations. Given the complexity of the tool ecosystem (many sibling tools), the description is insufficient for an agent to reliably select this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, and schema coverage is trivially 100%. The description does not need to explain parameters, but it could add value by clarifying what 'license compliance information' includes. Nevertheless, the lack of parameters means no semantic gaps exist.
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 'Get license compliance information,' which is a specific verb and resource. However, it does not differentiate from sibling tools like aruba_get_ap_stats or aruba_get_clients, which also retrieve data but for different objects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description gives no context about prerequisites, typical use cases, or situations where another tool might be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
aruba_get_rogue_apsC
Get list of unauthorized/rogue access points (Security).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description omits behavioral details such as pagination, rate limits, or whether the list is complete. Only states 'Get list' without further elaboration.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is very short, which helps conciseness, but it is too brief to adequately inform tool use. It front-loads the purpose but sacrifices necessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and low complexity, the description fails to explain return format or any caveats. It is incomplete for confident 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 0%. The parameter 'limit' is not explained in the description, despite being the only parameter. Agent receives no guidance on its semantics (e.g., default behavior, max values).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Get list of unauthorized/rogue access points' with context '(Security)'. Verb and resource are specific, and it distinguishes from siblings like aruba_get_ap_database or aruba_get_ap_stats.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. No prerequisites or context for usage are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
aruba_get_wlansC
Get WLAN/SSID profile configuration.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only says 'Get', implying a read operation, but does not confirm read-only behavior, disclose potential impacts, or mention any rate limits or authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (one short sentence). While concise, it lacks necessary detail such as what the tool returns, making it under-informative. It could be expanded slightly without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description should explain what the tool returns (e.g., list of WLANs with details). It does not. The tool is simple, but completeness suffers from lack of return value description.
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 has zero parameters, and schema description coverage is 100% (vacuously). With no params, the baseline is 4. The description adds no parameter info, which is acceptable given the absence of parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'WLAN/SSID profile configuration'. It is specific enough to distinguish from sibling tools like aruba_get_ap_stats or aruba_get_ap_database, but lacks detail on what exactly 'profile configuration' entails.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool vs. alternatives. Sibling tools exist for other Aruba data (e.g., aruba_get_ap_stats), but no context is given for selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mikrotik_bgp_connectionsC
Retrieves the BGP connection configuration.
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It only states that it retrieves configuration, but does not mention any potential side effects, permissions needed, or constraints. For a read operation, minimal transparency is provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (single sentence), but it sacrifices essential information. Conciseness is only beneficial when the description is still complete enough to guide use.
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 a single parameter with no schema description, no output schema, and no annotations, the tool description should provide more context about the identifier, return format, and differentiation from similar tools. It fails to do so.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one required parameter 'identifier' with zero description coverage. The tool description does not explain what the identifier represents (e.g., connection name, IP), leaving the agent with no clue about its meaning.
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 'Retrieves' and identifies the resource as 'BGP connection configuration', making the purpose clear. However, it fails to distinguish from the sibling tool 'get_mikrotik_bgp_sessions', which likely serves a similar but different purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'get_mikrotik_bgp_sessions'. The description does not mention context or exclusions, leaving the agent to infer usage without help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mikrotik_bgp_sessionsC
Retrieves the state of BGP sessions.
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only states a read operation but does not mention permissions, rate limits, side effects, or whether changes are made. The description is insufficient for a tool with no 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 a single sentence with no fluff, but it is too minimal to be effective. While concise, it sacrifices clarity and completeness, making it merely adequate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple parameter and no output schema, the description is incomplete. It does not specify what 'state' means (e.g., up/down), the return format, or any additional context needed for a complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one required parameter 'identifier' with no description (0% coverage). The tool description does not explain what 'identifier' refers to (e.g., device name, IP address), leaving the agent without necessary context to fill the parameter correctly.
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 it retrieves the state of BGP sessions, which is a specific verb and resource. However, it does not distinguish from the sibling tool 'get_mikrotik_bgp_connections', which may be closely related.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, when not to use it, or any prerequisites. The description lacks context for appropriate invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mikrotik_healthB
Retrieves system health (temperature, voltage).
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full burden. It discloses the returned data (temperature, voltage) but does not explicitly state read-only nature, authentication requirements, or error behavior. The purpose implies a non-destructive read, but the description lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no fluff. It efficiently states purpose and outputs. Slightly better structuring (e.g., separating parameter explanation) would improve, but it remains concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one param, no output schema, no annotations), the description is incomplete. It fails to explain the parameter, output format, or any constraints. An agent lacks sufficient information to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no meaning to the sole parameter 'identifier'. It does not specify what value to provide (e.g., IP, hostname, device ID), leaving the agent unable to correctly invoke the tool.
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 'Retrieves' and clearly identifies the resource 'system health' with concrete attributes 'temperature, voltage'. It distinguishes itself from sibling MikroTik tools that focus on other aspects like BGP, interfaces, or IP addresses.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for checking health metrics but provides no explicit guidance on when to use this tool versus alternatives, nor any context like prerequisites or post-conditions. It is minimally adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mikrotik_identityC
Retrieves the name of router.
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must carry burden. It implies a read-only operation but lacks details such as whether the router is identified by IP, name, or other means, and does not mention side effects or return format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no unnecessary words. It is front-loaded with the verb. However, it could be more informative without adding length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description should indicate return value format (e.g., a string). It does so implicitly but fails to document the parameter. For a simple tool with one parameter, it is partially complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description does not clarify the meaning of the required 'identifier' parameter. It merely says 'identifier' as a label, leaving the agent uncertain about what value to provide.
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 'Retrieves the name of router' clearly states the action (retrieves) and resource (name of router). It distinguishes itself from sibling MikroTik tools (e.g., get_mikrotik_health) by focusing on identity.
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?
Implied usage: use when you need the router's identity. No explicit guidance on when not to use or alternatives, but for a simple retrieval tool this is acceptable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mikrotik_interfacesC
Retrieves the interfaces of a MikroTik router.
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided and description lacks behavioral details such as read-only nature, authentication requirements, or rate limits. For a tool with no annotations, the description should provide more 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 very short (one sentence) with no unnecessary words, but it is too sparse and lacks essential details, making it borderline under-specified.
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 one parameter, no output schema, and no annotations, the description is incomplete. It fails to explain the parameter, return format, or error conditions, which are critical for agent 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 has one required parameter 'identifier' (string) with 0% description coverage. The description does not explain what 'identifier' refers to (e.g., IP address, hostname, ID). This is insufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Retrieves' and the resource 'interfaces of a MikroTik router'. It distinguishes this tool from sibling tools like get_mikrotik_health or get_mikrotik_identity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. No prerequisites, when-not, or conditions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mikrotik_ipaddressesC
Retrieves the configured IP addresses.
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It only states 'Retrieves the configured IP addresses' without any disclosure of read-only behavior, pagination, filtering, or error handling. This is insufficient for an agent to understand the tool's behavior.
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 very concise (one sentence), but it achieves this by omitting essential information. While there is no fluff, the brevity harms completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description should still provide context like which device's IP addresses are retrieved or if it returns all IPs from the entire MikroTik device. The current description is too minimal to be complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'identifier' has no description in the schema (0% coverage) and the tool description does not explain what it means. Without any hint, an agent cannot reliably determine whether it refers to a device name, IP address, ID, or something else.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('retrieves') and resource ('configured IP addresses'). The tool name is also clear. However, it does not explicitly differentiate from sibling tools like 'get_mikrotik_interfaces' or 'get_mikrotik_route_prefix', though the resource name is distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, limitations, or context in which this tool should be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mikrotik_logsC
Retrieves system logs (default: last 100 logs).
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description only states the action and default limit. It does not disclose behavior on invalid identifiers, whether it's read-only, or any rate limits. The description adds minimal behavioral context beyond the obvious.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the action. It is appropriately sized for a simple tool, though it could include a bit more detail without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has two parameters (one undocumented), no output schema, and no annotations, the description is insufficient. It does not explain what logs are retrieved, the format, or how to use the identifier. Compared to sibling tools, it lacks completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions the default limit (100 logs) but does not explain the required 'identifier' parameter, its format, or what it represents. With 0% schema description coverage, the description should compensate, but it only partially addresses one 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 clearly states it retrieves system logs with a default limit of 100, providing a specific verb and resource. However, it does not differentiate from sibling log tools like graylog_search_logs or librenms_get_device_eventlog, which might retrieve different log types or sources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like other log retrieval tools or more specific MikroTik tools. There is no mention of prerequisites, context, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mikrotik_route_prefixC
Query routing for a specific prefix on a MikroTik.
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes | ||
| dst_address | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose behavioral traits such as read-only nature, output format, or any side effects. With no annotations, the description fails to inform the agent about safe usage or potential impacts.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but omits critical information. It could be expanded with parameter details without becoming too verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of parameter explanations, output schema, and annotations, the description is incomplete. It does not provide enough context for an agent to correctly invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, yet the description adds no meaning to the parameters 'identifier' and 'dst_address'. It does not explain which parameter corresponds to the 'specific prefix' or what 'identifier' refers to.
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: 'Query routing for a specific prefix on a MikroTik.' It uses a specific verb and resource, but does not differentiate from sibling tools like mikrotik_ssh_route_check or get_mikrotik_bgp_sessions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description does not mention prerequisites, typical use cases, or when to avoid using it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mikrotik_routerboardC
Retrieves the hardware information from the routerboard.
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; the description only states the operation without disclosing behaviors like error handling, prerequisites (e.g., valid identifier), or read-only nature. Minimal behavioral insight.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no unnecessary words. However, it could include parameter guidance without losing conciseness.
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 but the description is too sparse. No output schema, no parameter hints, and no usage context. The agent lacks information on expected return structure or parameter format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%; the parameter 'identifier' is undefined. The description does not clarify what 'identifier' represents (e.g., device name, IP), leaving the agent unable to formulate correct input.
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 'Retrieves' and clearly identifies the resource 'hardware information from the routerboard'. Among sibling Mikrotik tools, none directly target hardware info, so it distinguishes well.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., get_mikrotik_health). No context about appropriate scenarios or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
graylog_get_streamsB
Retrieve list of available Graylog log streams.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, and the description only states the basic retrieval action. No disclosure of read-only nature, rate limits, response size, or any side effects. Minimal behavioral insight beyond the action verb.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence of 6 words, front-loaded with key verb and resource. No waste, perfectly concise for the tool's trivial interface.
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?
Adequate for a parameterless tool returning a list, but no output schema exists and the description omits details like return format, pagination, or typical use context. Leaves some ambiguity about what 'streams' are.
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?
No parameters exist, so schema coverage is effectively 100%. Description adds no additional parameter meaning, but baseline at 0 params is 4; the description does not detract.
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?
Verb 'retrieve' and resource 'list of available Graylog log streams' clearly state the action and object. No explicit differentiation from sibling tools like 'graylog_search_logs', but the purpose is unambiguous for a stream listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives (e.g., 'graylog_search_logs'). No when-not-to-use or prerequisite information provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
graylog_search_logsB
Search Graylog logs with query filter (ex: 'bgp', 'firewall'). Default: 1h, 20 results.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| hours | No | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Minimal disclosure: mentions defaults but no indication of idempotency, safety, rate limits, or other behaviors beyond what the brief description offers. Lacks depth for a tool with no 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?
Single sentence with front-loaded action, no wasted words. Highly concise.
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?
Lacks description of return values or output format, leaving the agent without key context for a search tool with no 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?
Adds example values for query and default values for hours and limit, compensating slightly for 0% schema coverage, but doesn't explain parameter format or constraints 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?
Clearly states the tool searches Graylog logs with a query filter, provides examples, and sets it apart from sibling tools like graylog_get_streams.
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?
Implies usage for log searching with a filter but does not specify when to use it vs alternatives or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
graylog_system_infoB
Retrieve Graylog system information.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only states 'retrieve', which implies a read operation, omitting details like authentication requirements, error handling, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (one sentence, four words), but it is appropriately front-loaded; however, it could include slightly more information without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of annotations and output schema, the description is too minimal; it lacks details about returned data, behavior, or usage context, making it incomplete for a simple read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the description is adequate; no additional parameter meaning is needed beyond the schema's empty state.
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 'Retrieve Graylog system information' uses a specific verb ('retrieve') and a clear resource ('Graylog system information'), differentiating it from sibling tools like graylog_get_streams and graylog_search_logs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor any conditions or prerequisites for its use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
librenms_get_device_eventlogC
Get event logs for a specific device.
| Name | Required | Description | Default |
|---|---|---|---|
| hostname | Yes | ||
| limit | No | ||
| sort_order | No | DESC |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must disclose behavioral traits. It does not mention read-only nature, authentication requirements, or any side effects. The operation appears safe, but this is not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (one sentence) with no waste. However, it could include a bit more detail without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and only a brief description, the tool is incomplete. Critical information about return structure, pagination, and parameter formats 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 has 0% description coverage, and the description adds no explanation beyond parameter names. The agent must infer that 'limit' controls result count and 'sort_order' accepts values, but no valid values or formatting are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get event logs for a specific device', using a specific verb and resource. It distinguishes itself from sibling tools like librenms_get_eventlog (which likely does not filter by device) and other device-specific 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?
No guidance is provided on when to use this tool versus alternatives such as librenms_get_eventlog. The agent receives no context for choosing between similar tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
librenms_get_device_healthC
Get device health information including all sensor types.
| Name | Required | Description | Default |
|---|---|---|---|
| hostname | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully convey behavioral traits. It only states it gets health information but does not disclose whether it is read-only, what side effects exist (likely none), or any authentication/rate-limit requirements. This is insufficient for an agent to assess safety.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded and concise. It contains no wasted words, though it could be more informative without increasing length significantly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only one required parameter, no output schema, and no annotations, the description is incomplete. It does not specify the return format, what constitutes 'health information' beyond sensor types, or any operational context (e.g., error handling, pagination).
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 has a single required parameter (hostname) with zero description coverage (schema_description_coverage=0%). The description does not explain the parameter at all, leaving the agent to infer its meaning from the name alone. This fails to compensate for the lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves device health information including all sensor types. It is a specific verb+resource combination, but it does not explicitly differentiate from sibling tools like librenms_get_device_sensors, which might be expected to provide sensor-specific data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., librenms_get_device_sensors for specific sensors, or librenms_get_device_stats for statistics). The description lacks any context about prerequisites or suitable use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
librenms_get_device_infoC
Get detailed device information by hostname.
| Name | Required | Description | Default |
|---|---|---|---|
| hostname | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must disclose behavioral traits. It only states the purpose without mentioning side effects, read-only nature, authentication requirements, or any constraints. The agent gains no insight into what happens when the tool is invoked beyond the basic operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no redundancy or extraneous information. It is concise and front-loaded, efficiently conveying the core function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of an output schema, the description should provide more context about what 'detailed device information' includes to help the agent assess suitability. It also does not address any related concepts such as error handling or usage across different device types.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description adds little value. It mentions that the tool operates 'by hostname,' which reiterates the parameter name, but offers no additional semantics such as format, examples, or constraints. The single parameter is required, but the description does not elaborate on acceptable values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (get) and the resource (detailed device information) and the method (by hostname). However, it does not distinguish from sibling tools like librenms_get_device_health or librenms_get_device_stats, which also retrieve device information but for specific aspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It lacks any contextual cues about prerequisites, typical use cases, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
librenms_get_device_portsC
Get all ports/interfaces information for a device.
| Name | Required | Description | Default |
|---|---|---|---|
| hostname | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only indicates a read operation but lacks details on return characteristics, pagination, performance impact, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, but at the cost of completeness. It could include additional useful context without losing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and simple param, the description is too brief. Missing details about return format, scope (all ports?), and any limitations.
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 single parameter 'hostname' has 0% schema description coverage and the tool description adds no meaning beyond its name. The agent gets no guidance on format or allowed values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (get), the resource (ports/interfaces), and the scope (for a device). It distinguishes from sibling tools like librenms_get_device_info or librenms_get_device_health which focus on different data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. Among many librenms tools, there is no mention of use cases, prerequisites, or comparison with similar tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
librenms_get_devices_by_osA
Get all devices running a specific OS (e.g., 'routeros', 'ios', 'linux').
| Name | Required | Description | Default |
|---|---|---|---|
| os_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears the full burden. It indicates a read operation but lacks details on permissions, rate limits, or return structure. The simplicity of the tool partially mitigates this.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with examples, front-loading the action and purpose. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 param, no output schema), the description provides enough for basic use but lacks details on return format, pagination, or potential errors.
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 only parameter, os_name, has no description in the schema (0% coverage). The description adds concrete examples of valid OS names, aiding the agent in correct invocation.
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 it gets devices filtered by OS, with examples like 'routeros', 'ios', 'linux'. It distinguishes from sibling librenms_list_devices which lists all devices without filter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (filtering by OS) but does not explicitly mention when not to use it or alternatives, though the sibling name implies differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
librenms_get_device_sensorsC
Get device sensors with optional filter (temperature, voltage, state, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| hostname | Yes | ||
| sensor_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavioral traits. It only indicates a read operation (via 'Get') and mentions the optional filter, but fails to disclose authentication requirements, error handling, rate limits, or any side effects. The lack of detail leaves agents uninformed about important behavioral aspects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 12 words, making it very concise. It front-loads the key action and resource. While it could be slightly improved by structuring the filter as a separate clause, it is efficient and to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, no output schema, no annotations), the description is too sparse. It does not explain the output format, potential error conditions, or how the sensor data is structured. An agent would need additional context to use this tool effectively, especially with no output schema to rely on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, placing the burden on the description. The description adds value by giving examples for sensor_type (temperature, voltage, state), clarifying the optional filter parameter. However, the required hostname parameter is not explicitly described beyond being implied as the device identifier. This is adequate but incomplete compensation.
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 retrieves device sensors with an optional filter, listing example sensor types. This effectively communicates the primary action and resource, distinguishing it from sibling tools like librenms_get_device_health. However, it does not explicitly differentiate from all related sibling tools, preventing a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as librenms_get_device_health or other librenms tools. The description implies usage via the filter clarification but lacks explicit when-to-use, when-not-to-use, or alternative tool references. This hinders an agent's decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
librenms_get_device_statsC
Get comprehensive device statistics (uptime, ports, availability).
| Name | Required | Description | Default |
|---|---|---|---|
| hostname | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It describes a read operation but does not disclose permissions, rate limits, side effects, or return format. The lack of behavioral detail beyond 'Get' limits transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short (one sentence) and front-loaded with examples, but it sacrifices necessary details. It is concise but incomplete, earning a middle score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one parameter, no output schema), the description should clearly define what statistics are returned. Listing only three examples is insufficient; the agent does not know the full scope of the output. The tool is not well-documented for effective 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 has one required parameter (hostname) with no description in the schema itself (schema coverage 0%). The description does not explain what hostname is, its format, or how it relates to the statistics. The agent receives no additional context beyond the parameter name.
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 comprehensive device statistics') and provides examples (uptime, ports, availability), which clearly indicates the tool's purpose. However, it could be more precise about what 'comprehensive' includes, and it does not differentiate from sibling tools like librenms_get_device_health or librenms_get_device_ports.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives such as librenms_get_device_health or librenms_get_device_ports. The description does not mention prerequisites, exclusions, or typical use cases, leaving the agent without context to choose appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
librenms_get_eventlogC
Get general event logs from LibreNMS.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| sort_order | No | DESC |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, and the description does not disclose any behavioral traits such as pagination, filtering, data freshness, or authentication requirements. It only states the basic purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (5 words) but at the cost of completeness. It is front-loaded, but does not contain enough information to be useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, no annotations, and only two poorly described parameters, the description is severely incomplete. It lacks context about event log structure, filtering capabilities, or usage examples.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description does not explain the 'limit' and 'sort_order' parameters, leaving them entirely to the schema, which lacks descriptions. The description adds no value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'general event logs' from 'LibreNMS'. It distinguishes from sibling tool librenms_get_device_eventlog by specifying 'general', which implies device-independent logs. However, it could be more precise about what 'general' means.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like librenms_get_device_eventlog. There are no hints about context or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
librenms_get_locationsA
Get all locations configured in LibreNMS.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavioral traits. It only says 'Get all locations,' omitting details such as authentication requirements, rate limits, pagination, or the structure of the response. This minimal information is insufficient for an agent to understand the full behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise and to the point. It could be improved by adding a bit more context, but it is well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (no parameters, no output schema), the description is adequate in stating what it does. However, it lacks details about the output format or any constraints, which would be helpful for an agent to fully understand the tool's output.
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?
There are no parameters (schema coverage 100%). The baseline for zero parameters is 4. The description does not add parameter information, but none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get all locations configured in LibreNMS,' using a specific verb and resource. It effectively distinguishes this tool from sibling LibreNMS tools that retrieve other entities like devices or ports.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention any prerequisites or exclusions. However, since it is a simple listing tool with no parameters, the lack of guidance is less critical but still a gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
librenms_list_devicesA
List all devices or filter by criteria (type, os, location, hostname).
| Name | Required | Description | Default |
|---|---|---|---|
| filter_type | No | ||
| filter_value | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It describes a read-only list operation with filter capabilities, but does not disclose potential side effects, rate limits, pagination, or output format. Adequate for simple listing but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with 12 words, front-loaded with the action and resource, and no waste. Perfectly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and low complexity, the description covers the essential functionality. Missing details like pagination or error handling, but adequate for a straightforward list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description compensates by listing filter criteria (type, os, location, hostname). This adds meaning to the filter_type and filter_value parameters, though it could explain usage more thoroughly.
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?
Clearly states it lists all devices or filters by criteria (type, os, location, hostname), distinguishing it from more specific sibling tools like librenms_get_devices_by_os.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives (e.g., librenms_get_devices_by_os for OS-specific queries). The description implies general listing but lacks when-not-to-use or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mikrotik_ssh_customC
Execute custom MikroTik command via SSH (for LLM flexibility).
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes | ||
| command | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description bears full responsibility. It states the tool executes commands via SSH but reveals no behavioral traits such as potential destructiveness, authentication needs, or output format. This is inadequate for safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, but it is too brief to provide sufficient information. It omits critical details that could be included without significant length increase, balancing conciseness with completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's nature (custom command execution), the lack of annotations, output schema, and parameter descriptions, the description is severely incomplete. It fails to clarify safe usage, return values, or the meaning of 'identifier', leaving the agent underinformed.
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 has 0% description coverage and the tool description adds no meaning to the parameters 'identifier' and 'command' beyond their names. The agent is left to infer what 'identifier' refers to (e.g., device IP/hostname) and what commands are acceptable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('execute custom MikroTik command via SSH') and the target resource (MikroTik device). However, it does not distinguish this from sibling tools like 'send_custom_command' which also perform custom commands on other platforms, leaving ambiguity about 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?
No guidance is provided on when to use this tool versus alternatives (e.g., specialized 'get_mikrotik_*' tools or 'send_custom_command'). No prerequisites or exclusions are mentioned, leaving the AI agent without sufficient context for correct selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mikrotik_ssh_route_checkC
Check route to destination via SSH (NOT available in REST API).
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes | ||
| destination_ip | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only states the method (via SSH) but fails to describe privileges required, potential latency, error behavior, or what happens on unreachable device.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the action and note. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and no parameter descriptions, the description is insufficient. It does not explain the tool's role among MikroTik tools, output format, or how it fits with siblings like 'get_mikrotik_route_prefix'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no meaning beyond parameter names. 'identifier' is ambiguous (could be hostname, IP, or ID), and 'destination_ip' is self-explanatory but no context is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (check route) and resource (destination), and distinguishes from REST API tools by noting 'via SSH (NOT available in REST API).' However, it does not differentiate from sibling SSH tools like 'mikrotik_ssh_custom' or 'get_mikrotik_route_prefix'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when the route check is not available via REST API, but provides no explicit guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ndfc_get_all_switchesB
Get list of all switches across all fabrics.
Returns:
Dict with list of switches including serial numbers, fabric, IP addresses, etc.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states the tool returns a dict with list of switches but does not disclose whether it is read-only, requires prior login, rate limits, or any side effects. The information is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two lines. It front-loads the purpose and avoids any extraneous information. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter tool with no output schema, the description adequately explains the return structure but is vague with 'etc.' It does not mention prerequisites like authentication or how it differs from the similar sibling 'ndfc_get_switches'. Completeness is adequate but could be improved.
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?
There are zero parameters, so the description need not explain them. However, it does add value by outlining return fields (serial numbers, fabric, IP addresses), which is helpful 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 states 'Get list of all switches across all fabrics,' which is a specific verb+resource. It implies a comprehensive scope, but it does not explicitly distinguish from the sibling 'ndfc_get_switches' or other related 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?
No guidance on when to use this tool versus alternatives. The description does not mention context, prerequisites, or exclusions such as authentication requirements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ndfc_get_deployment_historyB
Get configuration deployment history for a specific fabric.
Args:
fabric_name: Name of the fabric
Returns:
Dict with deployment history records including timestamps and status
| Name | Required | Description | Default |
|---|---|---|---|
| fabric_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It mentions 'Returns Dict' with timestamps and status but does not disclose if it is read-only, whether authentication is required, or any side effects. Minimal behavioral info.
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 very short and front-loaded with the main action. It uses a clear docstring format with Args and Returns sections. However, it is too terse and omits useful details, trading conciseness for completeness.
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 tool with one parameter and no output schema, the description provides basic return info (dict with timestamps and status) but lacks details like key names, record count limits, or history depth. Adequate but with gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description should compensate. It only repeats the parameter name with a trivial description ('Name of the fabric') which adds no meaningful detail beyond the schema title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'configuration deployment history' for a specific fabric. It is specific and differentiates from sibling tools like ndfc_get_fabrics or ndfc_get_all_switches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives, no prerequisites or exclusions. The description only states what it does, not when or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ndfc_get_event_recordsA
Get event records from Nexus Dashboard event monitoring.
This endpoint provides critical events, alarms, and system notifications.
Args:
limit: Maximum number of events to return (default: 50, max recommended: 1000)
severity: Optional filter by severity (critical, error, warning, info)
Returns:
Dict with event records including metadata and items with severity, description, timestamps, etc.
Results are automatically limited client-side if API returns more than requested.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| severity | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions client-side limiting but lacks disclosure of read-only nature, authentication requirements, rate limits, or error handling. Only one behavioral trait is noted, leaving significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a clear two-sentence purpose, followed by structured Args and Returns sections. 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?
For a simple read tool with two parameters and no output schema, the description provides sufficient details to use it: parameter ranges, filter options, and return structure. However, it could be more precise about severity filtering semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so description must compensate. It adds meaning for both parameters: limit with default and max recommended, severity with allowed values. However, it does not specify exact format or case sensitivity for severity, leaving some ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (Get), resource (event records), and source (Nexus Dashboard event monitoring). It also mentions the content (critical events, alarms, notifications), distinguishing it from sibling tools like apic_get_events which are for APIC.
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 parameter guidance (limit and severity) but does not explicitly state when to use this tool vs alternatives or when not to use it. Context is implied but no exclusions or comparisons to siblings are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ndfc_get_fabricsC
Get list of fabric configurations.
Returns:
Dict with fabrics information including fabric names, types, and status
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits but only states what the tool returns. It does not indicate that the tool is read-only, requires authentication, or has any side effects, leaving important behavioral context unclear.
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 short, consisting of one sentence and a return note, but could be more efficient by avoiding repetition of 'Returns: Dict with...'. The purpose is sufficiently front-loaded, though some phrases are redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters, no output schema, and no annotations, the description should cover prerequisites (e.g., login) and scope (e.g., all fabrics). It lacks this context, making it incomplete for an agent to reliably invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, so the description does not need to explain parameter semantics beyond what the schema provides (which is trivially 100% coverage). The description appropriately makes no false claims about parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets a list of fabric configurations and specifies the return includes fabric names, types, and status. However, it does not explicitly differentiate from sibling tools like ndfc_get_fabric_summary, which likely returns a summary rather than full configurations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as ndfc_get_fabric_summary or other NDFC tools. The description does not mention prerequisites like prior authentication via ndfc_login, leaving the agent uncertain about setup requirements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ndfc_get_fabric_summaryA
Get summary of all fabric associations (MSD fabric-member relationships).
Returns:
Dict with fabric summary and associations
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description mentions return type (Dict) but does not disclose side effects, permissions, or rate limits. Without annotations, more transparency would be beneficial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, no wasted words. Highly concise.
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?
No output schema, so description should detail return structure. Only says 'Dict with fabric summary and associations', which is minimal but adequate for a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters to describe, so description adds no extra meaning beyond the schema. Baseline for zero-parameter tools is 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?
Description clearly states the tool gets a summary of fabric associations, using specific verb and resource. It distinguishes from sibling tools like ndfc_get_fabrics and ndfc_get_switches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. For a list of similar NDFC getters, some context would help an agent decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ndfc_get_interface_detailsA
Get detailed interface information for a specific switch by serial number.
Args:
serial_number: Serial number of the switch (e.g., "FDO23460MQC")
Returns:
Dict with list of all interfaces and their details (status, VLAN, compliance, etc.)
| Name | Required | Description | Default |
|---|---|---|---|
| serial_number | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It explains the return format (dict with list of interfaces and fields like status, VLAN, compliance) but does not explicitly state it is a read-only operation, discuss permissions, rate limits, or edge cases (e.g., empty results, connectivity failures). The provided detail is adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is extremely concise: a single-sentence purpose, followed by clearly labeled 'Args' and 'Returns' sections. Every sentence adds value, no redundancy or filler. Ideal for quick parsing by an AI agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description provides a high-level overview of the return value (dict with list of interfaces and fields like status, VLAN, compliance) but omits specifics (exact field names, types, or nested structures). The single parameter is well-handled, but details on error conditions, pagination, or performance implications are missing. Adequate for a simple tool but could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the tool's description includes an 'Args' section that clarifies the parameter (serial_number) with example format. This adds significant meaning beyond the bare schema, especially since the parameter is required and the example value clarifies the expected format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool retrieves detailed interface information for a specific switch by serial number. The verb 'Get' and resource 'interface details' are specific, and the scope distinguishes it from sibling tools like ndfc_get_all_switches or ndfc_get_switches, which focus on switch inventory rather than interface-level data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., ndfc_get_network_preview, ndfc_get_network_status). The description lacks context about prerequisites, filtering capabilities, or conditions that make this tool preferable. Users must infer its niche from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ndfc_get_network_previewB
Get configuration preview for a specific network deployment.
Args:
fabric_name: Name of the fabric
network_name: Name of the network
Returns:
Dict with configuration preview for each switch showing what will be deployed
| Name | Required | Description | Default |
|---|---|---|---|
| fabric_name | Yes | ||
| network_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully convey behavioral traits. It discloses that the tool returns a configuration preview per switch, which is helpful. However, it does not mention side effects, required permissions, or whether the operation is safe/read-only. The description is somewhat transparent but leaves significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (one paragraph) and well-structured with clear sections for Args and Returns. 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?
Given the tool's simplicity (2 required string parameters, no output schema, no annotations), the description covers the essential purpose and parameters. However, it lacks information on return format details, error handling, or prerequisites, making it adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description must compensate. It lists fabric_name and network_name with brief explanations ('Name of the fabric', 'Name of the network'), adding minimal meaning beyond the schema titles. No details on allowed values, formats, or constraints are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get configuration preview for a specific network deployment.' It identifies the key parameters (fabric_name, network_name) and the output (dict with preview). While it distinguishes the general purpose from siblings like ndfc_get_networks, it does not explicitly differentiate from similar preview or network 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?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention prerequisites, constraints, or when not to use it. It simply states what the tool does without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ndfc_get_networksB
Get list of networks in a specific fabric.
Args:
fabric_name: Name of the fabric
Returns:
Dict with networks information including network names, VLANs, and configuration
| Name | Required | Description | Default |
|---|---|---|---|
| fabric_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates a read operation ('Get list'), which implies non-destructiveness, but does not explicitly state behavioral traits such as permissions, rate limits, or side effects. Since no annotations are provided, the description carries the full burden but only offers a minimal safety profile.
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 short but includes redundant 'Args:' and 'Returns:' sections that merely echo the schema. It could be more concise by integrating the parameter into a single sentence without structured formatting.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite its simplicity, the description covers the purpose, the sole parameter, and the return structure (including network names, VLANs, configuration). This provides sufficient context for a basic list tool 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?
The description restates the parameter as 'Name of the fabric,' which adds no semantic value beyond the schema's title and type. With only one parameter and no additional constraints or formatting details, the description does not enhance understanding.
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 'Get list of networks in a specific fabric,' which includes a specific verb and resource. While it distinguishes from generic siblings like ndfc_get_fabrics, it does not explicitly contrast with more specific network-related siblings such as ndfc_get_network_preview or ndfc_get_network_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description lacks any mention of context, exclusions, or prerequisites, leaving the agent to infer usage solely from the purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ndfc_get_network_statusA
Get deployment status for a specific network in a fabric.
Args:
fabric_name: Name of the fabric
network_name: Name of the network
Returns:
Dict with network status details including deployment state and errors
| Name | Required | Description | Default |
|---|---|---|---|
| fabric_name | Yes | ||
| network_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It states the return type (dict with deployment state and errors) but does not explicitly declare if the operation is read-only or has side effects. Given that it's a 'get' operation, it is likely safe, but the description could be more explicit about non-destructive behavior or any required permissions.
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 exceptionally concise: three sentences covering purpose, arguments, and return value. No fluff or redundancy. Every sentence serves a clear informational purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is a simple status check with two parameters and no output schema, the description provides a reasonable overview: it gets status for a specific network, expects fabric and network names, and returns a dict with deployment state and errors. It does not cover potential pitfalls (e.g., invalid names, connectivity issues) or required prerequisites, but overall it is sufficiently informative for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage (no property descriptions), so the description must compensate. The description adds minimal value beyond the property names: it repeats 'Name of the fabric' and 'Name of the network', which is slightly more than the schema's titles but still very generic. No format constraints, examples, or validation hints are provided. Baseline 3 is appropriate for this level of added meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('deployment status for a specific network in a fabric'). It distinguishes itself from sibling tools like ndfc_get_networks (which lists networks) and ndfc_get_deployment_history (which provides history). The purpose is specific and 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 implies usage context: use this tool to get status of a specific network. However, it gives no explicit guidance on when not to use it or what alternatives exist. For example, it does not compare with ndfc_get_network_preview or other similar tools. No examples or exclusion criteria provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ndfc_get_sitesB
Get list of NDFC sites/fabrics.
Returns:
Dict with sites information
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. However, it only states that the tool returns a dict with site information. It does not mention read-only nature, potential side effects, formatting, pagination, or any other behavioral traits.
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 very concise, consisting of two short sentences. It front-loads the purpose. However, it could be slightly more informative without sacrificing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and no output schema, the description is minimally viable. It states the return type ('Dict with sites information'), but lacks details about the structure or content of that dict. More completeness would improve the agent's understanding of what data it will receive.
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 has no parameters (empty object) and schema description coverage is 100%. There are no parameters to explain, so the description does not need to add parameter semantics. The score reflects the baseline for zero parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get list of NDFC sites/fabrics.' It uses a specific verb ('Get') and a specific resource ('list of NDFC sites/fabrics'), which distinguishes it from sibling tools like ndfc_get_fabrics or ndfc_get_switches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There is no mention of context, prerequisites, or situations where another tool would be more appropriate. The sibling tools include many 'get' tools for NDFC, but the description does not help differentiate usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ndfc_get_switchesA
Get list of switches in a specific fabric.
Args:
fabric_name: Name of the fabric
Returns:
Dict with switches information including serial numbers, IP addresses, and status
| Name | Required | Description | Default |
|---|---|---|---|
| fabric_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It clearly indicates a read operation ('Get list') and describes the return structure. However, it does not mention safety aspects like idempotency or rate limits, which are minor for a simple retrieval 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 concise with a clear docstring format (Args, Returns), front-loading the purpose. Every sentence is necessary and adds value with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one parameter and no annotations, the description covers the essential aspects: what it does, what input is required, and what the output contains (including example fields). It is sufficiently complete for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description's 'Args' section explicitly explains the single parameter 'fabric_name' as 'Name of the fabric', adding complete meaning beyond the schema's minimal definition.
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 'Get list of switches in a specific fabric', specifying the verb, resource, and context. It distinguishes from the sibling tool 'ndfc_get_all_switches' by explicitly mentioning the fabric filter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when switches from a specific fabric are needed but does not explicitly state when to use or not use this tool relative to alternatives like 'ndfc_get_all_switches'. It provides no exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ndfc_get_vrfsA
Get list of VRFs (Virtual Routing and Forwarding instances) in a specific fabric.
Args:
fabric_name: Name of the fabric
Returns:
Dict with VRFs information including VRF names and configuration
| Name | Required | Description | Default |
|---|---|---|---|
| fabric_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavior. It mentions it returns a Dict with VRF names and configuration, which hints at read-only nature. However, it does not explicitly state non-destructive behavior or any side effects, which is acceptable for a simple GET 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 short and structured with Args/Returns sections. It is efficient but could benefit from slightly more detail, such as example values or expected input format.
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 tool with one parameter and no output schema, the description is minimally complete. It states what it returns but lacks details like error handling or pagination, which are not critical here but could be improved.
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 only parameter is fabric_name, which has no schema description. The description adds 'Name of the fabric', which is minimally informative and almost redundant given the parameter title. With 0% schema coverage, the description should compensate more.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Get list), the resource (VRFs), and the context (in a specific fabric). It distinguishes from sibling NDFC tools like ndfc_get_networks by specifying VRFs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you need VRFs for a given fabric, but does not provide explicit when-not-to-use or alternatives. For a simple retrieval, this is adequate but not exemplary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ndfc_loginA
Authenticate to NDFC and obtain JWT token.
Token is valid for 3600 seconds (1 hour).
Returns:
Dict with success status and authentication information
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosure. It mentions the token validity period (3600 seconds) and the return type (dict with success/authentication info), which adds moderate behavioral insight. However, it does not disclose whether multiple successful logins are handled, or if there are side effects like session creation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with three short, clear sentences. It front-loads the core action and includes key details (token validity, return type) without unnecessary text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (zero parameters, no output schema), the description is complete. It explains the return value shape (dict with success/authentication info) and the token duration, which is sufficient for an agent to understand the tool's purpose and behavior.
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 has 0 parameters, so schema description coverage is 100%. The description adds value by explaining the token lifetime (3600 seconds), which is beyond what the schema provides. Per the baseline for 0 parameters, a score of 4 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 clearly states the tool's purpose: authenticate to NDFC and obtain a JWT token. The verb 'authenticate' and resource 'NDFC' are specific, and the sibling tools are predominantly other NDFC operations or tools from different vendors, so no ambiguity exists.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for authentication but does not provide explicit guidance on when to use it (e.g., before other NDFC tools) or mention alternatives. It assumes typical context but lacks explicit 'when to use' or 'when not to use' instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ndfc_logoutA
Logout from NDFC and clear JWT token.
Returns:
Dict with success status
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It states 'clear JWT token' but does not describe side effects, failure modes, or prerequisite state (e.g., must be logged in). Lacks some detail but is sufficient for a simple logout.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the main purpose, no unnecessary words. Highly concise and well-structured.
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 zero-parameter logout tool without output schema, the description covers purpose and result. Missing is the prerequisite of an active login session, but overall adequate for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so schema coverage is 100%. The baseline for no parameters is 4, and the description adds no parameter information beyond the schema, which is acceptable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Logout' and the resource 'NDFC', and it distinguishes itself from the sibling tool 'ndfc_login' by being the complementary 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?
No explicit guidance on when to use this tool versus alternatives; usage is implied as the counterpart to ndfc_login, but no when-not-to-use or alternative exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paloalto_send_commandA
Execute SSH command specifically on Palo Alto firewalls.
🔥 USE THIS for ALL Palo Alto firewall commands (show vpn, show system, show routing, etc.).
This tool uses PTY interactive sessions required by Palo Alto PAN-OS.
Examples:
- "show vpn gateway"
- "show system info"
- "show routing route"
| Name | Required | Description | Default |
|---|---|---|---|
| ip_address | Yes | ||
| command | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses use of PTY interactive sessions, a key behavioral trait. With no annotations, it partially fills the gap but omits details about output, errors, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences plus examples, no fluff. Front-loaded with purpose and usage. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose and usage adequately for a simple command tool, but lacks output description, error handling, or prerequisites. Given no output schema, more detail would help.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description adds context for 'command' via examples. 'ip_address' is not described, but its role as the firewall IP is implicit from the purpose.
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?
Clearly states the tool executes SSH commands on Palo Alto firewalls, with specific examples like 'show vpn gateway'. Distinguishes from siblings by specifying it's for Palo Alto and from its parallel variant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'USE THIS for ALL Palo Alto firewall commands', providing strong guidance. Mentions PTY session requirement but does not contrast with the parallel sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paloalto_send_command_parallelA
Execute SSH commands on multiple Palo Alto firewalls in parallel.
🔥 USE THIS for batch operations on multiple Palo Alto firewalls.
Args:
targets: List of {"ip": "10.240.203.241", "command": "show vpn gateway"}
timeout: Global timeout in seconds (default: 120s)
| Name | Required | Description | Default |
|---|---|---|---|
| targets | Yes | ||
| timeout | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description mentions parallel execution and timeout, which are useful behavioral traits. However, lacks details on error handling, rate limits, or partial failures. The description is minimally adequate but not rich.
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?
Extremely concise: two sentences plus argument details. Front-loaded with purpose and usage hint. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema or annotations, the description is adequate but minimal. For a parallel SSH tool, additional context about result aggregation or per-target error handling would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% coverage. Description provides example structure for 'targets' and default for 'timeout', adding significant meaning beyond schema types. Could be improved by explaining error handling or response format.
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?
Clearly states 'Execute SSH commands on multiple Palo Alto firewalls in parallel', specifying verb, resource, and mode. Differentiates from single-firewall or generic parallel command tools with explicit mention of 'batch operations' and sibling context.
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 recommends use for 'batch operations on multiple Palo Alto firewalls', implying when to use. Does not explicitly mention alternatives or when not to use, but sibling tools like paloalto_send_command and send_custom_command_parallel provide context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
panorama_audit_logsB
Get configuration audit logs (who changed what, when).
Args:
limit: Maximum number of logs to return (default: 100, max: 1000)
Returns:
Dict with total_logs count and logs list containing:
- time, admin, command, result, path
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It discloses the returned fields but does not mention read-only nature, authentication requirements, rate limits, or any side effects. Minimal behavioral context beyond basic function.
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?
Extremely concise with a clear structure: summary line, args, returns. No wasted words, and information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool (one param, no output schema), the description covers core functionality and return format. Minor gap: no mention of ordering or pagination behavior beyond the limit parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains the 'limit' parameter with default and max values, adding significant meaning beyond the schema (which lacks descriptions). Since schema coverage is 0%, this compensation is strong.
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?
Clear verb (Get) and resource (configuration audit logs) with a succinct description of content (who changed what, when). However, it does not explicitly distinguish from sibling tools like panorama_config_diff or panorama_custom_command, though the resource is specific enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. The description only states what it does without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
panorama_config_diffA
Get pending configuration changes (candidate vs running config).
Returns:
Dict with has_pending_changes boolean, diff_summary, and diff_content
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the return type and fields, but does not mention read-only nature, authentication requirements, or any side effects. Adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. Front-loaded with the action and result structure. Highly concise and structured.
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 no parameters and no output schema, the description covers what it does and what it returns. It could mention Panorama context explicitly, but overall is complete enough.
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?
No parameters exist; schema coverage is 100% (empty). The description correctly adds no parameter info as none are needed. Baseline 4 for zero parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves pending configuration changes by comparing candidate and running configs, which is specific and distinguishes it from sibling tools like panorama_audit_logs or panorama_security_rules_analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. It implies usage for checking configuration diffs, but lacks criteria for choosing this over other panorama tools or mentioning when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
panorama_custom_commandB
Execute custom operational command on Panorama.
Args:
cmd: XML command (e.g., "<show><system><info></info></system></show>")
Returns:
Dict with command execution results in JSON format
| Name | Required | Description | Default |
|---|---|---|---|
| cmd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It states that the tool executes commands and returns JSON, but it fails to mention potential side effects, required privileges, or the fact that the tool can be used for destructive operations. This is a critical gap for a command execution 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 concise with no unnecessary words. It follows a clear structure: purpose, args with example, returns. Every sentence adds value, and there is no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's capability to execute arbitrary commands on Panorama, the description is incomplete. It does not cover the output structure beyond 'JSON format', nor does it address safety, authentication, or the range of possible commands. With no output schema and no annotations, more detail is expected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has a single required parameter with 0% description coverage. The description compensates by providing an example XML command and indicating the format. This adds meaningful context beyond the raw parameter name, making it clear what constitutes valid input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Execute') and the resource ('custom operational command on Panorama'). The name and context distinguish it from similar sibling tools like 'paloalto_send_command' by specifying Panorama. However, it does not explicitly differentiate from other Panorama-specific tools, which would elevate the score to 5.
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?
There is no guidance on when to use this tool versus alternatives. It does not specify prerequisites, restrictions, or conditions. For a powerful tool that can execute arbitrary commands, this lack of context leaves the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
panorama_device_groupsA
Get list of Device-Groups and their member firewalls.
Returns:
Dict with total_device_groups count and device_groups list
containing name, member devices, and device count
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description does not disclose safety aspects beyond implied read-only operation; return format is described but no side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Highly concise, front-loaded purpose, each sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and no output schema, the description adequately covers purpose and return format; lacks caveats like pagination.
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?
No parameters exist, so baseline is 4; description adds return structure details, which is helpful but not about inputs.
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?
Clearly states the tool retrieves a list of device groups and their member firewalls, with specific verb and resource, distinguishing it from sibling panorama 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?
No explicit guidance on when to use versus alternatives, but the scope is implied by the description; sibling tools offer different functions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
panorama_duplicate_addressesB
Find duplicate address objects (same IP, different names).
Args:
limit: Maximum number of addresses to analyze (default: 100)
Returns:
Dict with total_addresses, duplicates_found count, and
duplicates list with IP and conflicting names
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description does not disclose if the tool is read-only, modifies state, or requires authentication. It mentions return format but omits behavioral traits like non-destructive nature or potential side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise: one line for purpose, followed by Args and Returns. No fluff, front-loaded purpose. Slightly verbose with full Returns section, but useful given no output 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?
Given one parameter and no output schema, the description adequately explains return value format. However, it lacks edge cases like no duplicates found, error handling, or performance notes. Adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description adds semantic value by explaining the 'limit' parameter as 'Maximum number of addresses to analyze (default: 100)', which is helpful beyond the schema's type and default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states verb 'Find', resource 'duplicate address objects', and specific condition 'same IP, different names'. This clearly distinguishes it from sibling tools like 'panorama_unused_objects' or 'panorama_rules_without_profile'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The description explains what it does but lacks context for selection, such as when duplicate detection is preferred over other analysis tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
panorama_expiring_certificatesA
Check for certificates expiring within threshold days.
Args:
days_threshold: Days before expiration to alert (default: 30)
Returns:
Dict with total_certificates, expiring_certificates list,
expired_certificates list, and counts
| Name | Required | Description | Default |
|---|---|---|---|
| days_threshold | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so description carries full burden. It explains the return structure (dict with lists and counts) and the default threshold, but does not mention read-only nature, permission requirements, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is extremely concise: a one-line summary followed by Args and Returns sections. Every sentence is necessary and 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?
Given the simplicity (1 parameter with default, no output schema, no nested objects), the description adequately covers input and output. It could mention if the tool is read-only, but overall complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description provides a clear explanation for the only parameter: 'Days before expiration to alert (default: 30)'. This adds meaning beyond the schema's type and default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Check for certificates expiring within threshold days', using a specific verb and resource. It distinguishes from sibling Panorama tools like panorama_audit_logs or panorama_managed_devices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use or not use this tool. No alternatives mentioned. The description only states what it does, not when it's appropriate compared to other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
panorama_generate_keyB
Generate and return a Panorama API key.
Returns:
Dict with api_key for manual API operations
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description does not disclose behavioral traits such as whether key generation is safe, if it invalidates previous keys, or if it requires prior login. For a key generation tool, this context is critical.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with clear purpose and return type. No wasted words, but could front-load more behavioral context without adding length.
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?
Low complexity (no params, simple output) but no output schema. Description provides return type (dict with api_key) but lacks details like key format or authentication needed for usage. Adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so baseline 4 applies. The description correctly implies no inputs are needed. No additional parameter info is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Generate and return a Panorama API key' with a specific verb and resource. It distinguishes from other Panorama tools (e.g., commands, audits) and no sibling generates keys.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives (e.g., using existing API credentials). The description does not mention prerequisites like authentication or session requirements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
panorama_local_overridesA
Find local overrides not managed by Panorama.
Args:
limit: Maximum number of devices to check (default: 100)
Returns:
Dict with devices_with_overrides list
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must convey behavioral traits. It only states it 'finds' and returns a dict, but does not disclose whether the operation is read-only, if it requires specific permissions, or any side effects. The term 'find' implies a safe query, but this is not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of a one-line purpose followed by a structured Args and Returns section. Every sentence provides essential information with no 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 simple tool with one parameter and no output schema, the description covers the basic purpose and parameter semantics. However, the return description is vague ('Dict with devices_with_overrides list') and does not specify the structure or contents of the dict, which could be insufficient for an agent to parse output 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?
The input schema has 0% coverage for parameter descriptions, so the description compensates well by explaining the only parameter 'limit' as 'Maximum number of devices to check (default: 100).' This adds clear meaning beyond the schema's type and default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'Find local overrides not managed by Panorama.' This specifies both the verb (find) and the resource (local overrides not managed by Panorama), making the purpose highly clear and distinguishing it 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?
The description does not provide explicit guidance on when to use this tool versus alternatives. While the purpose is clear, there is no mention of when not to use it or comparison to sibling tools like panorama_config_diff or panorama_managed_devices.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
panorama_managed_devicesA
Get inventory of all firewalls managed by Panorama.
Returns:
Dict with total_devices count and devices list containing:
- device name, serial, version, HA state, connection status
- IP address, model, uptime, installed plugins
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It accurately indicates a read-only operation ('Get inventory') and lists the returned fields, but does not explicitly state that it is non-destructive or that it returns all devices.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences plus a bullet list of returned fields. Every piece of text adds value with no redundancy or fluff.
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 a zero-parameter tool with no output schema, the description fully explains what the tool does and what it returns. There is no missing information for an agent to correctly invoke and interpret the 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 input schema has zero parameters, so there is nothing to explain. The description adds value by detailing the return structure, which is not present in 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: 'Get inventory of all firewalls managed by Panorama.' It uses a specific verb and resource, and distinguishes itself from sibling panorama tools which deal with logs, configs, or audits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving device inventory but provides no explicit guidance on when to use this tool versus alternatives like panorama_system_info or panorama_device_groups. No prerequisites or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
panorama_never_matched_rulesA
Find security rules that never matched traffic.
Args:
device_group: Name of the device-group to analyze
days: Analysis period in days (default: 30)
limit: Maximum number of rules to analyze (default: 100)
Returns:
Dict with never_matched_rules list and analysis details
| Name | Required | Description | Default |
|---|---|---|---|
| device_group | Yes | ||
| days | No | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry full behavioral transparency. It mentions returning a dict with lists and analysis details, but does not disclose whether the tool is read-only, performance impact, or any side effects. Minimal behavioral context beyond the purpose.
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 main sentence is front-loaded and clear. The Args/Returns sections add structure but are somewhat redundant with the in-line parameter descriptions. Could be more concise by integrating parameter explanations into the main description.
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?
Parameters are documented, and the return type is described. However, missing context such as what constitutes a 'security rule', definition of 'never matched', and no examples. Given 3 parameters and no output schema, the description is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, but the description includes 'Args' section with docstrings for 'device_group', 'days', and 'limit', explaining their meaning and defaults. This compensates well for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'Find security rules that never matched traffic' – a clear verb+resource pair. It distinguishes from siblings like 'panorama_security_rules_analysis' (broader) and 'panorama_rules_without_profile' (different criterion).
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 states the tool's purpose but does not provide explicit guidance on when to use it versus alternatives, prerequisites, or when not to use it. Usage is implied but not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
panorama_rules_without_profileA
Find security rules without Security Profile Group attached.
Args:
device_group: Name of the device-group to analyze
limit: Maximum number of rules to analyze (default: 100)
Returns:
Dict with total_rules_analyzed, rules_without_profile list, and count
| Name | Required | Description | Default |
|---|---|---|---|
| device_group | Yes | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not explicitly state whether the tool is read-only or has side effects. It says 'analyze' but does not clarify that it does not modify data. More transparency is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, with a single sentence for purpose followed by structured Args and Returns sections. Every sentence serves a purpose with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (2 simple params, no output schema), the description covers purpose, parameter descriptions, and return format. It lacks mention of error handling or permissions but is otherwise sufficient for a straightforward tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates by explaining both parameters: device_group is the name of the device-group, and limit is the maximum number of rules to analyze with a default of 100. This adds clarity beyond the bare 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 verb 'Find' and the specific resource 'security rules without Security Profile Group attached'. It distinguishes from sibling tools like panorama_security_rules_analysis and panorama_never_matched_rules by specifying a unique filtering condition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for security configuration auditing but provides no explicit guidance on when to use this tool versus alternatives, nor does it mention when not to use it. It lacks exclusion or prerequisite information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
panorama_security_rules_analysisA
Analyze security rules quality for a Device-Group.
Args:
device_group: Name of the device-group to analyze
Returns:
Dict with rules list and quality_issues analysis:
- rules_without_description count
- rules_with_generic_names count
- too_permissive_rules count (any/any/any)
- details with specific rule names
| Name | Required | Description | Default |
|---|---|---|---|
| device_group | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description describes return format (dict with counts and details) but does not mention side effects, permissions, or read-only nature. Adequate but not fully transparent for a tool without annotation backing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is structured with Args and Returns sections, concise with no extraneous text. Every sentence adds information (e.g., specific analysis 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?
Return structure is explicitly listed with specific quality metrics. With no output schema, this is helpful. Could mention scope (e.g., all rules in the device-group) but otherwise complete for a simple analysis tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single parameter 'device_group' has a clear description 'Name of the device-group to analyze,' adding value beyond the schema (which only has title). Schema coverage is 0%, so description compensates well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Analyze security rules quality' for a Device-Group, specifying the exact analysis (rules without descriptions, generic names, too permissive). Differentiates from sibling tools like panorama_never_matched_rules or panorama_rules_without_profile by focusing on multiple quality aspects.
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?
Implied usage for analyzing security rule quality, but no explicit guidance on when to use this versus similar siblings (e.g., panorama_never_matched_rules). Does not state prerequisites or 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.
panorama_system_infoA
Get Panorama system information.
Returns:
Dict with hostname, version, uptime, serial, model, and security versions
(threat, AV, wildfire, URL filtering)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It clearly discloses the output structure (dict with specific keys) and implies a read-only operation. However, it could explicitly state that it is non-destructive and does not require special permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences that capture the action and return values. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters and no output schema, the description is complete. It tells the agent exactly what to expect: a dict with specified keys. No additional context is needed.
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?
There are zero parameters, so the description does not need to add parameter information. The schema coverage is 100% (empty), and baseline for 0 params is 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 states the purpose: 'Get Panorama system information.' and lists the specific fields returned (hostname, version, uptime, etc.). This distinguishes it from sibling tools like panorama_audit_logs or panorama_device_groups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. It is a simple retrieval tool, but the description does not indicate when it is appropriate to use it over other Panorama tools or provide any context on prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
panorama_unused_objectsB
Find unused address objects in Panorama configuration.
Args:
object_type: Type of object to analyze (default: "address")
Returns:
Dict with total_objects, unused_count, and unused_objects list
| Name | Required | Description | Default |
|---|---|---|---|
| object_type | No | address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It does not disclose whether the tool is read-only, what permissions are needed, or how unused is determined. This lack of behavioral context is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, with a clear front-loaded purpose and only essential details. Every sentence adds value, and there is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity (1 parameter, no output schema, no annotations), the description covers the basic functionality and return structure. However, it omits the definition of 'unused' and any situational context, which would improve completeness for an agent unfamiliar with Panorama.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning to the single object_type parameter by explaining it is the type of object to analyze with a default of 'address'. However, with 0% schema description coverage, it does not list valid object types, which would be helpful.
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 it finds unused address objects in Panorama configuration, using specific verb and resource. It differentiates from the sibling tool panorama_unused_zones by specifying 'address objects', but does not explicitly mention the sibling, so clarity is high but not perfect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, such as panorama_unused_zones or other analysis tools. There is no mention of prerequisites or scenarios, leaving the agent without context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
panorama_unused_zonesA
Find unused zones in security rules.
Args:
limit: Maximum number of zones to analyze (default: 100)
Returns:
Dict with total_zones and zones list
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only states the basic function. It does not disclose behavioral traits such as read-only nature, required permissions, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with no unnecessary words. It front-loads the purpose and includes parameter and return information in a clear structure.
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 includes the return type ('Dict with total_zones and zones list') which adds value. However, it could benefit from mentioning the scope of analysis (e.g., all rulebases or specific device groups).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains the 'limit' parameter as 'Maximum number of zones to analyze (default: 100)', adding meaningful detail beyond the schema which only provides type and default.
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 'Find unused zones in security rules' with a specific verb and resource. It distinguishes itself from sibling tools like 'panorama_unused_objects' and 'panorama_never_matched_rules'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. There is no mention of prerequisites, context, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
panorama_version_complianceA
Check PAN-OS, Threat, AV, Wildfire version compliance across devices.
Returns:
Dict with panorama versions and devices_versions showing
version and model for each managed firewall
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose whether the tool is read-only, safe, or has any side effects. While 'Check' suggests a read operation, the description should explicitly state behavioral traits beyond the obvious.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, each serving a distinct purpose: stating the tool's action and describing the return format. No superfluous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the return value (dict with versions and models), which is essential since there is no output schema. However, it could provide more detail on the exact structure of the return dict for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description does not need to add meaning beyond the schema. The baseline for 0 parameters is 4, and the description appropriately focuses on the return value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool checks version compliance for PAN-OS, Threat, AV, and Wildfire across devices, which distinguishes it from sibling tools like panorama_system_info or panorama_managed_devices that have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for checking compliance, but it does not explicitly state when to use this tool over alternatives, nor does it provide exclusions or prerequisites. Given the presence of many sibling panorama tools, some guidance would be helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_custom_commandA
Execute SSH command on generic network devices (Cisco, Juniper, Arista, Linux, etc.).
⚠️ NOT for Palo Alto firewalls - use paloalto_send_command instead.
Works with standard SSH devices that don't require PTY interactive sessions.
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes | ||
| command | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must cover behavioral traits. It discloses that the tool works with standard SSH devices and not PTY sessions, but lacks details on authentication, possible destructive actions, rate limits, or output format. Adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences plus a warning; no fluff. Front-loaded with purpose and key exclusions.
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 generic SSH command tool with no output schema or annotations, the description covers scope and exclusions but omits prerequisites, authentication, and expected return values. Adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage. Description does not explain 'identifier' (likely device ID) and only implies 'command' is the SSH command. Users must infer meaning from context, reducing clarity.
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 executes SSH commands on generic network devices (Cisco, Juniper, Arista, Linux) and explicitly excludes Palo Alto firewalls, distinguishing it from sibling tools like paloalto_send_command.
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?
Description provides explicit when-not-to-use guidance (not for Palo Alto) and directs to an alternative (paloalto_send_command). It also specifies suitability for standard SSH devices without PTY interactive sessions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_custom_command_parallelA
Execute SSH commands on multiple generic network devices in parallel.
⚠️ NOT for Palo Alto firewalls - use paloalto_send_command_parallel instead.
Args:
targets: List of {"ip": "192.168.1.1", "command": "show version"}
timeout: Global timeout in seconds (default: 30s)
Example:
[
{"ip": "192.168.1.1", "command": "show version"},
{"ip": "192.168.1.2", "command": "show ip route"}
]
| Name | Required | Description | Default |
|---|---|---|---|
| targets | Yes | ||
| timeout | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description should fully disclose behavioral traits. It mentions parallel execution but lacks details on failure handling, parallelism limits, authentication requirements, idempotency, or safety implications. The description is too shallow for a tool that executes arbitrary commands.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two short paragraphs plus an example. The warning and parameter info are front-loaded, and every sentence adds value. No extraneous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parallel SSH command tool with 2 parameters and no output schema, the description covers the input format and usage guidance but omits return value structure, error behavior, and the timeout default inconsistency leaves a gap. It is mostly complete but has notable missing 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?
With 0% schema description coverage, the description must compensate. It explains the targets format (list of dicts with ip and command) and timeout with default. However, there is a contradiction: description states timeout default is 30s, but the schema specifies 120. This inconsistency reduces reliability.
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 executes SSH commands on multiple generic network devices in parallel, using specific verbs and resources. It explicitly excludes Palo Alto firewalls and names the alternative tool, distinguishing it from 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 explains when to use (generic devices) and when not to use (Palo Alto), directly referencing the alternative tool 'paloalto_send_command_parallel'. This provides clear usage context and exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
skills_listA
List available diagnostic skills/workflows.
Skills are step-by-step procedures that guide Claude through structured
troubleshooting using the MCP tools. Call this first to discover what's
available, then use skills_load() to load a specific skill.
Args:
platform: Filter by platform (mikrotik, aruba, aci, graylog, librenms,
paloalto, panorama, generic). If None, returns all skills.
tag: Filter by topic tag (bgp, routing, multicast, connectivity, wifi…).
If None, no tag filter is applied.
reload: Set True to refresh the index after adding new skill files (default: False).
Returns:
List of skills with name, title, platform, tags, description and required tools.
Never returns skill content — use skills_load() for that.
| Name | Required | Description | Default |
|---|---|---|---|
| platform | No | ||
| tag | No | ||
| reload | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states that the tool never returns skill content (important behavioral constraint) and describes the return structure. However, it does not explicitly mention that the tool is read-only or any potential side effects, though for a list tool this is less critical. Still, a 4 is appropriate as it adds some value 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 concise, front-loads the main purpose, and is structured with clear 'Args' and 'Returns' sections. Every sentence adds value, with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description explains the return type ('List of skills with name, title, platform, tags, description and required tools') and clarifies that it does not return skill content. This is complete for the tool's complexity and the context of its siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate. It does so excellently: it explains each parameter (platform, tag, reload) with possible values, defaults, and semantics. For platform and tag, it lists example values, adding significant meaning beyond the schema's type-only definitions.
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 that the tool 'List available diagnostic skills/workflows' and distinguishes itself from sibling 'skills_load' by noting that after listing, one should use skills_load to load a specific skill. The verb 'List' and resource 'skills' are specific, and the relationship to the sibling is explicit.
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 usage context: 'Call this first to discover what's available, then use skills_load() to load a specific skill.' It also explains the optional filters (platform, tag) and the reload parameter, giving clear guidance on when and how to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
skills_loadA
Load a diagnostic skill and return its full procedure.
The skill contains step-by-step instructions: which MCP tools to call, in what
order, what results to expect, and how to interpret anomalies. Read and follow
the skill before executing the corresponding workflow.
Matching priority: exact → case-insensitive exact → prefix → substring.
If the name is ambiguous, returns a list of candidates instead of content.
Args:
skill_name: Skill name (e.g., "bgp-diagnostic-mikrotik", "connectivity-check").
Partial and case-insensitive matches are supported.
Use skills_list() first if unsure of the exact name.
name: Alias for skill_name — either parameter is accepted.
Returns:
Full Markdown content of the skill plus metadata (platform, tags, token estimate).
| Name | Required | Description | Default |
|---|---|---|---|
| skill_name | No | ||
| name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses matching behavior and ambiguous name handling. Missing details on potential side effects or authentication requirements, but reasonable for a read-only load 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?
Description is well-structured with clear sections, no extraneous words, and each sentence provides necessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 optional params, no output schema, no annotations), the description covers purpose, usage guidelines, parameters, return value (Markdown content + metadata), and matching behavior. No obvious gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% coverage, but description explains both parameters: 'skill_name' with examples and partial match support, and 'name' as an alias. This adds essential 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 'Load a diagnostic skill and return its full procedure.' It differentiates from sibling tools like 'skills_list' by focusing on loading a single skill, not listing all.
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 advises using 'skills_list()' first if unsure of the exact name, and explains matching priority (exact, case-insensitive, prefix, substring) and behavior when ambiguous (returns candidates).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
97 tool updates
v0.1.0- First observed
apic_analyze_connectivity - First observed
apic_analyze_path - First observed
apic_get_audit_logs - First observed
apic_get_bridge_domain_multicast_by_tenant - First observed
apic_get_bridge_domains_multicast - First observed
apic_get_capacity_metrics - First observed
apic_get_contracts - First observed
apic_get_cpu_utilization - First observed
apic_get_epg_endpoints - First observed
apic_get_epgs - First observed
apic_get_events - First observed
apic_get_fabric_health - First observed
apic_get_fabric_topology - First observed
apic_get_faults - First observed
apic_get_gipo_pool_config - First observed
apic_get_health_scores - First observed
apic_get_interface_statistics - First observed
apic_get_lldp_neighbors - First observed
apic_get_nodes_inventory - First observed
apic_get_physical_interfaces - First observed
apic_get_resource_utilization - First observed
apic_get_tenants - First observed
apic_get_top_talkers - First observed
apic_get_traffic_analysis - First observed
apic_get_vrfs - First observed
apic_search_by_ip - First observed
apic_test_connection - First observed
apic_track_endpoint - First observed
aruba_custom_command - First observed
aruba_get_ap_database - First observed
aruba_get_ap_stats - First observed
aruba_get_channels - First observed
aruba_get_clients - First observed
aruba_get_controller_info - First observed
aruba_get_licenses - First observed
aruba_get_rogue_aps - First observed
aruba_get_wlans - First observed
get_mikrotik_bgp_connections - First observed
get_mikrotik_bgp_sessions - First observed
get_mikrotik_health - First observed
get_mikrotik_identity - First observed
get_mikrotik_interfaces - First observed
get_mikrotik_ipaddresses - First observed
get_mikrotik_logs - First observed
get_mikrotik_route_prefix - First observed
get_mikrotik_routerboard - First observed
graylog_get_streams - First observed
graylog_search_logs - First observed
graylog_system_info - First observed
librenms_get_device_eventlog - First observed
librenms_get_device_health - First observed
librenms_get_device_info - First observed
librenms_get_device_ports - First observed
librenms_get_device_sensors - First observed
librenms_get_device_stats - First observed
librenms_get_devices_by_os - First observed
librenms_get_eventlog - First observed
librenms_get_locations - First observed
librenms_list_devices - First observed
mikrotik_ssh_custom - First observed
mikrotik_ssh_route_check - First observed
ndfc_get_all_switches - First observed
ndfc_get_deployment_history - First observed
ndfc_get_event_records - First observed
ndfc_get_fabric_summary - First observed
ndfc_get_fabrics - First observed
ndfc_get_interface_details - First observed
ndfc_get_network_preview - First observed
ndfc_get_network_status - First observed
ndfc_get_networks - First observed
ndfc_get_sites - First observed
ndfc_get_switches - First observed
ndfc_get_vrfs - First observed
ndfc_login - First observed
ndfc_logout - First observed
paloalto_send_command - First observed
paloalto_send_command_parallel - First observed
panorama_audit_logs - First observed
panorama_config_diff - First observed
panorama_custom_command - First observed
panorama_device_groups - First observed
panorama_duplicate_addresses - First observed
panorama_expiring_certificates - First observed
panorama_generate_key - First observed
panorama_local_overrides - First observed
panorama_managed_devices - First observed
panorama_never_matched_rules - First observed
panorama_rules_without_profile - First observed
panorama_security_rules_analysis - First observed
panorama_system_info - First observed
panorama_unused_objects - First observed
panorama_unused_zones - First observed
panorama_version_compliance - First observed
send_custom_command - First observed
send_custom_command_parallel - First observed
skills_list - First observed
skills_load
TDQS
While tools target distinct platforms, there are multiple 'send custom command' style tools (send_custom_command, paloalto_send_command, mikrotik_ssh_custom, etc.) that could cause confusion. Additionally, several log retrieval tools exist across different systems (apic_get_events, graylog_search_logs, librenms_get_eventlog) with overlapping purposes.
Most tools follow a consistent platform_verb_noun pattern (apic_get_tenants, mikrotik_get_interfaces). However, 'skills_list' and 'skills_load' lack a platform prefix, and 'apic_analyze_connectivity' uses 'analyze' instead of 'get', introducing minor inconsistency.
With 97 tools covering multiple platforms (ACI, Aruba, MikroTik, Graylog, LibreNMS, NDFC, Palo Alto, Panorama, and generic SSH), the server feels like a kitchen sink rather than a focused assistant. This excessive count can overwhelm agents and degrade selection accuracy.
The toolset is strong for monitoring and diagnostics on many platforms, but lacks write/modify operations for most devices (e.g., no create/update for MikroTik, Aruba, or generic devices). Skills and analysis tools compensate partially, but the surface is not fully capable of end-to-end network management.
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
Unified MCP server for 70+ eCommerce platforms: products, orders, customers, and more.
Unified MCP Server is a remote MCP connector for AI agents and vertical AI products that provides access to 22,000+ authorized SaaS tools across 400+ integrations and 24 categories directly inside LLMs (Claude, GPT, Gemini, Cohere). Tools operate only on explicitly authorized customer connections, enabling agents to safely read and write against live third-party systems.
Protocol-native energy infrastructure orchestration for AI data centers. Provides 46 MCP tools across 8 grid protocols (IEC-61850, DNP3, Modbus, OCPP, OpenADR, IEEE 2030.5, IEC 60870-5-104, ICCP) with 5 core API primitives: connect, dispatch, settle, comply, and intel. Enables AI agents to programmatically interact with substations, grid interfaces, and energy assets for real-time workload-grid coordination.
Related MCP Servers
- AlicenseCqualityFmaintenanceComprehensive MCP server for integrating with Zabbix monitoring systems, providing 90+ API tools across 19 categories for monitoring, alerting, and infrastructure management.10015MIT
- AlicenseNot gradedqualityDmaintenanceMulti-threaded terminal management MCP server for AI assistants, enabling async command execution, batch operations, and real-time web monitoring with up to 100 concurrent terminals.2MIT
- AlicenseAqualityBmaintenanceA comprehensive MCP server for network device management via SSH/Telnet. Supports multiple vendors such as Cisco IOS and BDCOM, enabling AI assistants to execute commands and manage routers, switches, and firewalls.4MIT
- FlicenseCqualityDmaintenanceMCP server for managing IoT devices and network infrastructure, supporting 135 tools across 17 device types via SSH, REST API, and Serial protocols.1001-
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/angoran/git-netai'
If you have feedback or need assistance with the MCP directory API, please join our Discord server