Skip to main content
Glama
owine

UniFi Network MCP Server

by owine

UniFi Network MCP Server

An MCP (Model Context Protocol) server that exposes the UniFi Network Integration API as tools for Claude Code and other MCP clients. Provides 74 tools for managing sites, devices, clients, networks, WiFi, firewalls, ACLs, switching, DNS policies, hotspot vouchers, VPNs, and more.

Prerequisites

  • Node.js 22.13+ or 24 (see engines in package.json)

  • A UniFi Network console with the Integration API enabled

  • An API key generated from your UniFi Network console

Related MCP server: UniFi Network MCP Server

Setup

Quick start (npx)

Add to Claude Code with a single command — no clone or build needed:

claude mcp add-json unifi-network '{"command":"npx","args":["-y","@owine/unifi-network-mcp@latest"],"env":{"UNIFI_NETWORK_HOST":"192.168.1.1","UNIFI_NETWORK_API_KEY":"your-api-key","UNIFI_NETWORK_VERIFY_SSL":"false"}}' -s user

Use -s user for global availability across all projects, or -s project for the current project only.

From source

If you prefer to build locally, this project uses pnpm via Corepack — use pnpm install, not npm install, which ignores pnpm-lock.yaml and resolves different dependency versions:

git clone https://github.com/owine/unifi-network-mcp.git
cd unifi-network-mcp
corepack enable
pnpm install
pnpm run build

Then add to Claude Code:

claude mcp add-json unifi-network '{"command":"node","args":["/path/to/unifi-network-mcp/dist/index.js"],"env":{"UNIFI_NETWORK_HOST":"192.168.1.1","UNIFI_NETWORK_API_KEY":"your-api-key","UNIFI_NETWORK_VERIFY_SSL":"false"}}' -s user

Environment Variables

Variable

Required

Default

Description

UNIFI_NETWORK_HOST

Yes

IP or hostname of your UniFi Network console

UNIFI_NETWORK_API_KEY

Yes

API key from Network integration settings

UNIFI_NETWORK_VERIFY_SSL

No

true

Set to false to skip TLS certificate verification (needed for self-signed certs)

UNIFI_NETWORK_READ_ONLY

No

true

Set to false to enable write/mutating tools (read-only by default)

Manual Configuration

Alternatively, add to your ~/.claude.json under the top-level "mcpServers" key:

{
  "mcpServers": {
    "unifi-network": {
      "command": "npx",
      "args": ["-y", "@owine/unifi-network-mcp@latest"],
      "env": {
        "UNIFI_NETWORK_HOST": "192.168.1.1",
        "UNIFI_NETWORK_API_KEY": "your-api-key",
        "UNIFI_NETWORK_VERIFY_SSL": "false"
      }
    }
  }
}

Safety Features

This server provides layered safety controls for responsible operation:

  • Tool annotations — Every tool declares readOnlyHint, destructiveHint, and idempotentHint so MCP clients (like Claude Code) can make informed confirmation decisions

  • Read-only mode — Enabled by default. Only read operations (list, get) are registered. Set UNIFI_NETWORK_READ_ONLY=false to enable write/mutating tools

  • Destructive tool warnings — Tools that delete or irreversibly modify resources have descriptions prefixed with DESTRUCTIVE: to clearly signal risk

  • Confirmation parameter — Every tool marked DESTRUCTIVE: (all 10 of them, including unifi_remove_device and unifi_bulk_delete_vouchers) requires an explicit confirm: true parameter for the call to succeed

  • Dry-run support — All 33 write tools accept an optional dryRun: true parameter that returns a preview of the HTTP request (method, path, body) without making any changes

Structured Output

58 of the 74 tools (all 41 read tools, plus the 17 write tools whose API responses return the affected resource) declare an MCP outputSchema and return structuredContent alongside the usual text content. Clients that understand structured output get typed, machine-readable results instead of parsing JSON out of a text blob.

The schemas live in src/utils/output-schemas.ts and are verified against UniFi Network API 10.5.43. They deliberately use a loose strategy: every non-key field is optional and nested objects use .passthrough(), so firmware- and hardware-specific fields flow through unchanged rather than being stripped or triggering a validation error. This keeps the contract stable across console versions and hardware models.

Tools (74 total)

System (1)

Tool

Description

unifi_get_info

Get UniFi Network application info — returns applicationVersion only

Sites (1)

Tool

Description

unifi_list_sites

List all sites available to the API key

Devices (8)

Tool

Description

unifi_list_devices

List all adopted devices at a site

unifi_get_device

Get a specific device by ID

unifi_get_device_statistics

Get latest statistics for a device

unifi_list_pending_devices

List devices pending adoption (global)

unifi_adopt_device

Adopt a pending device

unifi_remove_device

DESTRUCTIVE: Remove (unadopt) a device — may factory reset

unifi_restart_device

Restart a device

unifi_power_cycle_port

Power cycle a specific port (PoE restart)

Clients (4)

Tool

Description

unifi_list_clients

List all connected clients (wired, wireless, VPN) at a site

unifi_get_client

Get a specific client by ID

unifi_authorize_guest

Authorize a guest client on a hotspot network

unifi_unauthorize_guest

Unauthorize a guest client

Networks (6)

Tool

Description

unifi_list_networks

List all networks at a site

unifi_get_network

Get a specific network by ID

unifi_get_network_references

Get references to a network (WiFi, firewall zones, etc.)

unifi_create_network

Create a new network

unifi_update_network

Update an existing network

unifi_delete_network

DESTRUCTIVE: Delete a network — disconnects all clients

WiFi (5)

Tool

Description

unifi_list_wifi

List all WiFi broadcasts (SSIDs) at a site

unifi_get_wifi

Get a specific WiFi network by ID

unifi_create_wifi

Create a new WiFi network (SSID)

unifi_update_wifi

Update an existing WiFi network

unifi_delete_wifi

DESTRUCTIVE: Delete a WiFi network — disconnects all clients

Hotspot Vouchers (5)

Tool

Description

unifi_list_vouchers

List all hotspot vouchers at a site

unifi_get_voucher

Get a specific hotspot voucher by ID

unifi_create_voucher

Create hotspot vouchers

unifi_delete_voucher

DESTRUCTIVE: Delete a hotspot voucher

unifi_bulk_delete_vouchers

DESTRUCTIVE: Bulk delete vouchers matching a filter

Firewall Zones & Policies (13)

Tool

Description

unifi_list_firewall_zones

List all firewall zones at a site

unifi_get_firewall_zone

Get a specific firewall zone by ID

unifi_create_firewall_zone

Create a new custom firewall zone

unifi_update_firewall_zone

Update a firewall zone

unifi_delete_firewall_zone

DESTRUCTIVE: Delete a custom firewall zone

unifi_list_firewall_policies

List all firewall policies at a site

unifi_get_firewall_policy

Get a specific firewall policy by ID

unifi_create_firewall_policy

Create a new firewall policy

unifi_update_firewall_policy

Update a firewall policy

unifi_patch_firewall_policy

Partially update a firewall policy (e.g. toggle logging)

unifi_delete_firewall_policy

DESTRUCTIVE: Delete a firewall policy

unifi_get_firewall_policy_ordering

Get user-defined firewall policy ordering for a zone pair

unifi_reorder_firewall_policies

Reorder user-defined firewall policies for a zone pair

ACL Rules (7)

Tool

Description

unifi_list_acl_rules

List all ACL rules at a site

unifi_get_acl_rule

Get a specific ACL rule by ID

unifi_get_acl_rule_ordering

Get user-defined ACL rule ordering

unifi_create_acl_rule

Create a new ACL rule

unifi_update_acl_rule

Update an ACL rule

unifi_delete_acl_rule

DESTRUCTIVE: Delete an ACL rule

unifi_reorder_acl_rules

Reorder user-defined ACL rules

Switching (6)

Tool

Description

unifi_list_switch_stacks

List all Switch Stacks at a site

unifi_get_switch_stack

Get details of a specific Switch Stack

unifi_list_mc_lag_domains

List all MC-LAG (Multi-Chassis LAG) Domains at a site

unifi_get_mc_lag_domain

Get details of a specific MC-LAG Domain

unifi_list_lags

List all LAGs (Link Aggregation Groups) at a site

unifi_get_lag

Get details of a specific LAG

DNS Policies (5)

Tool

Description

unifi_list_dns_policies

List all DNS policies at a site

unifi_get_dns_policy

Get a specific DNS policy by ID

unifi_create_dns_policy

Create a new DNS policy

unifi_update_dns_policy

Update a DNS policy

unifi_delete_dns_policy

DESTRUCTIVE: Delete a DNS policy

Traffic Matching (5)

Tool

Description

unifi_list_traffic_matching_lists

List all traffic matching lists (port groups, IP groups)

unifi_get_traffic_matching_list

Get a specific traffic matching list by ID

unifi_create_traffic_matching_list

Create a new traffic matching list

unifi_update_traffic_matching_list

Update a traffic matching list

unifi_delete_traffic_matching_list

DESTRUCTIVE: Delete a traffic matching list

Supporting (8)

Tool

Description

unifi_list_wans

List all WAN interfaces at a site

unifi_list_vpn_tunnels

List all site-to-site VPN tunnels at a site

unifi_list_vpn_servers

List all VPN servers at a site

unifi_list_radius_profiles

List all RADIUS profiles at a site

unifi_list_device_tags

List all device tags at a site

unifi_list_dpi_categories

List all DPI categories for traffic identification

unifi_list_dpi_applications

List all DPI applications for traffic identification

unifi_list_countries

List all countries/regions for geo-based rules

Development

pnpm install           # Install dependencies
pnpm run build         # Compile TypeScript
pnpm start             # Run the server
pnpm run typecheck     # Type-check without emitting
pnpm run lint          # ESLint
pnpm run lint:fix      # ESLint with auto-fix
pnpm test              # Run all tests (vitest)
pnpm run test:watch    # Run tests in watch mode
pnpm run test:coverage # Run tests with coverage

Commit conventions

This project uses conventional commits and release-please for automated releases:

  • feat: ... — new feature (minor version bump)

  • fix: ... — bug fix (patch version bump)

  • feat!: ... or BREAKING CHANGE: footer — breaking change (major version bump)

  • chore:, docs:, ci:, etc. — no version bump

On push to main, release-please opens a Release PR that bumps the version and updates CHANGELOG.md. Merging that PR publishes to npm automatically.

To override the version number, add Release-As: x.x.x in the commit body:

git commit --allow-empty -m "chore: release 2.0.0" -m "Release-As: 2.0.0"

License

MIT

Available Tools

41 tools
unifi_get_acl_ruleA
Read-only

Get a specific ACL rule by ID (full match criteria and action).

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID
aclRuleIdYesACL rule ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
nameNo
typeNo
actionNo
enabledNo
metadataNo
descriptionNo
sourceFilterNo
protocolFilterNo
destinationFilterNo
enforcingDeviceFilterNo

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, indicating safe read-only behavior. The description adds that the tool returns 'full match criteria and action', which provides some behavioral context beyond the annotations.

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

Conciseness5/5

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

The description is a single, concise sentence that front-loads the verb and resource, with a parenthetical clarifying the output. No unnecessary words.

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

Completeness5/5

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

This is a simple get-by-ID tool. The description, annotations, and output schema (not shown) provide sufficient context for the agent to use it correctly. No gaps identified.

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

Parameters3/5

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

Schema coverage is 100% with clear descriptions for both parameters ('Site ID' and 'ACL rule ID'). The description does not add further meaning to the parameters beyond what the schema already provides.

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

Purpose5/5

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

The description uses a specific verb 'Get' and resource 'ACL rule', and clarifies the return includes 'full match criteria and action'. It distinguishes from siblings like 'unifi_list_acl_rules' and 'unifi_get_acl_rule_ordering' by focusing on a single rule by ID.

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

Usage Guidelines4/5

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

The description clearly states the tool is for retrieving a specific ACL rule by ID, implying use when the ID is known. It does not explicitly state when not to use it or provide alternatives, but the sibling list tool provides contrast.

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

unifi_get_acl_rule_orderingA
Read-only

Get the evaluation order of user-defined ACL rules. Returns: orderedAclRuleIds[]. Rules higher in the list win.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
orderedAclRuleIdsNo

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description confirms a read operation. It adds useful behavioral context by noting that 'Rules higher in the list win', which explains evaluation order. No contradictions.

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

Conciseness5/5

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

Two sentences, front-loaded with action, and no unnecessary words. Every sentence adds value: verb, resource, return format, and ordering semantics.

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

Completeness4/5

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

Given the presence of an output schema (as indicated by context signals), the description sufficiently covers the operation. It mentions the return format and ordering rule. Could be more complete by noting that the site must have ACL rules, but overall adequate for a read-only tool with one parameter.

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

Parameters3/5

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

Schema coverage is 100% with the parameter 'siteId' described as 'Site ID'. The description does not add further semantics beyond what the schema provides, so it meets the baseline of 3.

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

Purpose4/5

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

Description clearly states 'Get the evaluation order of user-defined ACL rules' with a specific verb and resource. It also mentions the return format. However, it does not explicitly differentiate from sibling tools like unifi_get_acl_rule or unifi_list_acl_rules, though context implies differentiation.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as unifi_list_acl_rules or unifi_get_firewall_policy_ordering. The description does not mention prerequisites or conditions, leaving the agent to infer usage context.

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

unifi_get_clientA
Read-only

Get a specific connected client by ID. Returns same shape as unifi_list_clients entries.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID
clientIdYesClient ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
nameNo
typeNo
accessNo
ipAddressNo
macAddressNo
connectedAtNo
uplinkDeviceIdNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate read-only and non-destructive behavior. The description adds that the output shape mirrors that of 'unifi_list_clients', providing valuable behavioral context about return consistency. No contradictions with annotations.

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

Conciseness5/5

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

The description is a single sentence that conveys all essential information without any redundancy. It is appropriately sized and front-loaded.

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

Completeness4/5

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

The description, combined with annotations and schema, provides sufficient context for a simple get-by-ID tool. The mention of 'connected client' adds slight ambiguity (vs. all clients), but overall it is complete enough given the tool's simplicity and existing structured data.

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

Parameters3/5

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

Schema coverage is 100% with both 'siteId' and 'clientId' described. The description does not add additional meaning beyond the schema, so it effectively meets the baseline for parameter semantics.

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

Purpose5/5

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

The description clearly states the verb 'Get', the resource 'specific connected client', and the identifier 'by ID'. It also distinguishes from the sibling tool 'unifi_list_clients' by noting the same shape, making the purpose unambiguous.

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

Usage Guidelines4/5

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

The description implies usage when a single client's details are needed by ID, and the mention of 'same shape as unifi_list_clients entries' indirectly contrasts with listing. However, it lacks explicit when-not-to-use or alternative scenarios, which would elevate clarity.

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

unifi_get_deviceA
Read-only

Get full configuration for a device. Returns (in addition to list fields): supported, firmwareUpdatable, provisionedAt, configurationId, uplink.deviceId, features (object keyed by capability: switching {lags[]} / accessPoint {}), interfaces.ports[] for switches ({idx, state, connector, maxSpeedMbps, speedMbps, poe:{standard, type, enabled, state}}), interfaces.radios[] for APs ({wlanStandard, frequencyGHz, channelWidthMHz, channel}). NOTE: in the LIST endpoint, features/interfaces are capability-tag string arrays instead. Use for: switch port layout/PoE state, AP radio config, uplink topology. For live throughput/CPU/memory, use unifi_get_device_statistics.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID
deviceIdYesDevice ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
nameNo
modelNo
stateNo
uplinkNo
featuresNo
adoptedAtNo
ipAddressNo
supportedNo
interfacesNo
macAddressNo
provisionedAtNo
configurationIdNo
firmwareVersionNo
firmwareUpdatableNo

TDQS

A4.6/5.0
Behavior5/5

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

The description provides extensive detail on the return structure, including fields like interfaces.ports and interfaces.radios, and contrasts with the list endpoint. Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds significant behavioral context beyond that.

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

Conciseness4/5

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

The description is well-structured, front-loading the purpose, then detailing return fields, and ending with usage guidance. It is slightly long but every sentence adds value. Minor improvement could be shortening the field enumeration.

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

Completeness5/5

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

Given the complexity of the tool and the presence of an output schema, the description is complete. It covers what the tool returns, how it differs from the list endpoint, and suggests alternatives for specific use cases. No significant gaps.

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

Parameters3/5

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

Both parameters (siteId, deviceId) have schema descriptions at 100% coverage. The description does not add extra meaning beyond the schema, but the tool's purpose makes the parameter usage clear. Baseline 3 is appropriate as the schema already documents parameters adequately.

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

Purpose5/5

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

The description clearly states 'Get full configuration for a device' and lists specific return fields. It distinguishes from the list endpoint by noting differences in returned data format. The tool's purpose is unambiguous.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool (for switch port layout, PoE state, AP radio config, uplink topology) and when not to (for live statistics, direct to unifi_get_device_statistics). This provides clear guidance for tool selection.

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

unifi_get_device_statisticsA
Read-only

Get latest live statistics for a device. Returns: uptimeSec, lastHeartbeatAt, nextHeartbeatAt, loadAverage1/5/15Min, cpuUtilizationPct, memoryUtilizationPct, uplink (txRateBps, rxRateBps), interfaces.radios[] for APs ({frequencyGHz, txRetriesPct}). NOTE: verified against 10.5.43 — the Integration API does NOT expose per-switch-port byte/error/PoE-power counters here; port-level live stats are unavailable. Use for: device health and AP radio metrics. For config (channel, power, port assignment), use unifi_get_device.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID
deviceIdYesDevice ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
uplinkNo
uptimeSecNo
interfacesNo
lastHeartbeatAtNo
loadAverage1MinNo
loadAverage5MinNo
nextHeartbeatAtNo
loadAverage15MinNo
cpuUtilizationPctNo
memoryUtilizationPctNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, indicating a safe read operation. The description adds valuable behavioral context: it specifies that the tool returns 'latest live statistics', documents the exact fields returned, and discloses an API limitation (no per-switch-port counters). No contradictions with annotations.

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

Conciseness4/5

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

The description is well-structured with the purpose first, then a list of return values, a note about limitations, and usage guidance. Every sentence adds value, though it could be slightly more concise (e.g., the note about API version could be integrated).

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

Completeness5/5

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

Given the presence of an output schema (not shown but indicated) and annotations, the description is complete. It covers the tool's purpose, return fields, limitations (port stats unavailable), and contextual use cases, leaving no critical gaps.

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

Parameters3/5

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

Schema coverage is 100% with clear descriptions for siteId and deviceId. The description does not add additional parameter semantics beyond the schema, which is acceptable given the straightforward parameters. A baseline of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('Get') and resource ('latest live statistics for a device'), and distinguishes itself from the sibling tool unifi_get_device by stating that the latter is for config (channel, power, port assignment).

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

Usage Guidelines5/5

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

Explicitly states when to use this tool ('device health and AP radio metrics') and when to use the alternative ('For config... use unifi_get_device'). Also notes that port-level live stats are unavailable, guiding the agent away from incorrect usage.

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

unifi_get_dns_policyA
Read-only

Get a specific DNS policy by ID (same fields as the list entry).

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID
dnsPolicyIdYesDNS policy ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
typeNo
domainNo
enabledNo
metadataNo
ttlSecondsNo
ipv4AddressNo

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds that the return fields match the list entry, which is useful but limited. No contradictions.

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

Conciseness5/5

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

Extremely concise single sentence, front-loaded with the key action. No wasted words.

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

Completeness5/5

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

For a simple get-by-ID tool with annotations and output schema, the description is fully adequate. It mentions that fields match the list entry, which is helpful context.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for both parameters. The description adds no extra semantics beyond 'by ID', so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states 'Get a specific DNS policy by ID', which is a specific verb+resource. It distinguishes from sibling list endpoints like unifi_list_dns_policies by targeting a single record.

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

Usage Guidelines4/5

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

The description implicitly indicates use when a specific ID is known, but lacks explicit when-not or alternative guidance. Given the name and context, an agent can infer the appropriate usage.

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

unifi_get_firewall_policyB
Read-only

Get a firewall policy by ID with full match criteria and action.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID
firewallPolicyIdYesFirewall policy ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
nameNo
indexNo
actionNo
sourceNo
enabledNo
metadataNo
scheduleNo
descriptionNo
destinationNo
ipsecFilterNo
loggingEnabledNo
ipProtocolScopeNo
connectionStateFilterNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds that the response includes 'full match criteria and action,' which provides some insight into the output but does not disclose other behavioral traits like authorization needs or performance characteristics. This adds moderate value.

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

Conciseness4/5

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

The description is a single, well-structured sentence that efficiently conveys the tool's purpose and a key aspect of its output. It is front-loaded and contains no unnecessary words. However, it is very brief and could benefit from slightly more context.

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

Completeness3/5

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

Given the low complexity (2 simple parameters), the presence of an output schema, and annotations covering safety, the description is minimally adequate. However, it lacks usage guidance and does not elaborate on the 'full match criteria and action' phrase, so it is not fully self-sufficient.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for both parameters (siteId, firewallPolicyId). The description does not add any additional meaning or format details beyond the schema, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the action ('Get') and resource ('firewall policy by ID'), and adds specificity with 'full match criteria and action.' This differentiates it from list tools and other get tools by resource type, though it does not explicitly contrast with sibling tools.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., listing policies with unifi_list_firewall_policies). The description simply states what it does without contextualizing its usage, leaving the agent to infer.

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

unifi_get_firewall_policy_orderingA
Read-only

Get the evaluation order of user-defined firewall policies for a specific (source zone, destination zone) pair. Returns: beforeSystemDefined[] and afterSystemDefined[] arrays of policy IDs. System-defined rules sit between these two arrays.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID
sourceFirewallZoneIdYesSource firewall zone ID
destinationFirewallZoneIdYesDestination firewall zone ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
orderedFirewallPolicyIdsNo

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds that the tool returns 'beforeSystemDefined[] and afterSystemDefined[] arrays', which is behavioral context. However, it does not disclose any additional traits like authentication needs, rate limits, or what happens if the pair doesn't exist.

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

Conciseness5/5

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

The description is two sentences, front-loads the purpose, and includes return structure. Every sentence adds value with no wasted words.

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

Completeness4/5

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

Given the tool's simplicity (3 required params, read-only, output schema exists), the description adequately explains what the tool returns and the ordering. It could mention that it only applies to user-defined policies, but it does. Minor omission: no description of what happens when no policies exist.

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

Parameters3/5

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

The input schema has 100% coverage with brief descriptions for all three parameters. The description does not add any extra meaning, such as format, constraints, or examples. Since schema coverage is high, baseline 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb ('Get') and resource ('evaluation order of user-defined firewall policies') with a clear scope ('for a specific (source zone, destination zone) pair'). This differentiates it from sibling tools like unifi_list_firewall_policies which list all policies, and unifi_get_firewall_policy which gets a single policy.

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

Usage Guidelines3/5

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

The description implies usage by stating what the tool does, but it does not explicitly say when to use this tool versus alternatives like unifi_list_firewall_policies or unifi_get_firewall_policy. There is no guidance on prerequisites or exclusions.

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

unifi_get_firewall_zoneA
Read-only

Get a firewall zone by ID (same fields as the list entry).

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID
firewallZoneIdYesFirewall zone ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
nameNo
metadataNo
networkIdsNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds useful context by stating 'same fields as the list entry', informing the agent about output consistency. No additional behavioral details needed for a simple read operation.

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

Conciseness5/5

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

The description is a single sentence, front-loaded with the action, and contains no superfluous information. It is optimally concise.

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

Completeness4/5

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

Given the tool's simplicity, high schema coverage, and presence of an output schema, the description is nearly complete. It could briefly mention that the output matches list entries, which it does. No major gaps.

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

Parameters3/5

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

Schema coverage is 100% with clear descriptions for both parameters (Site ID, Firewall zone ID). The description adds no new meaning beyond what the schema provides, which is adequate for a simple get-by-ID tool.

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

Purpose5/5

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

The description clearly states the action (Get), resource (firewall zone), and method (by ID). It also differentiates from list tools by noting 'same fields as the list entry', making the purpose unambiguous.

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

Usage Guidelines3/5

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

Usage is implied: use when you need a single zone by ID, while list tools for all zones. However, no explicit when-not or alternative guidance is provided, leaving some ambiguity.

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

unifi_get_infoA
Read-only

Get UniFi Network application info. Returns: applicationVersion. NOTE: verified against 10.5.43 on a UniFi OS console — the Integration API returns ONLY applicationVersion here; there is no isUniFiOSConsole or other field. Use for: version checks before calling version-gated tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
applicationVersionNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the tool is safe. The description adds valuable context: it returns only applicationVersion and notes verification against a specific version. No contradictions.

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

Conciseness5/5

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

The description is concise, using three sentences to convey purpose, return value, version note, and usage hint. No wasted words, and it is front-loaded.

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

Completeness5/5

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

Given zero parameters and an existing output schema, the description adequately covers everything needed: it states the return value (applicationVersion) and provides a usage hint. Complete for a simple info tool.

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

Parameters4/5

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

There are no parameters, so the schema coverage is 100%. The description correctly does not need to add parameter information. Baseline for 0 parameters is 4.

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

Purpose5/5

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

The description clearly states the tool gets UniFi Network application info and specifies it returns only applicationVersion. This distinguishes it from the many sibling tools that manage different resources.

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

Usage Guidelines4/5

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

The description explicitly states 'Use for: version checks before calling version-gated tools,' providing clear guidance on when to use this tool. It does not mention exclusions, but the context is sufficient.

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

unifi_get_lagA
Read-only

Get full details of a LAG including its type (LOCAL/SWITCH_STACK/MULTI_CHASSIS) and member ports.

ParametersJSON Schema
NameRequiredDescriptionDefault
lagIdYesLAG ID
siteIdYesSite ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
typeNo
membersNo
metadataNo

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety profile is covered. Description adds value by specifying that the tool returns the LAG type (with possible values LOCAL/SWITCH_STACK/MULTI_CHASSIS) and member ports. This is additional behavioral context beyond the schema, but no further operational details (e.g., error handling, consistency guarantees) are provided.

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

Conciseness5/5

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

Single sentence of 17 words, no unnecessary information. Every word serves a purpose: verb, resource, output details. Extremely concise while being informative.

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

Completeness5/5

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

For a simple read-only tool with two straightforward parameters, full annotations, and an output schema, the description is complete. It tells the agent what the tool does and what information it returns. No critical gaps for correct invocation.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for both parameters ('LAG ID' and 'Site ID'). The description does not add extra semantic meaning to the parameters beyond what is in the schema. Baseline score of 3 applies since schema is complete.

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

Purpose5/5

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

Description clearly states the action ('Get full details of a LAG') and specifies the resource ('a LAG'). It includes specific details about the output (type with enum values and member ports), which distinguishes it from sibling list tools like unifi_list_lags. The singular 'a LAG' implies it operates on a specific LAG, making purpose unambiguous.

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

Usage Guidelines2/5

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

Description provides no guidance on when to use this tool versus alternatives. It does not mention the need for a siteId or lagId, nor contrasts with unifi_list_lags (which lists LAGs) or other get tools. No context on prerequisites, typical use cases, or when not to use.

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

unifi_get_mc_lag_domainA
Read-only

Get full details of an MC-LAG Domain (peer switches and member LAGs).

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID
mcLagDomainIdYesMC-LAG Domain ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
lagsNo
nameNo
peersNo
metadataNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the tool is known as a safe read operation. The description adds context about the content of the details (peer switches and member LAGs), which goes beyond the annotations and informs the agent of what to expect.

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

Conciseness5/5

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

The description is a single, clear sentence with no unnecessary words. It is front-loaded with the verb and resource, and every word adds value.

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

Completeness4/5

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

Given that an output schema exists to document return values, the description is adequate. It specifies what the tool returns (full details, peer switches, member LAGs), which is complete enough for an agent to understand its purpose. Minor omission: no mention of prerequisites like the domain existing, but that is implicit.

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

Parameters3/5

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

Schema description coverage is 100%, with each parameter having a basic description (Site ID, MC-LAG Domain ID). The tool description does not add any additional meaning or nuance beyond what the schema already provides, so baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool retrieves full details of an MC-LAG Domain, including peer switches and member LAGs. It distinguishes from sibling tool unifi_list_mc_lag_domains, which lists domains rather than retrieving details.

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

Usage Guidelines3/5

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

The description implies usage when full details of a specific domain are needed, but it does not explicitly mention when not to use it or suggest alternatives like unifi_list_mc_lag_domains for listing domains first. Usage context is only implied.

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

unifi_get_networkA
Read-only

Get a network/VLAN by ID. Returns the list fields PLUS (live-verified) zoneId, isolationEnabled, internetAccessEnabled, mdnsForwardingEnabled, cellularBackupEnabled, and a full ipv4Configuration object (hostIpAddress, prefixLength, dhcpConfiguration with ipAddressRange/leaseTimeSeconds/domainName/ntpServerIpAddresses). NOTE: subnet/DHCP detail appears here at get-by-id but NOT in unifi_list_networks (sparse list view).

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID
networkIdYesNetwork ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
nameNo
vlanIdNo
zoneIdNo
defaultNo
enabledNo
metadataNo
managementNo
dhcpGuardingNo
isolationEnabledNo
ipv4ConfigurationNo
cellularBackupEnabledNo
internetAccessEnabledNo
mdnsForwardingEnabledNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. Description adds value by specifying response fields (live-verified zoneId, etc.) and clarifying that this endpoint returns richer data than the list endpoint. No contradiction.

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

Conciseness5/5

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

Three concise sentences, front-loaded with purpose, followed by specific fields and a differentiating note. No redundancy or filler.

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

Completeness5/5

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

Output schema exists, so description need not detail return values. It provides a high-level summary of key fields and notes the difference from the list tool. Sufficient for a simple get-by-ID operation.

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

Parameters3/5

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

Schema description coverage is 100%, with both parameters (siteId, networkId) having basic descriptions. The tool description does not add further parameter semantics beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

Clearly states 'Get a network/VLAN by ID' with verb and resource. Lists specific fields returned and explicitly contrasts with sibling unifi_list_networks, making the purpose unambiguous.

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

Usage Guidelines5/5

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

Directly indicates when to use (needing full details) and notes that unifi_list_networks is sparse. Provides clear differentiation: use this for detailed view, list for overview.

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

unifi_get_network_referencesA
Read-only

Get all objects that reference this network (WiFi broadcasts, firewall zones, etc.). Returns: { referenceResources: [...] }. Use before deleting a network to find dependencies that need to be re-pointed or removed.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID
networkIdYesNetwork ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
referenceResourcesNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate readOnly and non-destructive. Description adds that the return is referenceResources, providing useful behavioral context beyond annotations.

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

Conciseness5/5

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

Two efficient sentences that front-load the purpose, include examples, and explain the return format. No wasted words.

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

Completeness5/5

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

With good annotations, full schema coverage, and output schema mentioned, the description is complete for a reference-listing tool.

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

Parameters3/5

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

Schema coverage is 100%, so parameters are well-documented. Description does not add extra meaning to siteId or networkId beyond what schema provides.

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

Purpose5/5

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

The description clearly states the tool gets all objects referencing a network, with examples (WiFi broadcasts, firewall zones), and distinguishes it from siblings like unifi_get_network and unifi_list_networks.

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

Usage Guidelines4/5

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

Explicitly says to use before deleting a network to find dependencies. Does not mention when not to use or alternatives, but context is clear given sibling tools.

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

unifi_get_switch_stackA
Read-only

Get full details of a Switch Stack including all members and stacking topology. Returns the same fields as the list response but for a single stack.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID
switchStackIdYesSwitch Stack ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
lagsNo
nameNo
membersNo
metadataNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description's addition of 'full details' and 'stacking topology' is helpful but not critical. No contradictions.

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

Conciseness5/5

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

Two concise sentences with no wasted words. Everything serves a purpose.

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

Completeness5/5

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

Given the tool's simplicity (get by ID, 2 required params) and the presence of an output schema, the description is fully adequate. It states what the tool does and how it differs from the list version.

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

Parameters3/5

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

Schema coverage is 100%, and both parameters are described in the schema. The description adds no additional meaning beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the verb 'Get' and the resource 'Switch Stack', specifies it returns 'full details including all members and stacking topology', and explicitly distinguishes from the list tool by noting 'same fields as the list response but for a single stack'.

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

Usage Guidelines4/5

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

The description implies when to use this tool (single stack) versus the list tool (multiple stacks). It does not explicitly exclude other scenarios or name alternative tools, but the context is clear enough.

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

unifi_get_traffic_matching_listA
Read-only

Get a specific traffic matching list by ID (full items array).

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID
trafficMatchingListIdYesTraffic matching list ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
nameNo
typeNo
itemsNo
metadataNo

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already mark the tool as readOnlyHint=true and destructiveHint=false, so the description adds only minor context by noting that the response contains the 'full items array'. No mention of rate limits, permissions, or other behavioral traits beyond what is implied by 'Get'.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no extraneous words. It efficiently conveys the essential action and scope, though it could be slightly expanded to include usage hints without sacrificing conciseness.

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

Completeness3/5

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

Given the tool's simplicity, two required parameters, and presence of an output schema, the description is adequate but lacks context about when to use this vs. other list tools. It does not explain what a traffic matching list is or how the ID relates to other operations, leaving gaps for a new agent.

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

Parameters3/5

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

The input schema covers 100% of parameters with clear descriptions for `siteId` and `trafficMatchingListId`. The description does not add any additional semantic value beyond what the schema already provides, so it meets the baseline without improvement.

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

Purpose5/5

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

The description clearly states the action ('Get') and the resource ('a specific traffic matching list by ID'), distinguishing it from sibling tools like `unifi_list_traffic_matching_lists`, which retrieves all lists. The mention of '(full items array)' further clarifies the scope of the returned data.

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

Usage Guidelines3/5

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

The description implies usage when you have a specific ID, but it does not explicitly contrast with list tools or explain when not to use it. No context is provided for prerequisites or alternatives, making it minimally adequate.

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

unifi_get_voucherA
Read-only

Get a specific hotspot voucher by ID (same fields as the list entry).

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID
voucherIdYesVoucher ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
codeNo
nameNo
expiredNo
createdAtNo
expiresAtNo
activatedAtNo
rxRateLimitKbpsNo
txRateLimitKbpsNo
timeLimitMinutesNo
authorizedGuestCountNo
authorizedGuestLimitNo
dataUsageLimitMBytesNo

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=true and destructiveHint=false, indicating safe read behavior. The description adds minor value by clarifying return structure consistency with list entries, but no additional behavioral traits beyond annotations.

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

Conciseness5/5

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

One sentence conveying essential purpose and a key behavioral note. No wasted words; perfectly concise.

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

Completeness5/5

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

Given the tool's simplicity, presence of output schema, and comprehensive annotations, the description provides all necessary context alongside structured fields.

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

Parameters3/5

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

Input schema has 100% description coverage, with each parameter already described ('Site ID', 'Voucher ID'). The description adds no new meaning beyond the schema, so baseline score of 3 applies.

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

Purpose5/5

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

Description states 'Get a specific hotspot voucher by ID' – a clear verb+resource pair. Also notes 'same fields as the list entry' to distinguish from listing endpoints, effectively differentiating from unifi_list_vouchers.

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

Usage Guidelines4/5

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

Implicitly guides using this when a specific voucher ID is known, contrasting with list tools. However, no explicit 'when not to use' or direct mention of sibling alternatives.

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

unifi_get_wifiA
Read-only

Get full configuration for a WiFi broadcast (SSID), including all optional fields not always returned by list: clientFilteringPolicy, blackoutScheduleConfiguration, hotspotConfiguration, mdnsProxyConfiguration, handoffSuggestionsConfiguration, dtimPeriodByFrequencyGHzOverride, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID
wifiBroadcastIdYesWiFi Broadcast ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
nameNo
typeNo
enabledNo
networkNo
hideNameNo
metadataNo
mloEnabledNo
bandSteeringEnabledNo
securityConfigurationNo
broadcastingDeviceFilterNo
broadcastingFrequenciesGHzNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds value by detailing that the tool returns additional optional fields like clientFilteringPolicy and blackoutScheduleConfiguration. This goes beyond the annotations, providing useful behavioral context without contradiction.

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

Conciseness5/5

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

The description is a single, well-formed sentence that front-loads the primary action and then lists specific fields. Every word adds value; there is no redundancy or filler. It is maximally concise while conveying essential information.

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

Completeness4/5

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

Given the low complexity (2 required parameters, 100% schema coverage, and an output schema present), the description is complete in explaining what extra fields are provided relative to the list tool. It could mention error handling, but the presence of an output schema reduces the need for that. Overall, it adequately covers the tool's context.

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

Parameters3/5

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

The input schema has 100% coverage, with both parameters (siteId, wifiBroadcastId) having clear descriptions. The description does not add new semantic information about the parameters themselves; it focuses on the output scope. Hence, baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly specifies the verb 'Get', the resource 'full configuration for a WiFi broadcast (SSID)', and distinguishes itself from list tools by emphasizing it includes optional fields not returned by unifi_list_wifi. It also lists specific fields, leaving no ambiguity about what the tool does.

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

Usage Guidelines4/5

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

The description explicitly states that this tool returns optional fields not always returned by the list counterpart, guiding the agent to use this when full configuration is needed. Although it doesn't explicitly mention when not to use it, the context is clear enough to differentiate from the sibling list tool.

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

unifi_list_acl_rulesA
Read-only

List ACL rules (switch/AP-level access control lists, distinct from zone-based firewall policies) at a site. Returns: id, type (IPV4/MAC), name, enabled, action (ALLOW/BLOCK), description, protocolFilter, source/destination matchers. ACLs apply earlier in the path than firewall policies.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of records to return (default: 25, max: 200)
filterNoFilter expression
offsetNoNumber of records to skip (default: 0)
siteIdYesSite ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
countNo
limitNo
offsetNo
totalCountNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds that ACLs apply earlier in the path than firewall policies, providing behavioral context beyond annotations. No contradictions.

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

Conciseness5/5

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

Two sentences with high density: first sentence states purpose and differentiation, second lists return fields and adds path context. No wasted words, front-loaded.

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

Completeness4/5

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

Output schema exists, so return values are covered. The description provides purpose, differentiation, and path ordering. With 4 well-documented parameters and output schema, it is complete enough for agent selection.

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

Parameters3/5

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

Schema description coverage is 100%, all parameters have descriptions. The description does not add extra meaning beyond the schema; baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states it lists ACL rules for switch/AP-level access control, distinguishing from zone-based firewall policies. It specifies the resource and scope, and differentiates from sibling tools like unifi_list_firewall_policies.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool vs alternatives. The mention of 'distinct from zone-based firewall policies' hints at differentiation but doesn't advise on when to choose this over other list tools like unifi_get_acl_rule.

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

unifi_list_clientsA
Read-only

List currently connected clients at a site. Returns per client: id, name, type (WIRED/WIRELESS/VPN/TELEPORT), macAddress, ipAddress, connectedAt, uplinkDeviceId (the switch/AP they're attached to), access.type. NOTE: verified against 10.5.43 — the Integration API client schema is minimal and identical across types; it does NOT expose signal strength, channel, or per-port binding. Use for: who's online right now. Disconnected/historical clients are NOT in the Integration API.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of records to return (default: 25, max: 200)
filterNoFilter expression
offsetNoNumber of records to skip (default: 0)
siteIdYesSite ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
countNo
limitNo
offsetNo
totalCountNo

TDQS

A4.4/5.0
Behavior5/5

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

Annotations show readOnlyHint and destructiveHint already. The description adds that the schema is minimal, does not expose signal strength/channel/per-port binding, and notes version verification, providing transparency beyond annotations without contradiction.

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

Conciseness4/5

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

The description is well-structured with key info upfront (action, returned fields, limitations). It is moderately concise; each sentence adds value, though it could be slightly tighter.

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

Completeness5/5

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

Given the presence of an output schema, the description appropriately lists key fields and explains limitations (no signal strength, no historical data). It is complete for a list tool with clear scope.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for all parameters. The description adds minimal extra meaning beyond schema (e.g., default limit), so baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states 'List currently connected clients at a site', specifying the verb, resource, and scope. It also lists key returned fields, distinguishing it from sibling list tools for other resources.

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

Usage Guidelines4/5

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

It explicitly states 'Use for: who's online right now' and clarifies that disconnected/historical clients are not included, guiding appropriate usage. It does not explicitly name alternative tools but context implies differentiation.

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

unifi_list_countriesA
Read-only

List countries/regions (global) for geo-IP firewall rules. Returns: code (ISO alpha-2, e.g. 'US'), name. Use the code when building firewall policies that match by source/destination country.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of records to return (default: 25, max: 200)
filterNoFilter expression (e.g., 'name.like(United*)')
offsetNoNumber of records to skip (default: 0)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
countNo
limitNo
offsetNo
totalCountNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds value by detailing the return format (code, name) and mentions the global scope, but does not discuss edge cases or parameter behavior beyond schema.

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

Conciseness5/5

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

Two sentences: first states action and context, second specifies return values and usage. No wasted words, front-loaded with the main purpose.

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

Completeness5/5

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

The description covers the tool's purpose, return format, and how to use the output. Combined with full schema coverage and readOnly annotations, there are no gaps for this simple listing tool.

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

Parameters3/5

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

Schema coverage is 100% with parameter descriptions. The description does not add new parameter-level details but reinforces the purpose (e.g., 'global' implies limit/filter/offset act on a global list). Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool lists countries/regions for geo-IP firewall rules, specifies return fields (code, name), and distinguishes it from sibling tools that list other Unifi entities like devices or policies.

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

Usage Guidelines4/5

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

The description guides the agent to use the returned code when building firewall policies that match by country. While it doesn't explicitly state when not to use it, the context is clear enough for a list lookup tool.

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

unifi_list_devicesA
Read-only

List all adopted devices (gateways, switches, APs) at a site. Returns: id, name, model, macAddress, ipAddress, state (ONLINE/OFFLINE/etc), supported, firmwareVersion, firmwareUpdatable, features[] (capability tags, e.g. ['switching'] or ['accessPoint']), interfaces[] (e.g. ['ports'] or ['radios']). NOTE: features/interfaces are string arrays here; unifi_get_device expands them into objects. Use for: device inventory; pair with unifi_get_device for full config (port table, radios) and unifi_get_device_statistics for live metrics.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of records to return (default: 25, max: 200)
filterNoFilter expression
offsetNoNumber of records to skip (default: 0)
siteIdYesSite ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
countNo
limitNo
offsetNo
totalCountNo

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds behavioral context such as that features/interfaces are string arrays here and that it lists only adopted devices. No contradictions.

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

Conciseness4/5

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

The description is slightly long but well-structured: first sentence states purpose, then lists return fields, then provides usage notes. Front-loaded with the main action. Could trim minor redundancy.

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

Completeness5/5

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

Given the tool complexity (4 parameters, output schema exists, annotations present), the description is highly complete. It explains return values with examples and provides pairing suggestions, covering all necessary context.

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

Parameters3/5

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

Schema coverage is 100%, so the description does not need to add parameter details. It does not provide extra semantics beyond the schema, so a baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states it lists all adopted devices (gateways, switches, APs) at a site, and distinguishes from siblings by mentioning the return fields and noting that unifi_get_device expands features/interfaces. It 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.

Usage Guidelines5/5

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

Explicitly says 'Use for: device inventory' and recommends pairing with unifi_get_device for full config and unifi_get_device_statistics for live metrics, providing clear guidance on when and how to use the tool versus alternatives.

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

unifi_list_device_tagsA
Read-only

List device tags at a site. Tags group APs/switches for selective WiFi broadcast (via broadcastingDeviceFilter on a WiFi network). Returns: id, name, deviceIds[].

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of records to return (default: 25, max: 200)
filterNoFilter expression
offsetNoNumber of records to skip (default: 0)
siteIdYesSite ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
countNo
limitNo
offsetNo
totalCountNo

TDQS

A3.9/5.0
Behavior3/5

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

Annotations declare readOnlyHint=true and destructiveHint=false, so the description need not repeat. It adds context about tag purpose and return fields but does not disclose additional behavioral traits like performance or limits beyond what annotations provide.

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

Conciseness5/5

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

Two sentences cover action, purpose, and return fields with no superfluous text. Efficient and front-loaded with the core function.

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

Completeness5/5

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

Given the simple list operation with pagination parameters and an output schema, the description sufficiently covers the tool's behavior. It adds useful context on tag purpose and return structure.

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

Parameters3/5

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

All 4 parameters have schema descriptions (100% coverage), so the description adds minimal extra meaning. It provides overall context but no details about the parameters beyond the schema.

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

Purpose5/5

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

The description clearly states the tool lists device tags at a site and explains the purpose of tags for selective WiFi broadcast. It specifies the return fields (id, name, deviceIds[]), making it distinct from sibling listing tools.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives or provide exclusions. While the context of tag usage is given, there is no guidance on when not to use it or how it complements other tools.

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

unifi_list_dns_policiesB
Read-only

List DNS policies (local DNS records and forward rules served by the gateway) at a site. Returns: id, type (A_RECORD, AAAA_RECORD, CNAME_RECORD, MX_RECORD, TXT_RECORD, SRV_RECORD, FORWARD_DOMAIN), enabled, domain, ipv4Address, ttlSeconds.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of records to return (default: 25, max: 200)
filterNoFilter expression
offsetNoNumber of records to skip (default: 0)
siteIdYesSite ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
countNo
limitNo
offsetNo
totalCountNo

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds that policies are 'served by the gateway' and lists return fields, which provides some behavioral context but omits details like rate limits or full output format.

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

Conciseness5/5

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

The description is a single sentence followed by a list of fields. It is extremely concise, front-loaded with the core action, and contains no superfluous information.

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

Completeness4/5

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

Given the presence of annotations and an output schema, the description is adequate. It lists key return fields, which helps the agent understand expected output. A minor gap is the lack of explanation for filter parameter usage.

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

Parameters3/5

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

The input schema has 100% description coverage for all parameters. The description does not add any extra meaning beyond the schema definitions, so it meets the baseline for this dimension.

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

Purpose4/5

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

The description clearly states the tool lists DNS policies at a site, with a specific verb and resource. It lists return fields but does not explicitly differentiate from siblings like unifi_get_dns_policy, though the naming convention suggests the distinction.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, nor are there any prerequisites or context for usage. The description is purely functional.

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

unifi_list_dpi_applicationsA
Read-only

List individual DPI applications (global) — specific apps/services like 'Netflix', 'Zoom', 'Steam'. Returns: id (numeric), name. More granular than unifi_list_dpi_categories.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of records to return (default: 25, max: 200)
filterNoFilter expression
offsetNoNumber of records to skip (default: 0)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
countNo
limitNo
offsetNo
totalCountNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, consistent with 'list'. The description adds context by specifying return fields (id, name) and noting the data is 'global', which implies no site-specific filtering. No contradictions.

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

Conciseness5/5

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

The description is a single, clear sentence plus a brief 'Returns:' note. No unnecessary words, front-loaded with purpose and key differentiator.

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

Completeness5/5

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

For a simple list tool with a well-defined schema and output schema, the description adequately covers purpose, differentiation, and return format. It is complete given the tool's simplicity.

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

Parameters3/5

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

The input schema has 100% description coverage for its three parameters (limit, filter, offset). The tool description does not add any additional parameter semantics beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the tool lists DPI applications (specific apps like 'Netflix', 'Zoom') and explicitly distinguishes it from the sibling 'unifi_list_dpi_categories' by noting it is 'more granular'. The verb 'list' and resource 'DPI applications' are specific.

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

Usage Guidelines4/5

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

The description includes a direct comparison with 'unifi_list_dpi_categories', indicating when to prefer this tool for finer-grained application details. However, it does not elaborate on other alternatives 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.

unifi_list_dpi_categoriesA
Read-only

List DPI categories (global, not site-scoped) — high-level traffic groupings like 'Streaming', 'Social Networks', 'Gaming'. Returns: id (numeric), name. Use the category id when building firewall policies that match by category.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of records to return (default: 25, max: 200)
filterNoFilter expression
offsetNoNumber of records to skip (default: 0)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
countNo
limitNo
offsetNo
totalCountNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds useful behavioral context: global scope and return fields (id numeric, name). No contradictions.

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

Conciseness5/5

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

The description is exceptionally concise: two short sentences covering purpose, scope, examples, return fields, and usage. No wasted words.

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

Completeness5/5

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

Given the tool's simplicity (list with optional pagination), the description is complete. It explains what is returned, global scope, and how to use the results. Output schema existence is mentioned but not needed for clarity.

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

Parameters3/5

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

Input schema has 100% coverage with descriptions for all three parameters (limit, filter, offset). The description does not add parameter-specific information beyond the schema, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool lists DPI categories, specifies global scope, gives examples ('Streaming', 'Social Networks'), and mentions return fields. It distinguishes from sibling tools like unifi_list_dpi_applications by focusing on categories.

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

Usage Guidelines4/5

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

The description provides a concrete use case: 'Use the category id when building firewall policies that match by category.' This gives clear context, but lacks explicit exclusions or when to use alternatives.

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

unifi_list_firewall_policiesA
Read-only

List firewall policies (zone-based rules) at a site. Returns: id, name, enabled, action (object with type field), source/destination (zone reference + trafficFilter), ipProtocolScope, connectionStateFilter, ipsecFilter, schedule, loggingEnabled, index, description, metadata.origin. Protocols/ports are encoded inside source/destination.trafficFilter, not as top-level fields. Evaluation order within a zone pair comes from unifi_get_firewall_policy_ordering.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of records to return (default: 25, max: 200)
filterNoFilter expression
offsetNoNumber of records to skip (default: 0)
siteIdYesSite ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
countNo
limitNo
offsetNo
totalCountNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations indicate read-only and non-destructive. Description adds detailed return fields and encoding of protocols/ports, providing behavioral context beyond annotations.

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

Conciseness5/5

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

Concise one-paragraph description with front-loaded purpose, structured return field list, and no unnecessary words.

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

Completeness5/5

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

Despite output schema existing, description provides comprehensive return field list and key nuance about trafficFilter, making it complete for agent understanding.

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

Parameters3/5

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

Schema coverage 100% so baseline 3. Description does not enhance parameter understanding, but schema already adequately documents parameters.

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

Purpose5/5

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

Clearly states 'List firewall policies (zone-based rules) at a site.' with specific verb and resource, and distinguishes from siblings by referencing zone-based nature and related tools like unifi_get_firewall_policy_ordering.

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

Usage Guidelines3/5

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

No explicit when/when-not instructions. Implies usage for listing policies and mentions ordering from another tool, but lacks alternatives or constraints.

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

unifi_list_firewall_zonesA
Read-only

List firewall zones (groupings of networks for zone-based firewalling) at a site. Returns: id, name, networkIds[], metadata.origin (indicates system-defined vs user-defined). Use for: zone inventory; pair with unifi_list_firewall_policies to see rules between zones.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of records to return (default: 25, max: 200)
filterNoFilter expression
offsetNoNumber of records to skip (default: 0)
siteIdYesSite ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
countNo
limitNo
offsetNo
totalCountNo

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds value by detailing the return fields (id, name, networkIds[], metadata.origin) and the distinction between system-defined vs user-defined zones, with no contradictions.

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

Conciseness5/5

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

The description is composed of three efficient sentences that front-load the core action and provide necessary context without redundancy or extraneous information.

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

Completeness5/5

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

Given the tool's simplicity, presence of an output schema, and complete annotations, the description fully covers purpose, return fields, and cross-reference to related tools, making it complete for its use case.

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

Parameters3/5

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

Schema coverage is 100%, so the description is not required to add parameter details. The description does not provide additional parameter semantics beyond what the schema already offers, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool lists firewall zones and defines them as 'groupings of networks for zone-based firewalling', which distinguishes it from sibling tools like unifi_get_firewall_zone and unifi_list_firewall_policies.

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

Usage Guidelines4/5

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

The description explicitly recommends using this tool for zone inventory and pairing it with unifi_list_firewall_policies, providing clear context. However, it does not explicitly state when to avoid this tool or mention alternatives beyond the pairing.

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

unifi_list_lagsB
Read-only

List LAGs (Link Aggregation Groups — bonded switch ports) at a site. Returns: id, type (LOCAL/SWITCH_STACK/MULTI_CHASSIS), members[], metadata.origin.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of records to return (default: 25, max: 200)
filterNoFilter expression
offsetNoNumber of records to skip (default: 0)
siteIdYesSite ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
countNo
limitNo
offsetNo
totalCountNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, indicating a safe read operation. The description adds return format details but does not disclose additional behaviors such as pagination (though limit/offset are in the schema) or authentication requirements. It does not contradict annotations.

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

Conciseness4/5

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

The description is concise with two sentences: one for the action and one summarizing the return structure. It is front-loaded and efficient, though it could briefly mention usage context without adding length.

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

Completeness4/5

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

Given the presence of an output schema and 100% parameter coverage, the description is fairly complete. It explains the resource and return shape. However, it lacks mention of pagination or any prerequisites, which would enhance completeness.

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

Parameters3/5

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

The input schema has 100% description coverage for all four parameters (siteId, limit, offset, filter). The tool description does not add any parameter-level meaning beyond what the schema already provides, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the tool lists LAGs (Link Aggregation Groups) at a site, with a specific verb and resource. It also outlines the return fields, helping the agent understand what the output looks like. However, it does not explicitly differentiate from the sibling tool unifi_get_lag, which retrieves a single LAG.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like unifi_get_lag or unifi_list_switch_stacks. It simply states the action 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.

unifi_list_mc_lag_domainsA
Read-only

List MC-LAG (Multi-Chassis Link Aggregation) Domains — pairs of switches presenting as one for LAG redundancy. Returns: id, name, peers[], lags[] (LAGs spanning the domain), metadata.origin.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of records to return (default: 25, max: 200)
filterNoFilter expression
offsetNoNumber of records to skip (default: 0)
siteIdYesSite ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
countNo
limitNo
offsetNo
totalCountNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds behavioral context by specifying exact return fields, confirming it is a read-only list operation. No contradictions.

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

Conciseness5/5

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

Single sentence concisely conveys purpose and return fields. Front-loaded with action and resource. No redundant information.

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

Completeness4/5

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

Given the tool is a simple list operation with an output schema (context signals indicate true) and complete schema coverage, the description provides sufficient context. Could mention pagination or default limits but not essential.

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

Parameters3/5

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

Input schema covers all 4 parameters with full descriptions (100% coverage). The description does not add parameter-level details beyond the schema, but it clarifies output structure, which aids tool selection. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool lists MC-LAG domains, explains what MC-LAG is, and lists key return fields (id, name, peers, lags, metadata.origin). It differentiates from sibling tools like unifi_get_mc_lag_domain by being a list operation.

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

Usage Guidelines3/5

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

The description implies usage for listing all MC-LAG domains but does not explicitly state when to use this vs. the single-domain get tool or other list tools. No clear when-not-to-use or alternative suggestions.

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

unifi_list_networksA
Read-only

List all networks (VLANs/LAN segments) at a site. Returns: id, name, management (UNMANAGED/GATEWAY/SWITCH), enabled, vlanId, default (true for the default network), dhcpGuarding, metadata.origin. NOTE: the list view is sparse — for subnet/DHCP/NTP detail (ipv4Configuration), call unifi_get_network on a specific id. Use for: VLAN inventory; pair with unifi_get_network_references to find what consumes a network.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of records to return (default: 25, max: 200)
filterNoFilter expression
offsetNoNumber of records to skip (default: 0)
siteIdYesSite ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
countNo
limitNo
offsetNo
totalCountNo

TDQS

A4.5/5.0
Behavior4/5

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

Adds behavioral context beyond annotations by stating the list view is sparse and listing specific fields returned (id, name, management, etc.). No contradictions with readOnlyHint and destructiveHint.

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

Conciseness5/5

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

Two sentences plus a NOTE, front-loaded with purpose and returns. Every sentence earns its place with no fluff.

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

Completeness5/5

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

Complete for the tool's purpose: explains what it does, what fields are available, how to get more detail, and how to use with a sibling tool. Annotations cover safety.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. Description does not add extra meaning to parameters beyond what the schema already provides.

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

Purpose5/5

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

Clearly states it lists all networks (VLANs/LAN segments) at a site, specifies return fields, and distinguishes from siblings like unifi_get_network for detail and unifi_get_network_references for consumption.

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

Usage Guidelines5/5

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

Explicitly says 'Use for: VLAN inventory; pair with unifi_get_network_references' and notes the sparse list, directing to unifi_get_network for detailed subnet/DHCP/NTP info, providing clear when-to-use guidance.

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

unifi_list_pending_devicesA
Read-only

List devices pending adoption across all sites (global endpoint, not site-scoped). Returns: basic device info per pending device (macAddress, model, ipAddress, firmwareVersion, etc. — exact per-row schema is not rendered in the 10.5.43 docs). Use for: discovering new devices on the network before calling unifi_adopt_device.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of records to return (default: 25, max: 200)
filterNoFilter expression
offsetNoNumber of records to skip (default: 0)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
countNo
limitNo
offsetNo
totalCountNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds that the tool is global and not site-scoped, and mentions return fields (macAddress, model, etc.), adding useful behavioral context beyond annotations.

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

Conciseness5/5

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

Three concise sentences: action and scope, return fields, and use case. Front-loaded with the most important information, no wasted words.

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

Completeness5/5

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

For a simple read-only list tool with an output schema and 3 optional parameters, the description covers purpose, scope, return format, and usage context. It also honestly notes that the exact per-row schema is not in the docs. Complete for safe selection and invocation.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for limit, filter, and offset. The description does not add additional meaning beyond what the schema already provides, so baseline 3 is appropriate.

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

Purpose5/5

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

The description explicitly states 'List devices pending adoption across all sites', providing a specific verb and resource. It distinguishes from siblings by noting 'global endpoint, not site-scoped' and mentions its use before unifi_adopt_device, linking to a sibling.

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

Usage Guidelines5/5

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

The description states 'Use for: discovering new devices on the network before calling unifi_adopt_device', giving explicit context for when to use this tool versus alternatives like unifi_list_devices.

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

unifi_list_radius_profilesA
Read-only

List RADIUS profiles (auth/accounting server configurations referenced by WiFi WPA-Enterprise, switch 802.1X port auth, VPN). Returns: id, name, metadata (origin, configurable).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of records to return (default: 25, max: 200)
filterNoFilter expression
offsetNoNumber of records to skip (default: 0)
siteIdYesSite ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
countNo
limitNo
offsetNo
totalCountNo

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and destructiveHint. The description adds specific return fields and context about profile usage, which provides moderate behavioral transparency beyond annotations.

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

Conciseness5/5

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

The description is concise, two sentences, front-loaded with the primary action and context. No wasted words.

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

Completeness4/5

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

Given the presence of an output schema, the description still adds value by summarizing return fields and usage context. It could mention pagination or filtering options, but is mostly complete.

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

Parameters3/5

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

Schema coverage is 100%, so the description does not need to elaborate on parameters. It adds no extra meaning beyond the schema, resulting in a baseline score of 3.

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

Purpose5/5

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

The description clearly states the tool lists RADIUS profiles with specific use contexts (WiFi WPA-Enterprise, switch 802.1X, VPN), and specifies the returned fields (id, name, metadata). This distinguishes it from sibling list/get tools for other resources.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. Since no sibling for getting a single RADIUS profile exists, the description could still benefit from stating it's the primary listing method.

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

unifi_list_sitesA
Read-only

List all sites the API key has access to. Returns: id (the siteId every other tool requires), internalReference, name. Use for: first call in any workflow — almost every other tool needs a siteId.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of records to return (default: 25, max: 200)
filterNoFilter expression (e.g., 'name.like(office*)')
offsetNoNumber of records to skip (default: 0)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
countNo
limitNo
offsetNo
totalCountNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds that it returns specific fields (id, internalReference, name) and the context of being a first call, without contradicting annotations.

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

Conciseness5/5

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

Two sentences: first states purpose, second states return fields, third gives usage tip. Perfectly concise and front-loaded.

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

Completeness5/5

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

With an output schema present, the description covers the key return fields and the tool's role. It is complete for a simple list tool with optional parameters.

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

Parameters3/5

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

Schema coverage is 100% with parameter descriptions. The description does not add parameter details, but implies that no parameters are required for basic listing.

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

Purpose5/5

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

The description clearly states the action ('List all sites') and the resource ('sites the API key has access to'). It also mentions the key returned fields, distinguishing it from siblings that list other resources.

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

Usage Guidelines5/5

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

Explicitly says 'Use for: first call in any workflow — almost every other tool needs a siteId', providing clear guidance on when to use this tool and its role in workflows.

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

unifi_list_switch_stacksA
Read-only

List Switch Stacks (multiple physical switches managed as one logical unit) at a site. Returns: id, name, members[], lags[] (LAGs spanning the stack), metadata.origin. Use for: identifying stacked switches; individual member configs/stats still come from unifi_get_device.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of records to return (default: 25, max: 200)
filterNoFilter expression
offsetNoNumber of records to skip (default: 0)
siteIdYesSite ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
countNo
limitNo
offsetNo
totalCountNo

TDQS

A4.3/5.0
Behavior4/5

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

The description discloses return fields (id, name, members[], lags[], metadata.origin) and explains the concept of switch stacks. Annotations already indicate read-only behavior, so the description adds useful context beyond that.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose, no wasted words. Efficient and informative.

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

Completeness5/5

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

For a list tool with good annotations and output schema, the description is complete: it explains what the tool returns, when to use it, and how it relates to other tools.

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

Parameters3/5

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

Input schema covers all parameters with descriptions, so baseline is 3. The tool description does not add additional semantics for parameters beyond what is in the schema.

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

Purpose5/5

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

The description clearly states the action ('List'), the resource ('Switch Stacks'), and the context ('at a site'). It differentiates from sibling tools like unifi_get_device by explaining that individual member configs/stats come from that tool.

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

Usage Guidelines4/5

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

The description provides explicit guidance on when to use this tool ('Use for: identifying stacked switches') and points to an alternative for member details ('still come from unifi_get_device'). It does not list exclusions but the context is clear.

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

unifi_list_traffic_matching_listsA
Read-only

List traffic matching lists at a site — named collections of ports or IPs reused in firewall/ACL rules. Returns: id, type (PORTS/IPV4_ADDRESSES/IPV6_ADDRESSES), name, items[]. Use for: finding the matching-list ID to reference from a firewall policy.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of records to return (default: 25, max: 200)
filterNoFilter expression
offsetNoNumber of records to skip (default: 0)
siteIdYesSite ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
countNo
limitNo
offsetNo
totalCountNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false, so the description adds value by specifying the return fields (id, type, name, items). This provides behavioral context beyond the annotations.

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

Conciseness5/5

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

The description is very concise with two sentences: the first states the purpose and resource, the second gives a specific use case. No unnecessary words.

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

Completeness4/5

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

Given the presence of an output schema (not shown but indicated), the description provides key return fields and a usage hint. It is sufficiently complete for a list operation with readOnlyHint annotation.

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

Parameters3/5

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

Schema description coverage is 100%, so the description does not need to add much for parameters. It does not elaborate on the parameters beyond what the schema provides, which is adequate. Baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'List' and the resource 'traffic matching lists at a site', with a concise definition of what they are (named collections of ports or IPs reused in firewall/ACL rules). This distinguishes it from sibling tools like unifi_get_traffic_matching_list which retrieves a single list.

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

Usage Guidelines4/5

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

The description includes an explicit use case: 'finding the matching-list ID to reference from a firewall policy'. While it doesn't explicitly state when not to use it, the context is clear enough, and the sibling unifi_get_traffic_matching_list provides an alternative for single-list retrieval.

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

unifi_list_vouchersA
Read-only

List hotspot/guest-portal vouchers at a site. Returns: id, code, name, createdAt, activatedAt (when first guest used it), expiresAt, timeLimitMinutes, dataUsageLimitMBytes, rxRateLimitKbps, txRateLimitKbps, authorizedGuestLimit, authorizedGuestCount, expired. Use filter like 'expired.eq(true)' to bulk-find stale vouchers.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of records to return (default: 100, max: 1000)
filterNoFilter expression (e.g., 'expired.eq(true)')
offsetNoNumber of records to skip (default: 0)
siteIdYesSite ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
countNo
limitNo
offsetNo
totalCountNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already indicate read-only and non-destructive. Description adds meaning by listing return fields and clarifying activatedAt semantics. No contradictions.

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

Conciseness5/5

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

Two sentences, no wasted words, front-loaded with purpose and return fields. Efficient.

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

Completeness4/5

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

Given output schema exists, description is complete: lists return fields, filter usage, and site context. Adequate for a list tool.

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

Parameters3/5

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

Schema covers all parameters with descriptions. Description adds only a filter example, not significantly more meaning. Baseline 3.

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

Purpose4/5

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

Describes listing vouchers at a site with specific return fields. Implicitly distinguishes from sibling get_voucher by using 'list' vs 'get', but 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.

Usage Guidelines3/5

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

Provides one concrete usage example with filter, but lacks guidance on when not to use this tool or alternatives beyond the sibling list.

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

unifi_list_vpn_serversA
Read-only

List VPN servers (roaming/client-access VPNs: WireGuard, OpenVPN, L2TP, Teleport) at a site. Returns: id, type (e.g. WIREGUARD, UID), name, enabled, metadata.origin.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of records to return (default: 25, max: 200)
filterNoFilter expression
offsetNoNumber of records to skip (default: 0)
siteIdYesSite ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
countNo
limitNo
offsetNo
totalCountNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds value by specifying return fields (id, type, name, enabled, metadata.origin). No side effects are mentioned, but annotations cover safety.

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

Conciseness5/5

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

The description is two concise sentences: one for purpose and VPN types, one for return fields. No unnecessary words, front-loaded with key information.

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

Completeness5/5

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

Given an output schema exists and the tool is a simple list operation, the description covers what it does and what it returns. It is complete for the tool's complexity.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description does not add extra meaning to parameters beyond what the schema provides (e.g., limit, filter, offset, siteId). It focuses on return fields instead.

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

Purpose5/5

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

The description clearly states the tool lists VPN servers at a site, specifying VPN types (WireGuard, OpenVPN, L2TP, Teleport) and return fields. This distinguishes it from siblings like unifi_list_vpn_tunnels by focusing on roaming/client-access VPNs.

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

Usage Guidelines3/5

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

The description implies usage for listing VPN servers but does not explicitly state when to use this tool versus alternatives like unifi_list_vpn_tunnels. No when-not or exclusionary guidance is provided.

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

unifi_list_vpn_tunnelsA
Read-only

List site-to-site VPN tunnels (IPsec, WireGuard, OpenVPN site-to-site) at a site. Returns: tunnel definitions per row (per-row schema not rendered in 10.5.43 docs — call to inspect). For roaming client VPN servers, see unifi_list_vpn_servers.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of records to return (default: 25, max: 200)
filterNoFilter expression
offsetNoNumber of records to skip (default: 0)
siteIdYesSite ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
countNo
limitNo
offsetNo
totalCountNo

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds that it returns 'tunnel definitions per row' and notes the schema is not rendered, but does not elaborate on other behavioral aspects like permissions or error states.

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

Conciseness5/5

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

Three sentences with no redundancy. The first sentence states the purpose and types, the second notes the return format issue, and the third points to a sibling. Front-loaded and efficient.

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

Completeness4/5

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

For a list tool with good annotations and output schema, the description covers the main purpose, types, and alternative. It acknowledges the incomplete output schema documentation. Lacks explicit mention of pagination (but that's in schema) and permissions, but overall sufficient.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for all parameters. The description does not add any additional meaning beyond what's already in the schema.

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

Purpose5/5

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

The description clearly states the tool lists site-to-site VPN tunnels (IPsec, WireGuard, OpenVPN site-to-site) at a site, and distinguishes from roaming client VPN servers by pointing to a specific sibling tool.

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

Usage Guidelines5/5

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

Explicitly tells when to use this tool (list site-to-site VPN tunnels) and when to use the alternative (unifi_list_vpn_servers for roaming clients).

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

unifi_list_wansA
Read-only

List WAN interface definitions at a site. Returns: id, name only (verified against 10.5.43 — the Integration API exposes no live link status or throughput rates here). Use for: WAN inventory, multi-WAN topology.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of records to return (default: 25, max: 200)
offsetNoNumber of records to skip (default: 0)
siteIdYesSite ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
countNo
limitNo
offsetNo
totalCountNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=true and destructiveHint=false, but the description adds valuable context: it returns only id and name, not live link status or throughput rates, and mentions version verification against 10.5.43. This goes beyond annotations.

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

Conciseness5/5

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

The description is extremely concise: two sentences. First sentence states purpose and output; second sentence gives usage guidance and a version note. No redundant words, front-loaded with key information.

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

Completeness5/5

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

Given the presence of an output schema and annotations, the description adequately covers purpose, param hint (siteId), and limitations. It mentions what is returned and the absence of live data, making it complete for a simple list tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters (limit, offset, siteId) with descriptions. The tool description adds no additional parameter-level detail, meeting the baseline.

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

Purpose5/5

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

The description clearly states the verb 'List', resource 'WAN interface definitions', and scope 'at a site'. It distinguishes from sibling list tools by specifying the exact resource and return fields. No ambiguity.

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

Usage Guidelines4/5

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

The description provides explicit use cases: 'WAN inventory, multi-WAN topology.' However, it does not mention when not to use this tool or suggest alternatives. Siblings do not include other WAN list tools, so the guidance is clear but lacking exclusions.

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

unifi_list_wifiA
Read-only

List all WiFi broadcasts (SSIDs) at a site. Returns: id, name (SSID), enabled, type (STANDARD/IOT_OPTIMIZED), broadcastingFrequenciesGHz (2.4/5/6), securityConfiguration, hideName, bandSteeringEnabled, mloEnabled, network reference, broadcastingDeviceFilter (which APs broadcast it). Use for: SSID inventory. For per-AP radio state (channel, txPower), use unifi_get_device on the AP.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of records to return (default: 25, max: 200)
filterNoFilter expression
offsetNoNumber of records to skip (default: 0)
siteIdYesSite ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
countNo
limitNo
offsetNo
totalCountNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false; description adds value by listing returned fields and confirming read-only behavior, but does not discuss pagination or rate limits.

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

Conciseness5/5

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

Extremely concise: two sentences plus a list of return fields. Every sentence is informative, front-loaded with purpose, and no waste.

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

Completeness5/5

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

Given output schema exists and description lists return fields, it is complete for a list tool. Includes alternative usage, making it self-contained.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. Description does not add new parameter details beyond schema, but context implies siteId parameter usage.

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

Purpose5/5

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

Description clearly states 'List all WiFi broadcasts (SSIDs) at a site' with a specific verb and resource, and distinguishes from sibling tool unifi_get_device which is for per-AP radio state.

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

Usage Guidelines5/5

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

Provides explicit usage context: 'Use for: SSID inventory' and directs to unifi_get_device for per-AP radio state, giving clear when-to-use and when-not-to-use guidance.

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

Tool Schema Changelog

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

  1. 9 tool updatesv2.10.0
    • Addedunifi_get_acl_rule
    • Addedunifi_get_acl_rule_ordering
    • Addedunifi_get_device_statistics
    • Addedunifi_get_info
    • Addedunifi_get_network
    • Addedunifi_list_acl_rules
    • Addedunifi_list_pending_devices
    • Addedunifi_list_vouchers
    • Addedunifi_list_wifi
  2. 9 tool updatesv2.9.0
    • Removedunifi_get_acl_rule
    • Removedunifi_get_acl_rule_ordering
    • Removedunifi_get_device_statistics
    • Removedunifi_get_info
    • Removedunifi_get_network
    • Removedunifi_list_acl_rules
    • Removedunifi_list_pending_devices
    • Removedunifi_list_vouchers
    • Removedunifi_list_wifi
  3. 41 tool updatesv2.8.0
    • First observedunifi_get_acl_rule
    • First observedunifi_get_acl_rule_ordering
    • First observedunifi_get_client
    • First observedunifi_get_device
    • First observedunifi_get_device_statistics
    • First observedunifi_get_dns_policy
    • First observedunifi_get_firewall_policy
    • First observedunifi_get_firewall_policy_ordering
    • First observedunifi_get_firewall_zone
    • First observedunifi_get_info
    • First observedunifi_get_lag
    • First observedunifi_get_mc_lag_domain
    • First observedunifi_get_network
    • First observedunifi_get_network_references
    • First observedunifi_get_switch_stack
    • First observedunifi_get_traffic_matching_list
    • First observedunifi_get_voucher
    • First observedunifi_get_wifi
    • First observedunifi_list_acl_rules
    • First observedunifi_list_clients
    • First observedunifi_list_countries
    • First observedunifi_list_device_tags
    • First observedunifi_list_devices
    • First observedunifi_list_dns_policies
    • First observedunifi_list_dpi_applications
    • First observedunifi_list_dpi_categories
    • First observedunifi_list_firewall_policies
    • First observedunifi_list_firewall_zones
    • First observedunifi_list_lags
    • First observedunifi_list_mc_lag_domains
    • First observedunifi_list_networks
    • First observedunifi_list_pending_devices
    • First observedunifi_list_radius_profiles
    • First observedunifi_list_sites
    • First observedunifi_list_switch_stacks
    • First observedunifi_list_traffic_matching_lists
    • First observedunifi_list_vouchers
    • First observedunifi_list_vpn_servers
    • First observedunifi_list_vpn_tunnels
    • First observedunifi_list_wans
    • First observedunifi_list_wifi

TDQS

A3.6/5.0

Scored across 41 tools

Disambiguation5/5

Every tool refers to a distinct UniFi resource or action, and list/get pairs are clearly separated. Similar-sounding areas such as ACL rules vs firewall policies and VPN tunnels vs VPN servers are explicitly disambiguated in the descriptions.

Naming Consistency5/5

All tools follow the consistent unifi_<verb>_<resource> pattern, with list_ for collections and get_ for individual resources. The naming is highly predictable across all 41 tools.

Tool Count2/5

41 tools is well over the comfortable scope for a server, and many are simple get-by-id counterparts to list tools. The broad surface feels bloated even though the naming keeps it navigable.

Completeness1/5

The tool set is entirely read-only, yet the descriptions reference workflows requiring mutation, such as adopting devices or deleting networks. There are no create, update, delete, adopt, or configuration-changing tools, leaving major management workflows as dead ends.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to interact with Ubiquiti UniFi network infrastructure for monitoring devices, managing clients, and performing configuration tasks like blocking/unblocking devices and viewing network health.
    10
    1
    GPL 3.0
  • A
    license
    B
    quality
    D
    maintenance
    Enables 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.
    52
    50 npm
    5
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables management of a local UniFi controller, including devices, clients, network configuration, and monitoring through a single action tool.
    13
    MIT
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Turns your UniFi Network Controller into programmable tools for querying and modifying network settings via MCP.
    -