UniFi MCP Server
The UniFi MCP Server provides a Model Context Protocol interface to the UniFi Network Controller API, enabling AI agents and clients to monitor, query, and manage UniFi network infrastructure across single and multi-site deployments.
Site & Multi-Site Management
List, query, and get details for sites; aggregate stats across all managed locations
Compare site performance (uptime, latency, bandwidth, health rankings)
Get site health summaries and detailed inventory (devices, clients, networks, SSIDs, VPN tunnels, firewall rules)
Search across sites by name, MAC address, or other identifiers
Host & Infrastructure Management
List managed hosts/consoles and retrieve details for a specific host
Internet & ISP Monitoring
Query internet health metrics, ISP bandwidth, latency, jitter, and packet loss per site or aggregated
List vantage points
SD-WAN Management
List, get, and check deployment status of SD-WAN configurations
Cloud Connector Proxying
Proxy raw HTTP requests (GET, POST, PUT, PATCH, DELETE) to UniFi Network and Protect applications via the Cloud Connector
Mutating operations require explicit confirmation and support dry-run preview
Integration API
Devices & Clients: List/get adopted devices, connected clients, and device tags
Networking: List networks, WiFi broadcasts (SSIDs), WAN connections, VPN servers, DNS policies, and DPI application categories
Sites: List integration sites (UUID-based identifiers)
Miscellaneous
Retrieve API version control information
Health check to verify the server is running
Click on "Deploy 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., "@UniFi MCP Serverlist all connected clients"
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.
UniFi MCP Server
A Model Context Protocol (MCP) server that exposes the UniFi Network Controller API today and is evolving into a production-grade multi-domain platform for Protect, Access, and enterprise-scale orchestration.
See SPEC.md for the architecture target and DEVELOPMENT_PLAN.md for the phase roadmap.
Operator quick start
Objective
Give operators a fast, safe reading order for understanding what the server does today, what it is becoming, and which docs govern rollout decisions.
Prerequisites
You know which UniFi API mode the deployment uses: local, cloud-ea, or cloud-v1.
You know whether the runtime is stdio, HTTP, SSE, or streamable HTTP.
You have read the phase target in
SPEC.mdand the current work item inDEVELOPMENT_PLAN.md.
Procedure
Confirm the current stable release and current phase focus.
Read
SPEC.mdfor architecture intent andDEVELOPMENT_PLAN.mdfor sequencing.Use
API.mdanddocs/UNIFI_API.mdfor implementation surface details.Use the phase runbooks in
NETWORK_PLAYBOOK.md,HARBOR_SETUP.md,MULTI_CONTROLLER.md,METRICS.md,WEBHOOK_SETUP.md, andA2A.mdwhen operating or extending phase 5 systems.For release work, consult
RELEASE_CHECKLIST.mdanddocs/RELEASE_PROCESS.mdbefore tagging or publishing.
Verification
The chosen API mode matches the runtime configuration.
The current phase and the documented roadmap agree.
The operator can point to the correct runbook before making a change.
Rollback
If the selected runbook does not match the deployed capability, stop and reconcile docs before changing production state.
Common failure modes
README claims outrun the codebase.
Operators follow phase language without checking the specific runbook.
Release or rollout decisions are made from the README alone instead of the canonical docs.
Related MCP server: UniFi Network MCP Server
π Version Notice
Current Stable Release: 0.2.5 (May 1, 2026) π
Installation:
pip install unifi-mcp-serverRoadmap focus:
Phase 3: native Protect API integration (camera/NVR/device/view/event read tools and resources now wired; PTZ and media streams still in progress)
Phase 4: testing, polish, minor gaps, runbooks, skills, and developer workflow hardening
Phase 5: multi-controller orchestration, dry-run, RBAC, audit logging, metrics, A2A, webhooks, Access API work, and tool exposure profiles
See: RELEASE_NOTES_0.2.5.md for complete changelog.
Current Development Posture
Current repo codebase: ~220 async tool functions across 40+ modules
Phases 0β2 are complete
Phase 3 (Protect API integration) is the active implementation target
The architectural target is documented in
SPEC.mdThe canonical roadmap is
DEVELOPMENT_PLAN.md
Previous Release - v0.2.4 (2026-02-19):
π¨ Critical Startup Fix (issue #42) -
ImportError: cannot import 'config' from 'agnost'prevented startup. Fixed by moving agnost imports inside the conditional block.π Dependency Pin - Excluded broken
agnost==0.1.13from version range (>=0.1.12,!=0.1.13)π§ͺ 1,325 Tests Passing - 1219 unit + 106 integration tests, cloud-ea API compatibility fixes, Site Manager endpoint hardening
Previous Release - v0.2.3 (2026-02-18):
β P1 API bug fixes (QoS audit_action, Site Manager decorator, Topology warnings, Backup client methods)
β P2 RADIUS & Guest Portal β Complete CRUD (get/update for RADIUS accounts and hotspot packages)
Previous Release - v0.2.2 (2026-02-16):
π Port Profile Management - 8 new tools for switch port configuration (PoE, VLAN, 802.1X, LLDP-MED)
π Security Updates - Critical dependency updates (FastMCP 2.14.5, MCP 1.26.0, cryptography 46.0.5)
π§ͺ 1,068 Tests Passing - 75 new tests, all passing across Python 3.10, 3.11, 3.12
Major Release - v0.2.0 (2026-01-25):
β¨ 74 MCP Tools - All 7 feature phases complete
π¦ Published on PyPI - Easy installation with pip/uv
π QoS Management - Traffic prioritization and bandwidth control (11 tools)
πΎ Backup & Restore - Automated scheduling and verification (8 tools)
π Multi-Site Aggregation - Cross-site analytics and management (4 tools)
π ACL & Traffic Filtering - Advanced traffic control (7 tools)
π’ Site Management - Multi-site provisioning and VPN (9 tools)
π RADIUS & Guest Portal - 802.1X authentication (6 tools)
πΊοΈ Network Topology - Complete topology mapping and visualization (5 tools)
See CHANGELOG.md for complete release notes and VERIFICATION_REPORT.md for detailed verification.
π API Mode Support
The UniFi MCP Server supports three distinct API modes with different capabilities:
Local Gateway API (Recommended) β
Full feature support - Direct access to your UniFi gateway.
β All Features Available: Device management, client control, network configuration, firewall rules, WiFi management
β Real-time Data: Access to live device/client statistics and detailed information
β Configuration Changes: Create, update, delete networks, VLANs, firewall rules, SSIDs
π Requirement: Local network access to your UniFi gateway (e.g., 192.168.2.1)
βοΈ Configuration:
UNIFI_API_TYPE=local+UNIFI_LOCAL_HOST=<gateway-ip>
Cloud Early Access API β οΈ
Site-centric access - UniFi cloud API with limited but functional read-only capabilities.
β Site Management: List sites, get site details (matches by
siteId,_id,name, ormeta.name)β Site Manager API (optional): Multi-site aggregation, host inventory, cross-site statistics
Enable with
UNIFI_SITE_MANAGER_ENABLED=trueGracefully degrades when endpoints are unavailable
β οΈ No Individual Device/Client Access: Cannot query specific devices or clients
β οΈ No Configuration Changes: Cannot modify networks, firewall rules, or settings
βοΈ Configuration:
UNIFI_API_TYPE=cloud-ea+ optionalUNIFI_SITE_MANAGER_ENABLED=trueπ Rate Limit: 100 requests/minute
Cloud V1 API β οΈ
Limited to aggregate statistics - UniFi stable v1 cloud API.
β Site Information: List sites with aggregate statistics (device counts, client counts, bandwidth)
β οΈ No Individual Device/Client Access: Cannot query specific devices or clients
β οΈ No Configuration Changes: Cannot modify networks, firewall rules, or settings
βοΈ Configuration:
UNIFI_API_TYPE=cloud-v1π Rate Limit: 10,000 requests/minute
π‘ Recommendation: Use Local Gateway API (UNIFI_API_TYPE=local) for full functionality. Cloud APIs are suitable only for high-level monitoring dashboards.
π Transport Modes
The UniFi MCP Server supports multiple transport modes for different deployment scenarios:
STDIO (Default) β
Local subprocess communication β Best for Claude Desktop, Cursor, and local AI clients.
β Default mode: No configuration needed
β Zero network overhead: Direct stdin/stdout communication
β No port required: Runs as a subprocess of the MCP client
βοΈ Configuration:
MCP_SERVER_TRANSPORT=stdio(default)
SSE (Server-Sent Events) π β οΈ Deprecated
Network-accessible HTTP server β legacy transport, kept for backward compatibility.
β οΈ Known issue: client proxies such as
mcp-remotecan send the first tool call before the SSEinitializehandshake finishes, which the MCP SDK rejects withReceived request before initialization was complete(see #96). This is a timing issue in the SSE transport itself (upstream in themcpSDK / client proxy, not this server's tool logic), so it cannot be fixed from this codebase.β Network access: Connect from any MCP client over HTTP
β MCP gateway compatible: Works with MCP gateways that consolidate servers
βοΈ Configuration:
MCP_SERVER_TRANSPORT=sse+MCP_SERVER_PORT=3000π Prefer Streamable HTTP below for any new network-accessible deployment.
HTTP π
Standard HTTP transport β Alternative network mode.
βοΈ Configuration:
MCP_SERVER_TRANSPORT=http+MCP_SERVER_PORT=3000
Streamable HTTP π β Recommended for network access
Modern HTTP transport β the current MCP transport standard, and the successor to SSE.
β Network access: Connect from any MCP client over HTTP
β MCP gateway compatible: Works with MCP gateways that consolidate servers
β No SSE handshake race: session initialization is part of the same request/response cycle, avoiding the class of timing issue SSE has with proxies like
mcp-remoteβοΈ Configuration:
MCP_SERVER_TRANSPORT=streamable_http+MCP_SERVER_PORT=3000+MCP_AUTH_TOKEN=<token>
β οΈ Authentication is required for network transports. The MCP endpoint exposes every registered tool, including destructive ones.
http,sse, andstreamable_httpwill refuse to start unlessMCP_AUTH_TOKENis set; clients then sendAuthorization: Bearer <token>. The server binds to127.0.0.1by default β terminate TLS and authenticate at a reverse proxy before wideningMCP_SERVER_HOSTto0.0.0.0.
π‘ Recommendation: Use STDIO for local AI clients (Claude Desktop, Cursor). Use Streamable HTTP when running behind an authenticating MCP gateway or reverse proxy β prefer it over SSE, which is kept only for backward compatibility.
π§ Tool Exposure Profiles
To reduce context-window bloat, the server will support named exposure profiles that register only the tools relevant to a given UniFi application area.
Planned profiles
networkβ network, switching, WiFi, DHCP, DNS, traffic, and client toolsprotectβ cameras, NVRs, devices, views, events, talkback, and Protect workflows (read surfaces wired; PTZ/media streams still in progress)accessβ doors, readers, credentials, visitors, and access-control workflowstalkβ UniFi Talk devices, calls, lines, and telephony workflowsdriveβ UniFi Drive storage, files, sharing, and drive workflowsread-onlyβget_*,list_*,stat_*, andsearch_*tools only
Intended behavior
Keep the full tool surface available when no profile is selected
Expose fewer tools per session so agents do not carry unrelated UniFi modules in context
Make the server easier to use in application-specific deployments and focused agent workflows
Pair with
UNIFI_PROFILEso profile selection is explicit and repeatable
Running in Streamable HTTP Mode (recommended for network access)
# Set transport to Streamable HTTP
export MCP_SERVER_TRANSPORT=streamable_http
export MCP_SERVER_PORT=3000
# Required β the server refuses to start a network transport without it
export MCP_AUTH_TOKEN=$(openssl rand -hex 32)
# Start the server (binds to 127.0.0.1 by default)
unifi-mcp-server
# Server listening on 127.0.0.1:3000 via streamable_http
# Clients send: Authorization: Bearer $MCP_AUTH_TOKENDocker Compose for Streamable HTTP Mode
services:
unifi-mcp:
image: ghcr.io/enuno/unifi-mcp-server:latest
environment:
UNIFI_API_KEY: your-api-key
UNIFI_API_TYPE: local
UNIFI_LOCAL_HOST: 192.168.2.1
MCP_SERVER_TRANSPORT: streamable_http
MCP_SERVER_PORT: 3000
MCP_SERVER_HOST: 0.0.0.0 # container-internal; keep the published port on loopback
MCP_AUTH_TOKEN: ${MCP_AUTH_TOKEN} # required β clients send Authorization: Bearer <token>
ports:
# Published on loopback; put an authenticating TLS proxy in front to expose it further.
- "127.0.0.1:3000:3000"Connecting via MCP Gateway
Once running in Streamable HTTP mode, configure your MCP gateway to connect:
{
"mcpServers": {
"unifi": {
"url": "http://your-server-ip:3000/mcp"
}
}
}Running in SSE Mode (deprecated)
SSE is kept for backward compatibility only β see the transport modes section above for why Streamable HTTP is preferred. To run it anyway:
export MCP_SERVER_TRANSPORT=sse
export MCP_SERVER_PORT=3000
unifi-mcp-server
# Server listening on 127.0.0.1:3000 via sse (MCP_AUTH_TOKEN required)Features
Core Network Management
Device Management: List, monitor, restart, locate, and upgrade UniFi devices (APs, switches, gateways)
Network Configuration: Create, update, and delete networks, VLANs, and subnets with DHCP configuration
Client Management: Query, block, unblock, and reconnect clients with detailed analytics
WiFi/SSID Management: Create and manage wireless networks with WPA2/WPA3, guest networks, and VLAN isolation
Port Profile Management (v0.2.2): Switch port configuration with PoE, VLAN trunking, 802.1X, LLDP-MED, speed/duplex
Device Port Overrides (v0.2.2): Per-port configuration on individual switches with smart merge capabilities
Port Forwarding: Configure port forwarding rules for external access
DPI Statistics: Deep Packet Inspection analytics for bandwidth usage by application and category
Multi-Site Support: Work with multiple UniFi sites seamlessly
Real-time Monitoring: Access device, network, client, and WiFi statistics
Security & Firewall (v0.2.0)
Firewall Rules: Create, update, and delete firewall rules with advanced traffic filtering
ACL Management: Layer 3/4 access control lists with rule ordering and priority
Traffic Matching Lists: IP, MAC, domain, and port-based traffic classification
Zone-Based Firewall: Modern zone-based security with zone management and zone-to-zone policies
RADIUS Authentication: 802.1X authentication with RADIUS server configuration
Guest Portal: Customizable captive portals with hotspot billing and voucher management
Quality of Service (v0.2.0)
QoS Profiles: Create and manage QoS profiles for traffic prioritization
Traffic Routes: Time-based routing with schedules and application awareness
Bandwidth Management: Upload/download limits with guaranteed minimums
ProAV Mode: Professional audio/video QoS templates
Reference Profiles: Built-in QoS templates for common applications
Backup & Operations (v0.2.0)
Automated Backups: Schedule backups with cron expressions
Backup Management: Create, download, restore, and delete backups
Cloud Sync Tracking: Monitor backup cloud synchronization status
Checksum Verification: Ensure backup integrity with SHA-256 checksums
Multiple Backup Types: Network configurations and full system backups
Multi-Site Management (v0.2.0)
Site Provisioning: Create, update, and delete UniFi sites
Site-to-Site VPN: Configure VPN tunnels between sites
Device Migration: Move devices between sites seamlessly
Site Health Monitoring: Track site health scores and metrics
Cross-Site Analytics: Aggregate device and client statistics across locations
Configuration Export: Export site configurations for backup/documentation
Network Topology (v0.2.0)
Topology Discovery: Complete network graph with devices and clients
Connection Mapping: Port-level device interconnections
Multi-Format Export: JSON, GraphML (Gephi), and DOT (Graphviz) formats
Network Depth Analysis: Identify network hierarchy and uplink relationships
Visual Coordinates: Optional device positioning for diagrams
Phase 5: Enterprise scale and operational excellence
Redis Caching: Optional Redis-based caching for improved performance (configurable TTL per resource type)
Webhook Support: Real-time event processing with HMAC signature verification
Automatic Cache Invalidation: Smart cache invalidation when configuration changes
Event Handlers: Built-in handlers for device, client, and alert events
Performance Tracking: Optional agnost.ai integration for monitoring MCP tool performance and usage analytics
Operator Memory: Optional Supermemory integration for persisting operator notes/context across tool calls, scoped per site
Roadmap-aligned controls: planned dry-run, RBAC, audit logging, metrics, and A2A discovery
Safety & Security
Read-Only Mode: Set
UNIFI_READ_ONLY=trueto register only non-mutating tools β state-changing tools are then absent from the MCP tool list entirely, rather than relying on a caller-suppliedconfirmflagConfirmation Required: All mutating operations require explicit
confirm=TrueflagDry-Run Mode: Planned change-safe preview path for all write and destructive operations
Audit Logging: Planned append-only audit trail for mutation paths
Tool Scoping: Planned API-key-based RBAC for least-privilege access
Input Validation: Comprehensive parameter validation with detailed error messages
Password Masking: Sensitive data automatically masked in logs
Type-Safe: Full type hints and Pydantic validation throughout
Security Scanners: CodeQL, Trivy, Bandit, Safety, and detect-secrets integration
Technical Excellence
Async Support: Built with async/await for high performance and concurrency
MCP Protocol: Standard Model Context Protocol for AI agent integration
Comprehensive Testing: 1,236 tests with high coverage, all passing across Python 3.10β3.13
CI/CD Pipelines: Automated testing, security scanning, and Docker builds (18 checks)
Multi-Architecture: Docker images for amd64, arm64, arm/v7 (32-bit ARM), and arm64/v8
Security Hardened: Updated critical dependencies (FastMCP, MCP SDK, cryptography)
Quality Metrics: Black formatting, Ruff linting, comprehensive type hints, Pydantic validation
Quick Start
Prerequisites
Python 3.10 or higher
A UniFi account at unifi.ui.com
UniFi API key (obtain from Settings β Control Plane β Integrations)
Access to UniFi Cloud API or local gateway
Installation
Using PyPI (Recommended)
The UniFi MCP Server is published on PyPI and can be installed with pip or uv:
# Install from PyPI
pip install unifi-mcp-server
# Or using uv (faster)
uv pip install unifi-mcp-server
# Install specific version
pip install unifi-mcp-server==0.2.5After installation, the unifi-mcp-server command will be available globally.
PyPI Package: https://pypi.org/project/unifi-mcp-server/
Using Docker (Alternative)
# Pull the latest release
docker pull ghcr.io/enuno/unifi-mcp-server:0.2.5
# Multi-architecture support: amd64, arm64, arm/v7, arm64/v8Build from Source (Development)
Using uv (Recommended)
# Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh
# Clone the repository
git clone https://github.com/enuno/unifi-mcp-server.git
cd unifi-mcp-server
# Create virtual environment and install dependencies
uv venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
uv pip install -e ".[dev]"Using pip
# Clone the repository
git clone https://github.com/enuno/unifi-mcp-server.git
cd unifi-mcp-server
# Create virtual environment
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install dependencies
pip install -e ".[dev]"Using Docker Compose (Recommended for Production)
The recommended way to run the UniFi MCP Server with full monitoring capabilities:
# 1. Copy and configure environment variables
cp .env.docker.example .env
# Edit .env with your UNIFI_API_KEY and AGNOST_ORG_ID
# 2. Start all services (MCP Server + Redis + MCP Toolbox)
docker-compose up -d
# 3. Check service status
docker-compose ps
# 4. View logs
docker-compose logs -f unifi-mcp
# 5. Access MCP Toolbox dashboard
open http://localhost:8080
# 6. Stop all services
docker-compose downIncluded Services:
UniFi MCP Server: Main MCP server with ~220 async tool functions
MCP Toolbox: Web-based analytics dashboard (port 8080)
Redis: High-performance caching layer
See MCP_TOOLBOX.md for detailed Toolbox documentation.
Using Docker (Standalone)
For standalone Docker usage (not with MCP clients):
# Pull the image
docker pull ghcr.io/enuno/unifi-mcp-server:latest
# Run the container in background (Cloud API)
# Note: -i flag keeps stdin open for STDIO transport
docker run -i -d \
--name unifi-mcp \
-e UNIFI_API_KEY=your-api-key \
-e UNIFI_API_TYPE=cloud \
ghcr.io/enuno/unifi-mcp-server:latest
# OR run with local gateway proxy
docker run -i -d \
--name unifi-mcp \
-e UNIFI_API_KEY=your-api-key \
-e UNIFI_API_TYPE=local \
-e UNIFI_HOST=192.168.2.1 \
ghcr.io/enuno/unifi-mcp-server:latest
# Check container status
docker ps --filter name=unifi-mcp
# View logs
docker logs unifi-mcp
# Stop and remove
docker rm -f unifi-mcpNote: For MCP client integration (Claude Desktop, etc.), see the Usage section below for the correct configuration without -d flag.
Build from Source
Prerequisites
Python 3.10+: Required for running the server
Git: For cloning the repository
uv (recommended) or pip: For dependency management
Docker (optional): For containerized builds
Node.js & npm (optional): For npm package publishing
Development Build
1. Clone the Repository
git clone https://github.com/enuno/unifi-mcp-server.git
cd unifi-mcp-server2. Set Up Development Environment
Using uv (Recommended):
# Install uv if not already installed
curl -LsSf https://astral.sh/uv/install.sh | sh
# Create virtual environment
uv venv
# Activate virtual environment
source .venv/bin/activate # Linux/macOS
# Or on Windows: .venv\Scripts\activate
# Install development dependencies
uv pip install -e ".[dev]"
# Install pre-commit hooks
pre-commit install
pre-commit install --hook-type commit-msgUsing pip:
# Create virtual environment
python -m venv .venv
# Activate virtual environment
source .venv/bin/activate # Linux/macOS
# Or on Windows: .venv\Scripts\activate
# Upgrade pip
pip install --upgrade pip
# Install development dependencies
pip install -e ".[dev]"
# Install pre-commit hooks
pre-commit install
pre-commit install --hook-type commit-msg3. Configure Environment
# Copy example configuration
cp .env.example .env
# Edit .env with your UniFi credentials
# Required: UNIFI_API_KEY
# Recommended: UNIFI_API_TYPE=local, UNIFI_LOCAL_HOST=<gateway-ip>4. Run Tests
# Run all unit tests
pytest tests/unit/ -v
# Run with coverage report
pytest tests/unit/ --cov=src --cov-report=html --cov-report=term-missing
# View coverage report
open htmlcov/index.html # macOS
# Or: xdg-open htmlcov/index.html # Linux5. Run the Server
# Development mode with MCP Inspector
uv run mcp dev src/main.py
# Production mode
uv run python -m src.main
# The MCP Inspector will be available at http://localhost:5173Production Build
Build Python Package
# Install build tools
uv pip install build
# Build wheel and source distribution
python -m build
# Output: dist/unifi_mcp_server-0.2.0-py3-none-any.whl
# dist/unifi_mcp_server-0.2.0.tar.gzBuild Docker Image
# Build for current architecture
docker build -t unifi-mcp-server:0.2.0 .
# Build multi-architecture (requires buildx)
docker buildx create --use
docker buildx build \
--platform linux/amd64,linux/arm64,linux/arm/v7 \
-t ghcr.io/enuno/unifi-mcp-server:0.2.0 \
--push .
# Test the image
docker run -i --rm \
-e UNIFI_API_KEY=your-key \
-e UNIFI_API_TYPE=cloud \
unifi-mcp-server:0.2.0Publishing
Publish to PyPI
# Install twine
uv pip install twine
# Check distribution
twine check dist/*
# Upload to PyPI (requires PyPI account and token)
twine upload dist/*
# Or upload to Test PyPI first
twine upload --repository testpypi dist/*Publish to npm (Metadata Wrapper)
# Ensure package.json is up to date
cat package.json
# Login to npm (if not already)
npm login
# Publish package
npm publish --access public
# Verify publication
npm view unifi-mcp-serverPublish to MCP Registry
# Install mcp-publisher
brew install mcp-publisher
# Or: curl -L "https://github.com/modelcontextprotocol/registry/releases/latest/download/mcp-publisher_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" | tar xz mcp-publisher && sudo mv mcp-publisher /usr/local/bin/
# Authenticate with GitHub (for io.github.enuno namespace)
mcp-publisher login github
# Publish to registry (requires npm package published first)
mcp-publisher publish
# Verify
curl "https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.enuno/unifi-mcp-server"Release Process
See docs/RELEASE_PROCESS.md for the complete release workflow, including automated GitHub Actions, manual PyPI/npm publishing, and MCP registry submission.
Configuration
Obtaining Your API Key
Log in to UniFi Site Manager
Navigate to Settings β Control Plane β Integrations
Click Create API Key
Save the key immediately - it's only shown once!
Store it securely in your
.envfile
Configuration File
Create a .env file in the project root:
# Required: Your UniFi API Key
UNIFI_API_KEY=your-api-key-here
# API Mode Selection (choose one):
# - 'local': Full access via local gateway (RECOMMENDED)
# - 'cloud-ea': Early Access cloud API (limited to statistics)
# - 'cloud-v1': Stable v1 cloud API (limited to statistics)
UNIFI_API_TYPE=local
# Local Gateway Configuration (for UNIFI_API_TYPE=local)
UNIFI_LOCAL_HOST=192.168.2.1
UNIFI_LOCAL_PORT=443
UNIFI_LOCAL_VERIFY_SSL=false
# Cloud API Configuration (for cloud-ea or cloud-v1)
# UNIFI_CLOUD_API_URL=https://api.ui.com
# Site Manager API (cloud-ea only, optional)
# UNIFI_SITE_MANAGER_ENABLED=true
# Optional settings
UNIFI_DEFAULT_SITE=default
# Redis caching (optional - improves performance)
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_DB=0
# REDIS_PASSWORD=your-password # If Redis requires authentication
# Webhook support (optional - for real-time events)
WEBHOOK_SECRET=your-webhook-secret-here
# Performance tracking with agnost.ai (optional - for analytics)
# Get your Organization ID from https://app.agnost.ai
# AGNOST_ENABLED=true
# AGNOST_ORG_ID=your-organization-id-here
# AGNOST_ENDPOINT=https://api.agnost.ai
# AGNOST_DISABLE_INPUT=false # Set to true to disable input tracking
# AGNOST_DISABLE_OUTPUT=false # Set to true to disable output tracking
# Supermemory (optional - operator notes/context storage, scoped per site)
# Requires: pip install supermemory
# Get your API key from https://console.supermemory.ai
# SUPERMEMORY_ENABLED=true
# SUPERMEMORY_API_KEY=your-supermemory-api-key-hereSee .env.example for all available options.
Running the Server
# Development mode with MCP Inspector
uv run mcp dev src/main.py
# Production mode
uv run python src/main.pyThe MCP Inspector will be available at http://localhost:5173 for interactive testing.
Usage
With Claude Desktop
Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
Option 1: Using PyPI Package (Recommended)
After installing via pip install unifi-mcp-server:
{
"mcpServers": {
"unifi": {
"command": "unifi-mcp-server",
"env": {
"UNIFI_API_KEY": "your-api-key-here",
"UNIFI_API_TYPE": "local",
"UNIFI_LOCAL_HOST": "192.168.2.1"
}
}
}
}For cloud API access, use:
{
"mcpServers": {
"unifi": {
"command": "unifi-mcp-server",
"env": {
"UNIFI_API_KEY": "your-api-key-here",
"UNIFI_API_TYPE": "cloud-v1"
}
}
}
}Option 2: Using uv with PyPI Package
{
"mcpServers": {
"unifi": {
"command": "uvx",
"args": ["unifi-mcp-server"],
"env": {
"UNIFI_API_KEY": "your-api-key-here",
"UNIFI_API_TYPE": "local",
"UNIFI_LOCAL_HOST": "192.168.2.1"
}
}
}
}Option 3: Using Docker
{
"mcpServers": {
"unifi": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"UNIFI_API_KEY=your-api-key-here",
"-e",
"UNIFI_API_TYPE=cloud",
"ghcr.io/enuno/unifi-mcp-server:latest"
]
}
}
}Important: Do NOT use -d (detached mode) in MCP client configurations. The MCP client needs to maintain a persistent stdin/stdout connection to the container.
With Cursor
Add to your Cursor MCP configuration (mcp.json via "View: Open MCP Settings β New MCP Server"):
Option 1: Using PyPI Package (Recommended)
After installing via pip install unifi-mcp-server:
{
"mcpServers": {
"unifi-mcp": {
"command": "unifi-mcp-server",
"env": {
"UNIFI_API_KEY": "your-api-key-here",
"UNIFI_API_TYPE": "local",
"UNIFI_LOCAL_HOST": "192.168.2.1",
"UNIFI_LOCAL_VERIFY_SSL": "false"
},
"disabled": false
}
}
}Option 2: Using uv with PyPI Package
{
"mcpServers": {
"unifi-mcp": {
"command": "uvx",
"args": ["unifi-mcp-server"],
"env": {
"UNIFI_API_KEY": "your-api-key-here",
"UNIFI_API_TYPE": "local",
"UNIFI_LOCAL_HOST": "192.168.2.1"
},
"disabled": false
}
}
}Option 3: Using Docker
{
"mcpServers": {
"unifi-mcp": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"--name", "unifi-mcp-server",
"-e", "UNIFI_API_KEY=your_unifi_api_key_here",
"-e", "UNIFI_API_TYPE=local",
"-e", "UNIFI_LOCAL_HOST=192.168.2.1",
"-e", "UNIFI_LOCAL_VERIFY_SSL=false",
"ghcr.io/enuno/unifi-mcp-server:latest"
],
"disabled": false
}
}
}Configuration Notes:
Replace
UNIFI_API_KEYwith your actual UniFi API keyFor local gateway access, set
UNIFI_API_TYPE=localand provideUNIFI_LOCAL_HOSTFor cloud API access, use
UNIFI_API_TYPE=cloud-v1orcloud-eaAfter saving, restart Cursor to activate the server
Invoke tools in the Chat sidebar (e.g., "List my UniFi devices")
With Other MCP Clients
The UniFi MCP Server works with any MCP-compatible client. Here are generic configuration patterns:
Using the Installed Command
After installing from PyPI (pip install unifi-mcp-server):
{
"mcpServers": {
"unifi": {
"command": "unifi-mcp-server",
"env": {
"UNIFI_API_KEY": "your-api-key-here",
"UNIFI_API_TYPE": "local",
"UNIFI_LOCAL_HOST": "192.168.2.1"
}
}
}
}Using uvx (Run from PyPI without installation)
{
"mcpServers": {
"unifi": {
"command": "uvx",
"args": ["unifi-mcp-server"],
"env": {
"UNIFI_API_KEY": "your-api-key-here",
"UNIFI_API_TYPE": "local",
"UNIFI_LOCAL_HOST": "192.168.2.1"
}
}
}
}Using Python Module Directly
{
"mcpServers": {
"unifi": {
"command": "python3",
"args": ["-m", "src.main"],
"env": {
"UNIFI_API_KEY": "your-api-key-here",
"UNIFI_API_TYPE": "local",
"UNIFI_LOCAL_HOST": "192.168.2.1"
}
}
}
}Using as a Claude Code Skill
The repo ships a SKILL.md and four categorized skill files in skills/ that let AI agents load UniFi context on-demand β without keeping all 215+ tool definitions in the LLM context for every conversation.
Install the skill
# Personal skill (available in all Claude Code sessions)
cp SKILL.md ~/.claude/skills/unifi.md
# Or install all four domain skills individually
cp skills/unifi-network.md ~/.claude/skills/
cp skills/unifi-devices.md ~/.claude/skills/
cp skills/unifi-security.md ~/.claude/skills/
cp skills/unifi-system.md ~/.claude/skills/Once installed, Claude Code will automatically reference the skill when you ask about UniFi topics, without loading the full MCP server into every conversation.
Scoped MCP profiles (reduce context footprint)
You can run the MCP server with only the tools you need by setting UNIFI_PROFILE:
Profile | Tools loaded | Best for |
| Clients, VLANs, WiFi, DHCP, DNS, vouchers | Day-to-day network ops |
| Inventory, control, ports, switching, topology | Hardware management |
| Firewall, ZBF, ACLs, VPN, content filtering | Security audits |
| Sites, backups, traffic flows, DPI, RADIUS | Monitoring & ops |
| Sites + clients + devices only | Quick checks |
{
"mcpServers": {
"unifi-security": {
"command": "uvx",
"args": ["unifi-mcp-server"],
"env": {
"UNIFI_API_KEY": "your-api-key-here",
"UNIFI_API_TYPE": "local",
"UNIFI_LOCAL_HOST": "192.168.2.1",
"UNIFI_PROFILE": "security"
}
}
}
}See docs/SKILLS.md for the full guide.
Environment Variables (All Clients):
UNIFI_API_KEY(required): Your UniFi API key from unifi.ui.comUNIFI_API_TYPE(required):local,cloud-v1, orcloud-eaFor Local Gateway API:
UNIFI_LOCAL_HOST: Gateway IP (e.g., 192.168.2.1)UNIFI_LOCAL_PORT: Gateway port (default: 443)UNIFI_LOCAL_VERIFY_SSL: SSL verification (default: false)
For Cloud APIs:
UNIFI_CLOUD_API_URL: Cloud API URL (default: https://api.ui.com)UNIFI_DEFAULT_SITE: Default site ID (default: default)UNIFI_SITE_MANAGER_ENABLED: Enable Site Manager multi-site tools for cloud-ea (default: false)
Tool Scope (reduces LLM context size):
UNIFI_PROFILE: Load only a subset of tools βnetwork,devices,security,system, orminimal(default: all tools)
MCP Server Transport:
MCP_SERVER_TRANSPORT: Transport mode (stdio,sse,http,streamable_http; default:stdio)MCP_SERVER_HOST: Bind address for network transports (default:127.0.0.1)MCP_SERVER_PORT: Server port (default:3000)MCP_AUTH_TOKEN: Bearer token required for network transports; comma-separate for several (default: unset β network transports refuse to start without it)
Programmatic Usage
from mcp import MCP
import asyncio
async def main():
mcp = MCP("unifi-mcp-server")
# List all devices
devices = await mcp.call_tool("list_devices", {
"site_id": "default"
})
for device in devices:
print(f"{device['name']}: {device['status']}")
# Get network information via resource
networks = await mcp.read_resource("sites://default/networks")
print(f"Networks: {len(networks)}")
# Create a guest WiFi network with VLAN isolation
wifi = await mcp.call_tool("create_wlan", {
"site_id": "default",
"name": "Guest WiFi",
"security": "wpapsk",
"password": "GuestPass123!",
"is_guest": True,
"vlan_id": 100,
"confirm": True # Required for safety
})
print(f"Created WiFi: {wifi['name']}")
# Get DPI statistics for top bandwidth users
top_apps = await mcp.call_tool("list_top_applications", {
"site_id": "default",
"limit": 5,
"time_range": "24h"
})
for app in top_apps:
gb = app['total_bytes'] / 1024**3
print(f"{app['application']}: {gb:.2f} GB")
# Create Zone-Based Firewall zones (UniFi Network 9.0+)
lan_zone = await mcp.call_tool("create_firewall_zone", {
"site_id": "default",
"name": "LAN",
"description": "Trusted local network",
"confirm": True
})
iot_zone = await mcp.call_tool("create_firewall_zone", {
"site_id": "default",
"name": "IoT",
"description": "Internet of Things devices",
"confirm": True
})
# Set zone-to-zone policy (LAN can access IoT, but IoT cannot access LAN)
await mcp.call_tool("update_zbf_policy", {
"site_id": "default",
"source_zone_id": lan_zone["_id"],
"destination_zone_id": iot_zone["_id"],
"action": "accept",
"confirm": True
})
asyncio.run(main())API Documentation
See API.md for complete API documentation, including:
Available MCP tools
Resource URI schemes
Request/response formats
Error handling
Examples
Development
Command reference: commands.md
Setup Development Environment
# Install development dependencies
uv pip install -e ".[dev]"
# Install pre-commit hooks
pre-commit install
pre-commit install --hook-type commit-msgRunning Tests
# Run all tests
pytest tests/unit/
# Run with coverage report
pytest tests/unit/ --cov=src --cov-report=html --cov-report=term-missing
# Run specific test file
pytest tests/unit/test_zbf_tools.py -v
# Run tests for the current feature set
pytest tests/unit/test_new_models.py tests/unit/test_zbf_tools.py tests/unit/test_traffic_flow_tools.py
# Run only unit tests (fast)
pytest -m unit
# Run only integration tests (requires UniFi controller)
pytest -m integrationCurrent Test Coverage:
1,236 tests passing across Python 3.10-3.13
Coverage and module-level reporting are tracked in Codecov and CI
Module-specific targets are maintained in
DEVELOPMENT_PLAN.mdand the test suite
Coverage focus areas:
Models and validation layers
Core tool paths and safety controls
Network, security, and operations surfaces
Utilities and helpers
Top Coverage Performers (>95%):
clients.py: 98.72%
devices.py: 98.44%
device_control.py: 99.10%
topology.py: 95.83% β (v0.2.0)
vouchers.py: 96.36%
firewall.py: 96.11%
See VERIFICATION_REPORT.md for complete coverage details and TESTING_PLAN.md for testing strategy.
Code Quality
# Format code
black src/ tests/
isort src/ tests/
# Lint code
ruff check src/ tests/ --fix
# Type check
mypy src/
# Run all pre-commit checks
pre-commit run --all-filesTesting with MCP Inspector
# Start development server with inspector
uv run mcp dev src/main.py
# Open http://localhost:5173 in your browserProject Structure
unifi-mcp-server/
βββ .github/
β βββ workflows/ # CI/CD pipelines (CI, security, release)
βββ .claude/
β βββ commands/ # Custom slash commands for development
βββ bin/
β βββ unifi-cli # Shell wrapper for CLI invocation
βββ skills/ # Categorized skill files for AI agents
β βββ unifi-network.md # Clients, VLANs, WiFi, DHCP, DNS, vouchers
β βββ unifi-devices.md # Device management, ports, switching, topology
β βββ unifi-security.md # Firewall, ZBF, ACLs, VPN, content filtering
β βββ unifi-system.md # Sites, backups, traffic flows, DPI, RADIUS
βββ src/
β βββ main.py # MCP server entry point (215+ tools registered)
β βββ cache.py # Redis caching implementation
β βββ memory.py # Supermemory operator notes/context storage
β βββ config/ # Configuration management
β βββ api/ # UniFi API client with rate limiting
β βββ models/ # Pydantic data models
β β βββ zbf.py # Zone-Based Firewall models
β βββ tools/ # MCP tool definitions
β β βββ clients.py # Client query tools
β β βββ devices.py # Device query tools
β β βββ networks.py # Network query tools
β β βββ sites.py # Site query tools
β β βββ firewall.py # Firewall management (Phase 4)
β β βββ firewall_zones.py # Zone-Based Firewall zone management (v0.1.4)
β β βββ zbf_matrix.py # Zone-Based Firewall policy matrix (v0.1.4)
β β βββ network_config.py # Network configuration (Phase 4)
β β βββ device_control.py # Device control (Phase 4)
β β βββ client_management.py # Client management (Phase 4)
β β βββ wifi.py # WiFi/SSID management (Phase 5)
β β βββ port_forwarding.py # Port forwarding (Phase 5)
β β βββ dpi.py # DPI statistics (Phase 5)
β βββ resources/ # MCP resource definitions
β βββ webhooks/ # Webhook receiver and handlers (Phase 5)
β βββ utils/ # Utility functions and validators
βββ tests/
β βββ unit/ # Unit tests (213 tests, 37% coverage)
β βββ integration/ # Integration tests (planned)
β βββ performance/ # Performance benchmarks (planned)
βββ docs/ # Additional documentation
β βββ AI-Coding/ # AI coding guidelines
βββ .env.example # Environment variable template
βββ pyproject.toml # Project configuration
βββ README.md # This file
βββ SKILL.md # Top-level AI agent skill manifest
βββ API.md # Complete API documentation
βββ DEVELOPMENT_PLAN.md # Development roadmap
βββ docs/archive/ # Archived planning & session docs
βββ CONTRIBUTING.md # Contribution guidelines
βββ SECURITY.md # Security policy and best practices
βββ AGENTS.md # AI agent guidelines
βββ LICENSE # Apache 2.0 LicenseContributing
We welcome contributions from both human developers and AI coding assistants! Please see:
CONTRIBUTING.md - Contribution guidelines
AGENTS.md - AI agent-specific guidelines
AI_CODING_ASSISTANT.md - AI coding standards
AI_GIT_PRACTICES.md - AI Git practices
Quick Contribution Guide
Fork the repository
Create a feature branch:
git checkout -b feature/your-feature-nameMake your changes
Run tests and linting:
pytest && pre-commit run --all-filesCommit with conventional commits:
feat: add new featurePush and create a pull request
Automated Bug Reports
Found a bug? Issues with [Bug] in the title are automatically analyzed by our AI bug handler:
Instant Response: Get immediate feedback on your bug report
Smart Analysis: AI determines if it's a real bug or usage issue
Auto-Fix: Simple bugs may be automatically fixed with a PR
Helpful Guidance: Usage issues receive documentation and examples
See CONTRIBUTING.md for more details.
Security
Security is a top priority. Please see SECURITY.md for:
Reporting vulnerabilities
Security best practices
Supported versions
Never commit credentials or sensitive data!
Roadmap
Version 0.2.0 (Current - Complete β 2026-01-25)
All 7 Feature Phases Complete - 74 MCP Tools
Phase 3: Read-Only Operations (16 tools)
Device management (list, details, statistics, search by type)
Client management (list, details, statistics, search)
Network information (details, VLANs, subnets, statistics)
Site management (list, details, statistics)
MCP resources (sites, devices, clients, networks)
Phase 4: Mutating Operations with Safety (13 tools)
Firewall rule management (create, update, delete)
Network configuration (create, update, delete networks/VLANs)
Device control (restart, locate, upgrade)
Client management (block, unblock, reconnect)
Safety mechanisms (confirmation, dry-run, audit logging)
Phase 5: Enterprise scale and operational excellence (11 tools)
WiFi/SSID management (create, update, delete, statistics)
Port forwarding configuration (create, delete, list)
DPI statistics (site-wide, top apps, per-client)
Redis caching with automatic invalidation
Webhook support for real-time events
Phase 6: Zone-Based Firewall (12 working tools)
Zone management (create, update, delete, list, assign networks) - 7 tools β WORKING
Zone-to-zone policies via Firewall Policies v2 API - 5 tools β WORKING (PR #13)
Legacy zone matrix endpoints - 5 tools β ENDPOINTS DO NOT EXIST (use v2 API instead)
Application blocking per zone (DPI-based blocking) - 2 tools β ENDPOINTS DO NOT EXIST
Zone statistics and monitoring - 1 tool β ENDPOINT DOES NOT EXIST
Type-safe Pydantic models for ZBF and Firewall Policies
Comprehensive unit tests (84% coverage)
Endpoint verification on U7 Express and UDM Pro (v10.0.156)
Phase 7: Traffic Flow Monitoring (15 tools) β COMPLETE
Real-time traffic flow monitoring and analysis
Flow filtering by IP, protocol, application, time range
Connection state tracking (active, closed, timed-out)
Client traffic aggregation with top applications/destinations
Bandwidth rate calculations for streaming flows
Security quick-response capabilities (block suspicious IPs)
Type-safe Pydantic models for traffic flows
Comprehensive unit tests (86.62% coverage)
Advanced analytics and reporting capabilities
ZBF Implementation Notes (Verified 2025-11-18):
β Zone CRUD operations work (local gateway API only)
β Zone-to-zone policies work via Firewall Policies v2 API (local gateway API only)
β Legacy zone matrix endpoints NOT available via API (use v2 API instead)
β Application blocking per zone NOT available via API
β Zone statistics NOT available via API
See docs/archive/ZBF_STATUS.md for complete details and examples
Phase 1: QoS Enhancements (11 tools) β
QoS profile management (CRUD operations)
Reference profiles and ProAV templates
Traffic routing with time-based schedules
Application-based QoS configuration
Coverage: 82.43% (46 tests passing)
Phase 2: Backup & Restore (8 tools) β
Manual and automated backup creation
Backup listing, download, and verification
Backup restore functionality
Automated scheduling with cron expressions
Cloud synchronization tracking
Coverage: 86.32% (10 tests passing)
Phase 3: Multi-Site Aggregation (4 tools) β
Cross-site device and client analytics
Site health monitoring with scoring
Side-by-side site comparison
Consolidated reporting across locations
Coverage: 92.95% (10 tests passing)
Phase 4: ACL & Traffic Filtering (7 tools) β
Layer 3/4 access control list management
Traffic matching lists (IP, MAC, domain, port)
Firewall policy automation
Rule ordering and priority
Coverage: 89.30-93.84%
Phase 5: Site Management Enhancements (9 tools) β
Multi-site provisioning and configuration
Site-to-site VPN setup
Device migration between sites
Advanced site settings management
Configuration export for backup
Coverage: 92.95% (10 tests passing)
Phase 6: RADIUS & Guest Portal (6 tools) β
RADIUS profile configuration (802.1X)
RADIUS accounting server support
Guest portal customization
Hotspot billing and voucher management
Session timeout and redirect control
Coverage: 69.77% (17 tests passing)
Phase 7: Network Topology (5 tools) β
Complete topology graph retrieval
Multi-format export (JSON, GraphML, DOT)
Device interconnection mapping
Port-level connection tracking
Network depth analysis
Coverage tracked in Codecov and CI
Quality Achievements:
1,236 tests passing
18/18 CI/CD checks passing
Zero security vulnerabilities
30+ AI assistant example prompts
Comprehensive documentation (docs/archive/VERIFICATION_REPORT.md, API.md)
Total: 74 MCP tools + Comprehensive documentation and verification
Version 0.3.0 (Future - Planned)
VPN Management (site_vpn.py - 0% coverage currently)
WAN Management (wans.py - 0% coverage currently)
Enhanced ZBF Matrix (zbf_matrix.py - improve 65% coverage)
Integration tests for caching and webhooks
Performance benchmarks and optimization
Additional DPI analytics (historical trends)
Bulk device/client operations
Advanced traffic flow analytics
Version 1.0.0 (Future)
Complete UniFi API coverage (remaining endpoints)
Advanced analytics dashboard
VPN configuration management
Alert and notification management
Bulk operations for devices
Traffic shaping and QoS management
Acknowledgments
This project is inspired by and builds upon:
sirkirby/unifi-network-mcp - Reference implementation
MakeWithData UniFi MCP Guide - Tutorial and guide
Anthropic MCP - Model Context Protocol specification
FastMCP - MCP server framework
License
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
Support
Issues: GitHub Issues
Discussions: GitHub Discussions
Documentation: See API.md and other docs in this repository
Links
Repository: https://github.com/enuno/unifi-mcp-server
Releases: https://github.com/enuno/unifi-mcp-server/releases
Docker Registry: https://ghcr.io/enuno/unifi-mcp-server
npm Package: https://www.npmjs.com/package/unifi-mcp-server
MCP Registry: Search for
io.github.enuno/unifi-mcp-serverat https://registry.modelcontextprotocol.ioDocumentation: API.md | SKILLS.md | VERIFICATION_REPORT.md
UniFi Official: https://www.ui.com/
π Star History
If you find this project useful, please consider starring it on GitHub to help others discover it!
Made with β€οΈ for the UniFi and AI communities
Available Tools
43 toolscompare_site_performanceC
Compare performance metrics across all sites.
Analyzes uptime, latency, bandwidth, and health status to identify best and worst performing sites.
Args: settings: Application settings
Returns: Performance comparison with rankings and metrics
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 implies read-only analysis but does not explicitly state safety, idempotency, or side effects. The mention of 'analyzes' suggests no mutations, but it 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 reasonably concise with the core purpose front-loaded, but the inclusion of a conflicting args section and a 'Returns' line that likely duplicates output schema info reduces efficiency. Every sentence should be earned.
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?
Even with an output schema, the tool fails to provide context on when to compare performance vs. get individual metrics. The misleading args section and lack of usage guidance leave the agent underinformed for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema declares zero parameters, but the description lists 'Args: settings: Application settings'. This directly contradicts the schema, confusing agents. Schema coverage is 100% but the description adds misleading information.
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 compares performance metrics across all sites, listing specific metrics like uptime, latency, bandwidth, and health status. However, it does not explicitly distinguish itself from similar sibling tools such as 'get_cross_site_statistics' or 'get_internet_health'.
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 are there any prerequisites or exclusions mentioned. The description is purely declarative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connector_network_deleteB
Proxy a DELETE request to the Network Application via Cloud Connector.
Args: console_id: UniFi console/host identifier path: Network API sub-path settings: Application settings confirm: Must be True to execute dry_run: Preview without sending
Returns: Raw response or dry-run preview
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| confirm | No | ||
| dry_run | No | ||
| console_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses the destructive nature (DELETE) and safety mechanisms (confirm required, dry_run available). However, it omits details like authentication needs, rate limits, and consequences of execution. The mention of 'settings' param not in schema is confusing.
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 relatively concise but includes an undocumented parameter (settings), which reduces clarity. It could be better structured with separate sections for behavior and parameters.
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 annotations and the existence of an output schema, the description covers key safety and testing features (confirm, dry_run). However, it does not explain return values beyond 'raw response or preview', and the 'settings' discrepancy undermines 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 coverage is 0%, so description adds meaning for three of four actual parameters (console_id, path, confirm, dry_run). It explains dry_run as preview without sending. However, it erroneously includes 'settings' which is not in the schema, and does not clarify the confirm parameter's type mismatch (allows string but description says boolean).
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 proxies a DELETE request to the Network Application via Cloud Connector, accurately reflecting its purpose and distinguishing it from sibling tools like connector_network_get, patch, post, and put.
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., POST for creation, PUT for updates). The description only explains parameters, not usage context or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connector_network_getB
Proxy a GET request to the Network Application via Cloud Connector.
Forwards the request to
https://api.ui.com/v1/connector/{console_id}/proxy/network/{path}
and returns the raw response.
Args:
console_id: UniFi console/host identifier (from list_hosts)
path: Network API sub-path, e.g. api/s/default/stat/device
settings: Application settings (UNIFI_SITE_MANAGER_ENABLED required)
params: Optional query parameters
Returns: Raw response from the proxied Network API endpoint
Raises: ValidationError: If console_id or path is empty ValueError: If Site Manager API is not enabled
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| params | No | ||
| console_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so description carries full burden. It states the request is forwarded and returns raw response, and lists raised exceptions (ValidationError, ValueError). However, it mentions a 'settings' parameter that does not appear in the input schema, creating confusion about 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?
Description is structured with Args/Returns/Raises sections, which aids readability. However, it includes a parameter ('settings') not present in the schema, adding confusion. It could be more concise by removing the erroneous parameter.
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 complexity as a proxy GET, the description covers the basic behavior and error cases. It references output schema implicitly ('raw response'), but lacks details on pagination or response structure. More context on how path relates to the Network API 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 coverage is 0%, so description must explain parameters. It describes 'console_id' and 'path' with examples and 'params' as optional query parameters. However, it also lists a 'settings' argument that is not in the schema, which is misleading and contradictory. This reduces effectiveness.
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 proxies a GET request to the Network Application via Cloud Connector, specifying the verb and resource. It differentiates itself from sibling tools that handle other HTTP methods (DELETE, PATCH, POST, PUT) for the same connector.
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 implies usage for retrieving data from the Network API via proxy but does not explicitly state when to use this tool versus alternatives. It mentions required settings (UNIFI_SITE_MANAGER_ENABLED) but lacks guidance on 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.
connector_network_patchC
Proxy a PATCH request to the Network Application via Cloud Connector.
Args: console_id: UniFi console/host identifier path: Network API sub-path settings: Application settings body: Optional request body confirm: Must be True to execute dry_run: Preview without sending
Returns: Raw response or dry-run preview
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| path | Yes | ||
| confirm | No | ||
| dry_run | No | ||
| console_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that 'confirm' must be true to execute and supports dry_run. However, lacks annotations and does not detail side effects, authorization requirements, or rate limits. For a PATCH operation, it provides basic but not complete behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Relatively concise, listing arguments and return value. However, the inclusion of a non-existent 'settings' parameter wastes words and reduces efficiency.
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 complexity (5 params, no annotations, output schema exists but not described), the description leaves gaps: no explanation of response format beyond 'raw response', no error handling info, and no context for the 'dry_run' preview.
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 attempts to explain parameters but includes 'settings' which is not in the schema, creating confusion. It also fails to describe the 'body' parameter's structure or the exact meaning of 'path' sub-path.
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 proxies a PATCH request to the Network Application, which distinguishes it from other HTTP methods like PUT. However, the mention of a 'settings' parameter not present in the schema slightly muddies the 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 explicit guidance on when to use this tool versus siblings (e.g., connector_network_put). The description implies it's for partial updates, but does not state when-not or provide alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connector_network_postA
Proxy a POST request to the Network Application via Cloud Connector.
Args:
console_id: UniFi console/host identifier (from list_hosts)
path: Network API sub-path, e.g. api/s/default/rest/wlanconf
settings: Application settings
body: Optional request body to forward
confirm: Must be True to execute (mutating operation)
dry_run: If True, preview the request without sending it
Returns: Raw response or dry-run preview
Raises: ValidationError: If console_id/path is empty or confirm not provided ValueError: If Site Manager API is not enabled
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| path | Yes | ||
| confirm | No | ||
| dry_run | No | ||
| console_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses mutation behavior (confirm required), dry-run capability, and error conditions. However, it omits authentication needs, rate limits, or side effects beyond mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with Args, Returns, Raises sections and a clear summary sentence. It is appropriately detailed without excessive verbosity.
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 5 parameters and no annotations, the description covers most behaviors (mutation, dry-run, errors) but lacks details on rate limits, network dependencies, and does not clarify the extra 'settings' 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 adds meaning to parameters via docstring but introduces a 'settings' parameter not present in the input schema, causing inconsistency. Schema coverage is 0%, so the description partially compensates but with a discrepancy.
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 'Proxy a POST request to the Network Application via Cloud Connector,' specifying verb, resource, and distinguishing from sibling HTTP method tools (delete, get, patch, put).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the need for 'confirm' to execute the mutation and 'dry_run' to preview, but does not explicitly contrast with alternatives like GET or other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connector_network_putB
Proxy a PUT request to the Network Application via Cloud Connector.
Args: console_id: UniFi console/host identifier path: Network API sub-path settings: Application settings body: Optional request body confirm: Must be True to execute dry_run: Preview without sending
Returns: Raw response or dry-run preview
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| path | Yes | ||
| confirm | No | ||
| dry_run | No | ||
| console_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It mentions confirm as a safety mechanism and dry_run for preview, but omits details about side effects, idempotency, authentication, or rate limits. Additionally, the description lists a 'settings' parameter that is not present in the input schema, introducing inconsistency.
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 uses a clear bullet list for parameters. However, the inclusion of an undocumented 'settings' parameter slightly reduces clarity. Overall, it is well-structured and 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?
Given 5 parameters, no annotations, and 0% schema coverage, the description should fully cover usage. It addresses most parameters but misses format guidance (e.g., path syntax, console_id pattern) and has the settings discrepancy. The output schema is mentioned but not detailed.
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 console_id, path, body, confirm, and dry_run, but includes 'settings' which is not in the schema, causing confusion. The explanations are brief and lack formatting details.
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 'Proxy a PUT request to the Network Application via Cloud Connector,' which specifies the verb (PUT), resource (Network Application), and mechanism (Cloud Connector). This distinguishes it from sibling tools like connector_network_get, connector_network_post, 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 explains key usage with parameters: confirm ('Must be True to execute') and dry_run ('Preview without sending'). While it doesn't explicitly compare to other methods, the HTTP method in the name implies its use case for updates/creations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connector_protect_deleteC
Proxy a DELETE request to the Protect Application via Cloud Connector.
Args: console_id: UniFi console/host identifier path: Protect API sub-path settings: Application settings confirm: Must be True to execute dry_run: Preview without sending
Returns: Raw response or dry-run preview
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| confirm | No | ||
| dry_run | No | ||
| console_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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 mentions confirm and dry_run parameters but fails to describe authentication, rate limits, side effects, return value details, or error scenarios. The mention of a non-existent 'settings' parameter further reduces transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, listing arguments and return value efficiently. The structure is clear, but the inclusion of an extra parameter ('settings') introduces unnecessary noise.
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 complexity of a proxy tool (network request, destructive action) and lack of output schema details, the description is incomplete. It omits error handling, response structure beyond 'raw response or preview', and important behavioral context like idempotency or prerequisites.
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 explains console_id, path, confirm, and dry_run, adding meaning beyond the schema. However, it includes a 'settings' parameter not in the schema, misleading about available inputs. This inconsistency lowers 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 it proxies a DELETE request to the Protect Application via Cloud Connector, distinguishing it from other HTTP methods. However, it mentions a 'settings' argument not present in the input schema, which could cause confusion.
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 any guidance on when to use this tool versus alternatives (e.g., other HTTP methods). It lacks context on prerequisites, when not to use it, or how it fits into a workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connector_protect_getA
Proxy a GET request to the Protect Application via Cloud Connector.
Forwards the request to
https://api.ui.com/v1/connector/{console_id}/proxy/protect/{path}
and returns the raw response.
Args:
console_id: UniFi console/host identifier (from list_hosts)
path: Protect API sub-path, e.g. v1/cameras
settings: Application settings (UNIFI_SITE_MANAGER_ENABLED required)
params: Optional query parameters
Returns: Raw response from the proxied Protect API endpoint
Raises: ValidationError: If console_id or path is empty ValueError: If Site Manager API is not enabled
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| params | No | ||
| console_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description discloses the forwarding behavior and raises, but does not cover rate limits, idempotency, or side effects. The mention of required site manager settings adds some 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 well-structured with sections for arguments, returns, and raises, and is concise without 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 existence of an output schema and the proxy nature, the description covers the main purpose and basic behavior, but lacks detail on authentication and header forwarding.
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 provides context for console_id and path, and mentions params, but includes a 'settings' parameter not in the input schema, causing confusion. Schema coverage is 0%, so the description adds some but incomplete 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?
The description clearly states it proxies a GET request to the Protect Application via Cloud Connector, distinguishing it from sibling tools with different HTTP methods.
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 implicitly differentiates usage via its HTTP method name and sibling names (e.g., connector_protect_delete), but lacks explicit guidance on when to use this tool vs alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connector_protect_patchB
Proxy a PATCH request to the Protect Application via Cloud Connector.
Args: console_id: UniFi console/host identifier path: Protect API sub-path settings: Application settings body: Optional request body confirm: Must be True to execute dry_run: Preview without sending
Returns: Raw response or dry-run preview
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| path | Yes | ||
| confirm | No | ||
| dry_run | No | ||
| console_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that 'confirm' must be True to execute and 'dry_run' provides preview, but lacks details on mutation effects, authentication needs, or error behavior. With no 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?
Description is concise with clear Args and Returns sections. It efficiently conveys the tool's purpose and key parameters 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?
Despite having an output schema (not shown), the description leaves out details about how the proxy works, the meaning of 'path', the role of 'settings', and error handling. The missing schema parameter further reduces 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?
Adds meaning to schema parameters (e.g., console_id as host identifier, path as sub-path) beyond their names. However, it introduces a 'settings' parameter not in the schema, reducing clarity and consistency.
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 proxies a PATCH request to the Protect Application, distinguishing it from GET/POST/DELETE/PUT siblings. However, it lists a 'settings' parameter not present in the input schema, causing minor confusion.
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 connector_protect_put or connector_protect_post. The description implies it's for PATCH operations but doesn't specify use cases or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connector_protect_postA
Proxy a POST request to the Protect Application via Cloud Connector.
Args:
console_id: UniFi console/host identifier
path: Protect API sub-path, e.g. v1/cameras/{id}/snapshot
settings: Application settings
body: Optional request body
confirm: Must be True to execute
dry_run: Preview without sending
Returns: Raw response or dry-run preview
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| path | Yes | ||
| confirm | No | ||
| dry_run | No | ||
| console_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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 discloses key behavioral traits: the need for 'confirm' to execute, the 'dry_run' preview feature, and the proxy nature. However, it lacks details on authentication requirements or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with separate Args and Returns sections, and the purpose is front-loaded. However, it includes an extraneous parameter ('settings') and could be slightly more 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 annotations and a moderate complexity (5 params), the description covers the basic operation and preview mode but omits error handling, required permissions, and rate limits. The output schema exists and is partially addressed.
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 for most parameters (e.g., path, body, confirm, dry_run) but includes a 'settings' parameter that does not exist in the input schema, creating confusion. With 0% schema description coverage, this inconsistency reduces usability.
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 ('Proxy a POST request') and the resource ('Protect Application via Cloud Connector'), distinguishing it from sibling tools like connector_protect_get or connector_protect_delete.
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 sending POST requests to Protect API sub-paths but does not explicitly state when to use POST vs other methods (GET, PUT, DELETE) or compare with siblings. No 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.
connector_protect_putA
Proxy a PUT request to the Protect Application via Cloud Connector.
Args: console_id: UniFi console/host identifier path: Protect API sub-path settings: Application settings body: Optional request body confirm: Must be True to execute dry_run: Preview without sending
Returns: Raw response or dry-run preview
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| path | Yes | ||
| confirm | No | ||
| dry_run | No | ||
| console_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses dry_run and confirm behavior, and states the return type. However, it does not cover potential side effects, authentication needs, rate limits, or error handling, leaving gaps in 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 concise, with a clear purpose statement and bulleted parameters. It is front-loaded and avoids redundancy. Every sentence adds value, though the 'settings' line could be removed or corrected.
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 an output schema present (not shown), the description adds return type info. But it omits prerequisites, error scenarios, and integration details. Given the tool's complexity as a proxy request, it is moderately complete but could include more 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?
Schema description coverage is 0%, so description must compensate. It adds meaning for parameters like console_id, path, body, confirm, dry_run, but mentions a 'settings' parameter not present in schema, causing confusion. Overall, it provides useful context but has an inconsistency.
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 'Proxy a PUT request to the Protect Application via Cloud Connector,' which is a specific verb and resource. It distinguishes from sibling tools like connector_protect_get, connector_protect_post, etc., by indicating the HTTP method and target application.
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 guidelines: confirm must be True to execute, dry_run for preview. It does not explicitly compare to alternatives (e.g., when to use PUT vs POST), but the parameter instructions add clarity for correct usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cross_site_statisticsC
Get aggregate statistics across multiple sites.
Args: settings: Application settings
Returns: Cross-site statistics
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions a 'settings' parameter, but the input schema has no properties, creating a contradiction. Without annotations, the description fails to disclose any behavioral traits such as idempotency, side effects, or 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 short but includes unnecessary docstring formatting. The contradiction between description and schema suggests it was not carefully reviewed. It is not a model of conciseness due to the error.
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 an output schema (not shown), the description lacks details about what the aggregate statistics contain or how they are computed. The parameter mismatch further reduces 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 includes a parameter 'settings: Application settings' that does not exist in the input schema. This is misleading and adds conflict rather than clarity. Schema coverage is 100% because no params, but description adds erroneous information.
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 aggregate statistics across multiple sites. It is specific about the verb 'get' and the resource 'cross-site statistics', but it does not differentiate from potentially similar sibling tools like 'list_all_sites_aggregated' or 'search_across_sites'.
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. There are many sibling tools with overlapping functionality, but the description provides no context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hostC
Get host details by ID.
Args: settings: Application settings host_id: Host identifier
Returns: Host details
| Name | Required | Description | Default |
|---|---|---|---|
| host_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries full burden. It discloses nothing beyond the core action: it's a read operation (get). It does not mention side effects, authentication needs, rate limits, or error handling (e.g., if host_id not found). This is insufficient for a tool with no annotation support.
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 line plus arg/return notes). It is front-loaded with the core action. However, it is under-specified and lacks detail, making it less useful than a longer, more informative description would be.
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, likely returns a host object) and the presence of an output schema, the description could still be more complete. It omits any mention of error cases, response formats, or unique behavior. In a context with many sibling tools, more context would aid selection.
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 parameter, host_id, with no description (0% coverage). The description adds 'Host identifier,' which is essentially a restatement of the parameter name. It provides no additional semantic value, such as format, constraints, or examples.
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 host details by ID.' This distinguishes it from sibling tools like list_hosts (which returns all hosts) and get_site_details (different resource). The verb-resource pair 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?
No guidance is provided on when to use this tool vs alternatives. There is no mention of prerequisites, exclusions, or scenarios where another tool would be more appropriate. The description simply states what it does without context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_integration_clientC
Get a single connected client via the integration API.
Args: site_id: Site identifier client_id: Client UUID settings: Application settings
Returns: Client details
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | ||
| client_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description does not disclose any behavioral traits such as read-only nature, authentication requirements, or rate limits. It merely states what the tool does.
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 contains unnecessary and incorrect information (the 'settings' arg). It could be more concise by removing the misleading line.
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?
While an output schema exists, the description provides only a vague 'Returns: Client details'. The omission of the 'settings' parameter from the schema is not addressed, leaving the agent confused about parameter expectations.
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 only lists parameter names without adding meaning. Moreover, it includes a non-existent 'settings' parameter, which contradicts the schema and misleads the agent.
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 verb 'get' and resource 'single connected client' clearly indicate the tool's purpose. However, the description mentions a 'settings' parameter that is not in the input schema, causing slight confusion.
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 its sibling 'list_integration_clients'. There is no mention of prerequisites or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_integration_deviceC
Get a single adopted device via the integration API.
Args: site_id: Site identifier device_id: Device UUID settings: Application settings
Returns: Device details
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | ||
| device_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description must fully disclose behavioral traits. It indicates a read operation ('Get') but adds no details about auth requirements, error handling, rate limits, or consequences. Furthermore, it mentions a 'settings' parameter not present in the input schema, creating a misleading inconsistency.
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 relatively short and front-loaded with the main purpose. However, the inclusion of an extra parameter and the 'Args'/'Returns' structure adds unnecessary length. A more streamlined description would be preferable.
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 2 required parameters and no schema descriptions, the description should be more complete. It omits error conditions, required permissions, and relationship to sibling tools. The output schema exists but does not cover behavioral 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?
Schema coverage is 0%, so description is critical. It explains site_id and device_id minimally ('Site identifier', 'Device UUID') but also includes a nonexistent 'settings' parameter, which harms clarity and accuracy. The descriptions for actual parameters are too terse to aid correct usage.
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 single adopted device via the integration API. The verb 'get' and the resource 'single adopted device' are specific. It distinguishes from listing tools like list_integration_devices but does not explicitly differentiate from similar get tools like get_host.
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 does not specify prerequisites, exclusions, or context in which this tool is preferred over sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_integration_dns_policyB
Get a single DNS policy via the integration API.
Args: site_id: Site identifier policy_id: DNS policy UUID settings: Application settings
Returns: DNS policy details
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | ||
| policy_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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 correctly indicates a read operation ('Get') but does not mention any side effects, permissions, or rate limits. The return details are vague.
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 but includes an extraneous parameter ('settings') not in the schema, which harms accuracy. It would be improved by removing the misleading line.
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 output schema, the description adequately conveys the primary purpose but lacks details on error handling, required permissions, or the scope of 'DNS policy details'.
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 provides basic meaning for 'site_id' and 'policy_id' but incorrectly includes 'settings: Application settings' which is not in the input schema. This inconsistency reduces 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 'Get a single DNS policy' using a specific verb and resource, distinguishing it from the sibling 'list_integration_dns_policies' tool which retrieves multiple policies.
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 'list_integration_dns_policies'. There is no mention of prerequisites or contextual usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_integration_wifi_broadcastC
Get a single WiFi broadcast via the integration API.
Args: site_id: Site identifier broadcast_id: WiFi broadcast UUID settings: Application settings
Returns: WiFi broadcast details
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | ||
| broadcast_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It does not mention that the tool is read-only, authentication requirements, rate limits, or any side effects. The return is vaguely described as 'WiFi broadcast details.'
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 fairly concise but includes an erroneous parameter ('settings'). The structure is clear with arguments listed, but the extra parameter wastes 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?
For a simple get tool with two parameters, the description lacks essential details like that site_id and broadcast_id are required, and does not explain the output structure despite having an output schema. No usage hints are provided.
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 should clarify parameters. It repeats obvious names for site_id and broadcast_id but adds a non-existent 'settings' parameter not in the schema, causing confusion and reducing 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?
The description states 'Get a single WiFi broadcast via the integration API,' clearly specifying the verb and resource. It distinguishes from the sibling tool 'list_integration_wifi_broadcasts' which retrieves multiple broadcasts.
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 listing broadcasts. The description does not provide context for when a single get is appropriate or when to fall back to list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_internet_healthC
Get internet health metrics across sites.
Args: settings: Application settings site_id: Optional site identifier. If None, returns aggregate metrics.
Returns: Internet health metrics
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description lacks behavioral disclosures such as side effects, authentication needs, or rate limits. For a read-like tool, it only states what it does without any transparency about limitations or behaviors beyond the 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?
The description is relatively short but includes an unnecessary 'Args' section that lists a non-existent 'settings' parameter, making it slightly less structured. It front-loads the purpose but wastes space on incorrect parameter documentation.
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, output schema exists), the description covers the basic functionality. However, the misleading 'settings' argument and lack of details about the return structure (despite output schema being present) leave it incomplete for an autonomous agent looking for precise invocation 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?
The description adds meaning to the 'site_id' parameter by explaining that None yields aggregate metrics. However, it incorrectly lists 'settings: Application settings' as an argument, which does not appear in the input schema (only site_id is present). This misalignment reduces the value added and could confuse an agent.
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 internet health metrics across sites', specifying the verb (Get) and resource (internet health metrics). It hints at aggregation behavior by mentioning 'site_id' optionality, which slightly distinguishes it from sibling tools like get_site_health_summary or get_isp_metrics, though not explicitly.
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 usage guidance by indicating that site_id is optional and that omitting it returns aggregate metrics. However, it does not specify when to prefer this tool over similar siblings like compare_site_performance or get_cross_site_statistics, leaving room for ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_isp_metricsB
Get ISP metrics for a specific site.
Args: settings: Application settings site_id: Site identifier
Returns: ISP metrics data including bandwidth, latency, jitter, and packet loss
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It mentions return data types (bandwidth, latency, jitter, packet loss) but does not cover side effects, required permissions, or rate limits. Adequate but incomplete.
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 (4 lines), front-loaded with the action, and contains only essential information. 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 low complexity (1 param) and presence of output schema, the description is adequate but could be improved by noting common use cases or mentioning sibling tools. Lacks guidance for comprehensive 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?
Schema description coverage is 0%; the description only restates the parameter name 'site_id' as 'Site identifier' without adding meaning or format. The return description does not compensate for parameter 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?
The description clearly states the tool's action ('Get ISP metrics') and its target ('for a specific site'), distinguishing it from siblings like query_isp_metrics which may be more general.
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 like query_isp_metrics or compare_site_performance. The description lacks context for appropriate usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sdwan_configC
Get SD-WAN configuration by ID.
Args: settings: Application settings config_id: Configuration identifier
Returns: SD-WAN configuration details
| Name | Required | Description | Default |
|---|---|---|---|
| config_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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 read-only, destructive potential, or authorization needs. Merely states it returns configuration details.
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 includes an extra Args section that does not match the schema, reducing clarity. The Returns line is empty. It is front-loaded but not entirely accurate.
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 get-by-ID operation, the description is minimal. It does not explain behavior on missing IDs, error handling, or provide details about the output despite an output schema existing. The mismatch between Args and schema further detracts from 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 lists two parameters ('settings', 'config_id') in the Args block, but the input schema only contains 'config_id' as a required property. This mismatch misleads about available parameters. Schema description coverage is 0%, so the description fails to add meaningful semantic 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?
Clearly states 'Get SD-WAN configuration by ID', using a specific verb and resource. Distinguishes from siblings like 'list_sdwan_configs' and 'get_sdwan_config_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?
Implies usage for retrieving a specific config by ID, but lacks explicit guidance on when to use this tool versus alternatives, or any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sdwan_config_statusC
Get SD-WAN configuration deployment status.
Args: settings: Application settings config_id: Configuration identifier
Returns: SD-WAN configuration deployment status
| Name | Required | Description | Default |
|---|---|---|---|
| config_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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 behavioral traits. It only states it gets status but does not mention side effects, permissions, rate limits, or whether it's a safe read operation. Minimal 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 includes an 'Args:' section with 'settings' which does not exist in the schema, making it inaccurate. A true concise description would not include extraneous or incorrect parameters.
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 with one required parameter and an output schema, but the description fails to explain the return value, possible statuses, or additional context needed for correct invocation. It is incomplete.
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 add meaning. It describes 'config_id' as 'Configuration identifier', which is minimally helpful. More critically, it lists a non-existent parameter 'settings: Application settings', contradicting the schema and misleading the agent.
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 SD-WAN configuration deployment status', using a specific verb ('Get') and resource ('SD-WAN configuration deployment status'). This distinguishes it from siblings like 'get_sdwan_config' and 'list_sdwan_configs'.
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, exclusions, 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.
get_site_detailsC
Get detailed site information.
Args: site_id: Site identifier settings: Application settings
Returns: Site details dictionary
Raises: ResourceNotFoundError: If site not found
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It mentions that a ResourceNotFoundError is raised for missing sites and returns a dictionary, which is helpful. However, it does not state whether the tool is read-only, any side effects, authorization requirements, or performance characteristics.
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 relatively short and structured with Args, Returns, Raises sections. It is efficient but could be more concise by removing redundant phrasing. Overall, it is well-organized and front-loaded with the core 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 description covers the basic return type and error condition. Since an output schema exists, the return values may be detailed there. However, the description lacks information about what 'detailed site information' includes, and the parameter is minimally described. The tool is simple, so this is adequate but not 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 schema has 0% description coverage for the parameter 'site_id'. The description's Args section says 'Site identifier', which adds minimal meaning beyond the schema. No additional context like format, examples, or constraints 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?
Description states 'Get detailed site information', which clearly identifies the tool's purpose as retrieving site details. The verb 'get' and resource 'site details' are specific. However, it does not differentiate from sibling tools like get_site_health_summary or get_site_inventory, leaving ambiguity about what 'detailed' includes.
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 siblings. There is no mention of prerequisites, when to avoid, or alternative tools. The description is purely functional with no usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_site_health_summaryA
Get health summary for all sites or a specific site.
Args: settings: Application settings site_id: Optional site identifier. If None, returns summary for all sites.
Returns: Health summary
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. It discloses that setting site_id to None returns summary for all sites, but lacks details on authentication, rate limits, or data freshness.
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 brief and uses a structured Args/Returns format. It is front-loaded with the main purpose. Could be slightly more concise by removing the erroneous 'settings' line.
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 an output schema (not shown), the description adequately covers purpose and parameter behavior. However, it lacks guidance on when to choose this tool over many similar sibling tools.
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?
Description explains site_id parameter meaning and default behavior, which adds value over the schema (0% coverage). However, it misleadingly includes 'settings: Application settings' in Args, which is not in the input schema, causing confusion.
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 health summary for all sites or a specific site', using a specific verb and resource. It distinguishes from siblings by noting optional site_id for individual site vs. all sites.
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 (with or without site_id) but does not explicitly guide when to use this tool over siblings like get_site_details or get_cross_site_statistics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_site_inventoryA
Get comprehensive inventory for a site or all sites.
Provides detailed breakdown of resources including devices, clients, networks, SSIDs, VPN tunnels, and firewall rules.
Args: settings: Application settings site_id: Optional site identifier. If None, returns inventory for all sites.
Returns: Site inventory or list of site inventories
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 indicates the tool retrieves inventory (read operation) and lists components, but does not disclose potential permissions, data size implications, or whether it is cheap or expensive to call. The 'comprehensive' nature suggests a potentially heavy operation, which is not warned about.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear purpose sentence, a bullet list of included resources (though not in markdown), and standard Args/Returns sections. It could be slightly more concise by removing the redundant 'Args' and 'Returns' labels if not needed, but overall it is 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?
With only one parameter and an output schema (not shown but indicated), the description provides adequate context: return type (site inventory or list of site inventories) and the scope of data. The tool is simple, and the coverage is 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?
Schema description coverage is 0%, but the description adds meaningful context: it explains the site_id parameter is optional and that omitting it returns inventory for all sites. This goes beyond the schema's 'anyOf' type and default null.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description starts with a specific verb ('Get') and resource ('comprehensive inventory for a site or all sites'), and the bullet list of components clearly distinguishes it from sibling tools that retrieve individual elements (e.g., list_sites, get_site_details) or focus on performance (compare_site_performance).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the optional site_id parameter and its behavior ('If None, returns inventory for all sites'), but does not explicitly state when to prefer this tool over alternatives like get_site_details or list_sites. The usage context is implied but lacks explicit guidance or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_version_controlB
Get API version control information.
Args: settings: Application settings
Returns: Version control information including current, latest, and deprecated versions
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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. It discloses the return fields (current, latest, deprecated), but does not mention any side effects, rate limits, or authentication needs. It is minimally 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 short and front-loaded with purpose, but includes an unnecessary and incorrect parameter line. Every sentence should earn its place; this one does not.
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 output schema exists, the description's mention of return fields is helpful. However, the incorrect parameter mention and lack of usage guidance make it incomplete for a fully informative tool 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 no parameters, but the description includes an 'Args: settings: Application settings' line, which is misleading and contradicts the schema. This reduces the value added for parameter 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 the tool retrieves API version control information, which is a specific verb-resource combination. It distinguishes itself from sibling tools that focus on performance, connectors, integration, 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?
No guidance is provided on when to use this tool versus alternatives, or any prerequisites. The description merely 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.
health_checkA
Health check endpoint to verify server is running.
Returns: Status information
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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 states the tool returns status information but does not explicitly disclose that it is a read-only, non-destructive operation. For an AI agent, explicit safety guarantees are missing.
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 sentences. Every word serves a purpose, making it easy to parse quickly 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?
The description is adequate for a simple health check with no parameters and an output schema. It covers the purpose and return value, though it could mention typical use cases like monitoring or startup verification.
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 add parameter semantics. Schema coverage is 100%, meeting 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 is for a health check to verify the server is running, using a specific verb and resource. It is distinct from all sibling tools which are focused on network, connector, and integration operations.
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 verify server status, but does not explicitly state when to use or not use it, nor does it mention any alternatives. Given the clear purpose and lack of similar tools, implied usage is acceptable but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_all_sites_aggregatedA
List all sites with aggregated stats from Site Manager API.
Args: settings: Application settings
Returns: List of sites with aggregated statistics
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates a read operation with no side effects. While no annotations exist, the description is sufficient for a simple list tool. The mention of 'aggregated stats' gives useful context beyond the tool name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and the description is short. However, the 'Args' and 'Returns' lines are unnecessary for a tool with no parameters and an existing output schema, adding minor clutter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the output schema exists, the description does not explain what 'aggregated stats' means or any limitations. The misleading parameter documentation also reduces completeness. 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?
The description includes 'Args: settings: Application settings' but the input schema has no parameters. This is a clear contradiction that misleads the agent, despite 100% schema coverage and 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 it lists all sites with aggregated stats, using a specific verb ('list') and resource ('all sites'). It distinguishes from sibling tools like list_sites which likely lacks aggregated 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 explicit guidance on when to use this tool versus alternatives like list_sites or get_site_details. The description implies it's for an overview with aggregated stats, but does not provide when-not-to-use or direct alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_dpi_application_categoriesA
List DPI application categories via the integration API.
This endpoint is global (not site-scoped) and returns the canonical list of application categories used by DPI and traffic-routing features.
Args: settings: Application settings limit: Maximum number of categories to return (1-1000) offset: Number of categories to skip
Returns: Paginated list of DPI categories
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description carries burden. It mentions pagination and that it returns categories. However, it does not discuss permission requirements, error scenarios, or behavior when parameters are omitted.
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?
Very efficient: three short paragraphs with clear structure. Front-loaded summary, then context, then parameters. 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 the presence of an output schema, description adequately covers purpose, scope, parameters, and pagination. Missing details like authentication or rate limits, but simple enough 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?
Adds meanings beyond the schema: limit range (1-1000), offset as skip count. Schema only defines types and nullability, so description adds 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?
The description clearly states it lists DPI application categories and specifies it is global. However, it does not explicitly differentiate itself from sibling tools like list_integration_* tools, though the name and context are sufficient.
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 context that it is global and not site-scoped, implying when it should be used (for global DPI categories). No explicit when-not-to-use or alternative tools mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_hostsC
List all managed hosts/consoles.
Args: settings: Application settings limit: Optional maximum number of hosts to return offset: Optional number of hosts to skip (for pagination)
Returns: List of managed hosts
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only repeats pagination details from the schema. It does not disclose any behavioral traits, such as performance implications, authorization requirements, or whether the result is sorted. The mention of a nonexistent 'settings' parameter further harms 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 relatively short but includes an unnecessary and incorrect 'settings' line. The structure is clear with labeled sections but could be more focused.
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?
While the output schema exists, the description lacks context about the scope of 'all managed hosts', any filtering, or how it differs from similar tools. With no annotations, the description does not sufficiently compensate for missing behavioral or contextual information.
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 'limit' and 'offset' for pagination, adding meaning beyond the raw schema. However, it also lists a 'settings' argument that does not exist in the input schema, which misleads the agent about available 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 states 'List all managed hosts/consoles,' clearly indicating a list operation. However, it incorrectly mentions a 'settings' parameter that is absent from the input schema, causing confusion.
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 'get_host' or 'search_across_sites'. No discussion of prerequisites or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_integration_clientsC
List connected clients via the integration API.
Args: site_id: Site identifier settings: Application settings limit: Maximum number of clients to return (1-1000) offset: Number of clients to skip
Returns: Paginated list of integration API clients
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| site_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must disclose behavior. It mentions pagination and a limit range (1-1000), but does not cover ordering, defaults for missing parameters, or authentication requirements. The description adds some value but is incomplete.
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 uses a docstring structure with Args and Returns, which is clear. However, it includes an erroneous parameter and could be more front-loaded. The length is appropriate but not maximally 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?
For a list tool with pagination, the description is fairly complete, noting it returns a paginated list. However, it omits prerequisites like authentication and does not specify the ordering of results. The output schema may cover return values, but overall completeness is average.
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 should compensate. It adds a range for limit (1-1000) and describes site_id, but incorrectly includes a non-existent parameter 'settings', which contradicts the schema. This error significantly 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 'List connected clients via the integration API,' using a specific verb and resource. It distinguishes from siblings by specifying 'clients' among many list_integration_* tools, though it doesn't explicitly differentiate from get_integration_client.
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_integration_client or other list_integration_* tools. The description lacks context for appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_integration_devicesC
List adopted devices via the integration API.
Args: site_id: Site identifier (UUID or internal reference) settings: Application settings limit: Maximum number of devices to return (1-1000) offset: Number of devices to skip
Returns: Paginated list of integration API devices
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| site_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavior. Mentions 'List' (read-only) and 'Returns paginated list' but does not address auth requirements, rate limits, or side effects. Minimal behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Docstring format with Args and Returns is clear and front-loaded. However, includes an incorrect parameter ('settings'), reducing conciseness. Reasonably structured but flawed.
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?
Output schema exists (paginated list) so description need not detail returns, but it does mention pagination. Missing explanation of 'adopted devices' and does not cover all parameters correctly. The erroneous parameter hurts 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?
Description lists 'settings' parameter which is not present in the input schema. This contradicts the schema and adds confusion. Schema coverage is 0%, so description should clarify parameters, but it introduces an error.
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 action (List), resource (adopted devices), and context (via integration API). Distinguishes from siblings like list_integration_clients and list_integration_networks.
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: to list devices. No explicit guidance on when to use vs alternatives (e.g., get_integration_device for a single device) or when not to use. Lacks exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_integration_device_tagsB
List device tags via the integration API.
Args: site_id: Site identifier settings: Application settings limit: Maximum number of tags to return (1-1000) offset: Number of tags to skip
Returns: Paginated list of device tags
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| site_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior. It indicates a read-only operation ('List') and mentions pagination via limit and offset. However, it includes a phantom parameter 'settings' not in the schema, which could confuse an AI agent. It does not describe auth requirements, rate limits, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with a brief opening sentence followed by a structured list of parameters and return type. It avoids unnecessary words. The only minor issue is the extraneous 'settings' parameter, but overall structure is clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with an output schema, the explanation of input parameters and pagination provides adequate context. However, it lacks usage guidance, error conditions, or prerequisites. The presence of a phantom parameter reduces 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 description coverage is 0%, so the description must compensate. It adds meaning to site_id, limit, and offset, including range for limit. However, it also lists 'settings' which is not present in the schema, causing inconsistency. The parameter descriptions are otherwise helpful but not comprehensive.
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 (list) and resource (device tags) via the integration API. It distinguishes from sibling list_* tools by specifying 'device tags' as the target. Could be improved by noting the scope or return structure, but it is sufficient.
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 sibling list_* tools serve different resources, but the description does not clarify the context or prerequisites for using this specific endpoint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_integration_dns_policiesB
List DNS policies via the integration API.
Args: site_id: Site identifier settings: Application settings limit: Maximum number of policies to return (1-1000) offset: Number of policies to skip
Returns: Paginated list of DNS policies
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| site_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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 it lists policies, without disclosing idempotency, permissions, rate limits, or pagination behavior beyond a generic 'Paginated list'. Minimal 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 concise and includes structured Args/Returns, but the erroneous 'settings' parameter reduces accuracy. Otherwise 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?
Given an output schema exists, the description suffices for a simple list operation. It implies site-scoped listing via site_id and pagination. Lacks deeper explanation but 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?
Schema coverage is 0%, but description adds ranges for limit (1-1000). However, it incorrectly mentions a 'settings' parameter not in the schema, causing confusion. Offset info is basic.
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 'List DNS policies via the integration API', using a specific verb and resource. Among siblings, it distinguishes from 'get_integration_dns_policy' by indicating bulk 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?
The description provides no explicit guidance on when to use this tool versus alternatives like 'get_integration_dns_policy'. It does not mention context, prerequisites, 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.
list_integration_networksC
List networks via the integration API.
Args: site_id: Site identifier settings: Application settings limit: Maximum number of networks to return (1-1000) offset: Number of networks to skip
Returns: Paginated list of integration API networks
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| site_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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 mentions 'List' implying read-only, and pagination via limit/offset, but lacks explicit statements about side effects, authentication requirements, or error behaviors.
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 uses a docstring format with separate sections, which is structured but slightly verbose. It contains a brief one-liner and then bulleted args/returns, which is acceptable but not extremely 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?
Despite having an output schema (not shown), the description only says 'Paginated list of integration API networks' without detailing the return fields. It also omits error conditions, making it incomplete for an agent to fully understand the tool's 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?
Schema description coverage is 0%, so description must compensate. The Args section adds meaning for site_id, limit, and offset, but also lists a 'settings' parameter not present in the schema, causing confusion. The explanations are minimal and one is incorrect.
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 'List networks via the integration API', specifying the verb (list), resource (networks), and API scope (integration API). It distinguishes itself from sibling list tools like list_integration_clients or list_integration_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 is provided on when to use this tool versus alternatives such as connector_network_get (which might retrieve a single network) or other list tools. The description lacks usage context or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_integration_sitesB
List sites via the integration API.
Returns UUID-based site identifiers suitable for use with other integration API tools in this module.
Args: settings: Application settings limit: Maximum number of sites to return (1-1000) offset: Number of sites to skip
Returns: Paginated list of integration API sites
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description discloses pagination and return type. However, it omits details on permissions, rate limits, side effects, or handling of large result sets.
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 reasonably concise and structured with bullet-like lists, but the inclusion of a non-existent 'settings' parameter reduces clarity.
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 output schema, the description adequately notes paginated results. However, it lacks details on filtering or pagination metadata, which 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?
The description adds meaning for 'limit' (max 1-1000) and 'offset' (skip count), but incorrectly includes 'settings' in Args which is not in the input schema, causing confusion.
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 lists sites via the integration API and returns UUID-based identifiers, which differentiates it from regular site listing tools. However, it could be more explicit about how it differs from sibling tools like list_sites.
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 by mentioning suitability for other integration API tools, but lacks explicit when-to-use or when-not-to-use guidance, and does not exclude alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_integration_vpn_serversC
List VPN servers via the integration API.
Args: site_id: Site identifier settings: Application settings limit: Maximum number of servers to return (1-1000) offset: Number of servers to skip
Returns: Paginated list of VPN servers
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| site_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It only states the purpose and lists parameters, but lacks disclosure of behavioral traits such as pagination specifics, authentication requirements, or potential side effects. The mention of 'paginated list' 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 uses a structured docstring format with Args and Returns sections. It is relatively concise but includes an extraneous parameter (settings) that does not exist in the schema, reducing clarity.
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 and presence of an output schema, the description is minimal. It fails to explain pagination behavior, the purpose of the site_id, or any constraints beyond the parameter list. The missing settings parameter further undermines 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 adds some value for limit and offset (constraint 1-1000, skip purpose) which schema lacks, but includes a phantom 'settings' parameter not in the schema, creating confusion. Schema coverage is 0%, so description should compensate but instead introduces an error.
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 lists VPN servers via the integration API, with a specific verb and resource. However, it does not explicitly distinguish from sibling list tools like list_integration_clients or list_integration_devices, though the resource name is unique.
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 exclusions, prerequisites, or context about when to prefer this over other list or VPN-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_integration_wansC
List WAN connections via the integration API.
Args: site_id: Site identifier settings: Application settings limit: Maximum number of WANs to return (1-1000) offset: Number of WANs to skip
Returns: Paginated list of WAN connections
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| site_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description only says 'Returns: Paginated list of WAN connections' but does not disclose authentication needs, rate limits, error behavior, or consequences of invalid parameters.
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 structured as a docstring with Args/Returns sections, but includes an extraneous 'settings' parameter. It is moderately concise but could be tighter.
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 output schema exists, the description covers basic parameters and return type. However, it lacks pagination behavior details, error handling, and usage context. It is adequate but not 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 description provides constraints for 'limit' (1-1000) and explains 'site_id' and 'offset', which adds value over the schema (which has 0% description coverage). However, it mentions an extra 'settings' parameter not present in the input schema, causing inconsistency.
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 'List WAN connections' which is a specific verb and resource. It also mentions pagination via limit/offset, but does not differentiate from siblings like list_integration_networks or list_integration_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 this tool versus alternatives. No prerequisites, context, or exclusions mentioned. The description only explains parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_integration_wifi_broadcastsC
List WiFi broadcasts (SSIDs) via the integration API.
Args: site_id: Site identifier settings: Application settings limit: Maximum number of broadcasts to return (1-1000) offset: Number of broadcasts to skip
Returns: Paginated list of WiFi broadcasts
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| site_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 states a 'paginated list' is returned, which is helpful, but fails to disclose whether the operation is read-only, any authentication needs, or potential rate limits. The phantom 'settings' parameter undermines reliability.
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 structured with an Args section and Returns, but it includes redundant phrasing ('via the integration API') and an extra line for the phantom 'settings' parameter. Could be more concise without sacrificing accuracy.
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 that an output schema exists, the description does not need to detail return values extensively, but it does mention 'paginated list'. Missing is a comparison with the singular get endpoint or any prerequisite context. Overall 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?
Schema description coverage is 0%, so the description must explain all parameters. It does describe the three schema parameters (site_id, limit, offset) adequately, but erroneously includes a 'settings' parameter not present in the schema, confusing the agent.
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 (List) and resource (WiFi broadcasts/SSIDs). It implicitly distinguishes from the sibling tool 'get_integration_wifi_broadcast' by using 'list' vs 'get'. However, the inclusion of a non-existent parameter 'settings' slightly diminishes clarity.
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 explicit guidance on when to use this tool versus alternatives like 'get_integration_wifi_broadcast'. It only implies the usage through the name and parameter descriptions, but no when-to-use or when-not-to-use context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sdwan_configsC
List all SD-WAN configurations.
Args: settings: Application settings
Returns: List of SD-WAN configurations
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It only states 'List all SD-WAN configurations' without disclosing pagination, permissions, rate limits, or any side effects. The read-only nature is implied but 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 very short, but it includes an inaccurate 'Args' section that takes space without value. It is not efficiently structured; front-loading would be better.
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 that the tool has an output schema and no parameters, the description could be minimal. However, it fails to explain the scope of 'all' configurations, any sorting or filtering, or how the output relates to other tools. The mention of a non-existent parameter further reduces 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 input schema has zero properties, but the description introduces a non-existent parameter 'settings: Application settings'. This directly contradicts the schema and misleads about required inputs, earning a low score.
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 'List all SD-WAN configurations,' which clearly indicates a list operation on SD-WAN configs. However, it includes an 'Args' section mentioning 'settings' that does not exist in the input schema, causing confusion. Siblings like get_sdwan_config imply singular retrieval, but the description does not explicitly differentiate.
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 get_sdwan_config or get_sdwan_config_status. There is no mention of prerequisites, filters, or context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sitesC
List all accessible sites.
Args: settings: Application settings limit: Maximum number of sites to return offset: Number of sites to skip
Returns: List of site dictionaries
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states that it returns a list of site dictionaries, but does not mention side effects, access control, rate limits, or pagination behavior. The agent is left uninformed about operational details.
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 a clear docstring format with Args and Returns sections. It avoids unnecessary verbosity, though the Args section is minimal and could be more 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?
Given that an output schema exists, the description does not need to detail return values, but it still does. However, it lacks information on authentication, pagination defaults, and what qualifies as 'accessible'. It is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 merely restates parameter names (limit, offset) without explaining their semantics, defaults, or effects. For example, it does not clarify that limit controls the maximum number of results or how offset works.
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 'List all accessible sites.' which specifies the verb and resource. However, it does not differentiate it from sibling tools like list_all_sites_aggregated, which might offer similar functionality with aggregation.
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 context about prerequisites, scenarios, or comparisons with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_vantage_pointsC
List all Vantage Points.
Args: settings: Application settings
Returns: List of Vantage Points
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are available, so the description holds the full burden. It only says 'List all Vantage Points' without disclosing any behavioral traits such as ordering, pagination, or side effects. There is no mention of read-only nature or data freshness.
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 but contains inaccurate information (fictitious 'settings' parameter). It is not concise in a helpful way, as every sentence should be correct.
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, an empty input schema, and an output schema available, the description is insufficient. It fails to explain what a Vantage Point is, how to use the tool, or any prerequisites.
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, giving a baseline of 4. However, the description incorrectly lists an 'settings: Application settings' argument, contradicting the schema. This misleading information worsens the score.
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 'List all Vantage Points' with a specific verb and resource, making the tool's purpose unambiguous. Despite many sibling list tools, the resource 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 like other list tools (e.g., list_hosts, list_sites). The description does not mention context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_isp_metricsC
Query ISP metrics with optional filters.
Args: settings: Application settings site_id: Optional site identifier (None for all sites) start_time: Optional start time in ISO format (e.g., "2026-02-01T00:00:00Z") end_time: Optional end time in ISO format
Returns: List of ISP metrics matching the query
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | No | ||
| end_time | No | ||
| start_time | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 only states it returns a list of metrics, but does not disclose safety profile, authentication needs, rate limits, or mutation behavior. This 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 concise with a summary line and structured Args/Returns format. However, the inclusion of an extra parameter ('settings') not in the schema is a clarity issue.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and 0% schema coverage, the description is insufficient. It lacks information on pagination, filtering behavior, error handling, and completeness of the return values. Output schema exists but description still needs more behavioral 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?
Schema coverage is 0%, so description must compensate. It describes three schema parameters (site_id, start_time, end_time) with format hints, but also includes 'settings' which is not in the schema, causing inconsistency. It adds some meaning, but inaccuracy reduces score.
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 queries ISP metrics with optional filters. The verb 'query' is specific. However, it does not distinguish from sibling tool 'get_isp_metrics', which likely performs a similar function.
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 mentioning optional filters but provides no explicit guidance on when to use this tool versus alternatives like 'get_isp_metrics' 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.
search_across_sitesA
Search for resources across all sites.
Search for devices, clients, or networks across all managed sites. Useful for locating resources in multi-site deployments.
Args: settings: Application settings query: Search query (device name, MAC address, client name, network name) search_type: Type of search - "device", "client", "network", or "all"
Returns: Search results with site context
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| search_type | No | all |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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 that search is across all sites and returns site context, but lacks details on performance, pagination, or any non-obvious behaviors (e.g., rate limits). Transparency is adequate 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?
The description is extremely concise with a clear structure: brief intro, search scope, use case, and explicitly labeled Args/Returns sections. Every sentence is purposeful and 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 the tool's moderate complexity (2 params, output schema exists), the description covers the search scope, query types, and site context in returns. It does not elaborate on output schema but that is acceptable since an output schema is present. Minor gap: no mention of result count or 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?
Schema coverage is 0%, so the description must compensate. It fully explains both parameters: 'query' (supported formats) and 'search_type' (valid values with default). This adds crucial semantic 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 the tool's purpose: searching for resources (devices, clients, networks) across all managed sites. It specifies the resource types and highlights usefulness in multi-site deployments, distinguishing it from single-site or inventory tools among 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 provides context ('useful for locating resources in multi-site deployments') but does not explicitly state when not to use this tool or mention alternatives. Clear guidance is given on the scope, but exclusions are absent.
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.
43 tool updates
v0.2.0- First observed
compare_site_performance - First observed
connector_network_delete - First observed
connector_network_get - First observed
connector_network_patch - First observed
connector_network_post - First observed
connector_network_put - First observed
connector_protect_delete - First observed
connector_protect_get - First observed
connector_protect_patch - First observed
connector_protect_post - First observed
connector_protect_put - First observed
get_cross_site_statistics - First observed
get_host - First observed
get_integration_client - First observed
get_integration_device - First observed
get_integration_dns_policy - First observed
get_integration_wifi_broadcast - First observed
get_internet_health - First observed
get_isp_metrics - First observed
get_sdwan_config - First observed
get_sdwan_config_status - First observed
get_site_details - First observed
get_site_health_summary - First observed
get_site_inventory - First observed
get_version_control - First observed
health_check - First observed
list_all_sites_aggregated - First observed
list_dpi_application_categories - First observed
list_hosts - First observed
list_integration_clients - First observed
list_integration_device_tags - First observed
list_integration_devices - First observed
list_integration_dns_policies - First observed
list_integration_networks - First observed
list_integration_sites - First observed
list_integration_vpn_servers - First observed
list_integration_wans - First observed
list_integration_wifi_broadcasts - First observed
list_sdwan_configs - First observed
list_sites - First observed
list_vantage_points - First observed
query_isp_metrics - First observed
search_across_sites
TDQS
Scored across 43 tools
Most tools have clearly distinct purposes, with groups like connector_network_* and connector_protect_* differentiated by HTTP method and target. Integration API list/get tools are distinguished by resource type. However, some overlap exists between site-level tools (e.g., compare_site_performance vs get_cross_site_statistics) and between get_isp_metrics vs query_isp_metrics, though descriptions help disambiguate.
Naming follows patterns within subgroups (connector_* method, integration list/get), but across the server there is inconsistency: mix of verb_noun (list_sites, get_host), compound names (list_all_sites_aggregated), and non-verb forms (health_check). No single convention is applied globally.
43 tools is on the high side for a single server, covering many sub-domains (Network, Protect, Integration, SD-WAN, ISP). Some redundancy exists (multiple site-listing tools) and raw connector proxies add to count. The number feels slightly bloated but still manageable for a comprehensive UniFi interface.
The server covers a wide range of UniFi functionality: site management, device/client listing, monitoring, SD-WAN, and raw API access via connectors. However, high-level CRUD operations for core entities (sites, devices, clients) are missing; these are only available through raw connector proxies. Gaps exist for user management and configuration write operations via dedicated tools.
Maintenance
Related MCP Connectors
- mcp-serverOAuthcom.make
Give your AI agents the tools to build, manage, and run automation workflows.
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.
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
Let AI agents query data and act across all your business apps via MCP.
Related MCP Servers
- AlicenseDqualityDmaintenanceEnables comprehensive management of UniFi network infrastructure through the UniFi Cloud API, including device control, client management, camera settings, and access door control through natural language.3918 npmApache 2.0
- AlicenseBqualityDmaintenanceEnables AI assistants to manage UniFi network infrastructure through 50+ tools covering devices, clients, networks, WiFi, firewall rules, and guest access using the official UniFi Network API.5250 npm5MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage and monitor UniFi network infrastructure through natural language, providing 46 management tools across device, client, WiFi, network, firewall, port forwarding, monitoring, and site management.1MIT
- AlicenseCqualityCmaintenanceA Model Context Protocol (MCP) server for UniFi Network Controllers that enables LLMs to interact with UniFi infrastructure for monitoring and control.51MIT