Skip to main content
Glama

the-real-unifi-mcp

License: MIT Node MCP SDK CI

An MCP server that gives Claude (or any MCP client) full read/write access to the UniFi Site Manager and Network APIs over the official cloud endpoint. Cloud-only, stdio transport.

Unofficial project. This server is not affiliated with or endorsed by Ubiquiti Inc. UniFi and Ubiquiti are trademarks of Ubiquiti Inc., used here only to name the API this software works with; see NOTICE.

Point it at a UniFi Site Manager API key and your MCP client can list consoles, inspect devices and clients, and manage networks, WiFi, firewall policies, and more, through 169 tools covering the documented API surface.

Features

  • 169 tools across both UniFi APIs, read and write.

  • Three-layer tool design: 86 hand-wrappers (10 Site Manager + 76 Network) + 82 auto-generated tools, one per documented endpoint + 1 raw-request escape hatch (86 + 82 + 1 = 169). The tool contract is pinned by tests/contract/tools-contract.json.

  • MCP resources and MCP prompts for ready-made workflows.

  • Lazy ID discovery (consoleId / Network siteId / Site Manager siteId), cached for the process lifetime.

  • Write guard on by default: UNIFI_CONFIRM_WRITES (default true) turns destructive tools into preview-then-confirm; set it to false to execute writes directly. The model itself can send confirm: "YES", so this is a speed bump, not a human approval (see SECURITY.md).

  • Secret redaction in the server's own stderr log lines (known key patterns and the configured API key by value).

Related MCP server: UnifiyMe

Requirements

  • Node.js 22.12 or a later 22.x, 24.x, or 26 and newer (engines: ^22.12.0 || ^24.0.0 || >=26.0.0, the range of the test toolchain vitest). Node 23 and 25 are not supported.

  • UniFi Site Manager API key with Network scope. Create one at unifi.ui.com under Settings → API.

  • UniFi Console with firmware ≥ 5.0.3 (required by the Network API).

Installation

No install step is needed: your MCP client starts the server with npx, which fetches the package from npm on first use.

npx -y the-real-unifi-mcp   # starts the server on stdio; needs UNIFI_API_KEY in the environment

Or install it globally and use the the-real-unifi-mcp command:

npm install -g the-real-unifi-mcp

Pin a version (the-real-unifi-mcp@<version>) if you want updates only when you change the config. Releases from v0.2.1 on are published to npm from GitHub Actions with provenance (v0.2.0 is a GitHub release only); npm audit signatures verifies it.

From source

git clone https://github.com/mguttmann/the-real-unifi-mcp.git
cd the-real-unifi-mcp
npm ci
cp .env.example .env
# Edit .env: set UNIFI_API_KEY (Site Manager key with Network scope)
npm run build   # prebuild runs lint, typecheck and unit tests first
npm start       # node dist/index.js; reads .env from the current directory

As MCPB bundle

npm ci
npm run build:mcpb
# Writes release/the-real-unifi-mcp-<version>.mcpb (install it in Claude Desktop) and its SBOM.

The bundle maps its settings (API key, confirm writes, read-only, hide secrets, log level) to the environment variables below as ${user_config.<key>} placeholders. If a host starts the server without substituting them, a value that is still such a placeholder counts as unset: each switch keeps its default, the missing key stops the server, and a warning names the variable.

Releases from v0.2.0 on attach the .mcpb, the npm tarball, CycloneDX SBOMs and SHA256SUMS; see docs/RELEASING.md.

Configuration

Variable

Default

Description

UNIFI_API_KEY

(required)

Site Manager API key with Network scope

UNIFI_API_BASE

https://api.ui.com

API base URL. This host receives the API key: leave it at the default unless you test against a local stub. Must be https:// (plain http:// only for 127.0.0.1, [::1] or localhost) and an origin without path, query or fragment; anything else stops the server at startup.

UNIFI_CONFIRM_WRITES

true

If on, destructive tools require confirm: "YES". Only false, 0, no or off (any case) turn it off. Unset, empty, true, 1, yes and on keep it on; an unknown value keeps it on and logs a warning.

UNIFI_TIMEOUT_MS

30000

Per-request timeout (ms), covering the response headers and the body

UNIFI_LOG_LEVEL

info

debug | info | warn | error

UNIFI_CONSOLE_ID

(unset)

Override discovery (pin to a specific console; needed when the account owns several consoles or a host of another type)

UNIFI_NETWORK_SITE_ID

(unset)

Override discovery (pin to a specific Network site)

UNIFI_SITE_MANAGER_SITE_ID

(unset)

Override discovery (pin to a specific Site Manager site)

UNIFI_READ_ONLY

false

If on, every tool with a confirm param (all write tools, and unifi_raw_request for methods other than GET) returns an error with code: "READ_ONLY" and sends no request; the tools stay listed. Same values as UNIFI_CONFIRM_WRITES; an unknown value turns it on and logs a warning.

UNIFI_REDACT_SECRETS

false

If on, every tool result has the fields the confirm preview redacts (passwords, WiFi passphrases, pre-shared keys, secrets, tokens, keys) replaced by (redacted); paging tokens such as nextToken stay. MCP resources (unifi://hosts, unifi://identity) are not redacted. Write tools always refuse a body that contains the placeholder (see Write safety). Same values as UNIFI_READ_ONLY.

UNIFI_MAX_RESULT_BYTES

100000

A tool result text longer than this many UTF-8 bytes is cut to it and ends with a ... (truncated: ...) marker that names the paging params. Unset or empty: the default (roughly 25,000 tokens of JSON). 0, off or none (any case): no cap. A positive integer sets the cap; any other value stops the server at startup. MCP resources are not cut.

Claude Desktop config

Add to claude_desktop_config.json (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows):

{
  "mcpServers": {
    "unifi": {
      "command": "npx",
      "args": ["-y", "the-real-unifi-mcp"],
      "env": {
        "UNIFI_API_KEY": "<your Site Manager API key>"
      }
    }
  }
}

Any variable from Configuration can go into env. With a source checkout, use "command": "node" and "args": ["--env-file=/absolute/path/to/the-real-unifi-mcp/.env", "/absolute/path/to/the-real-unifi-mcp/dist/index.js"] instead.

Restart Claude Desktop after editing the file. The server exposes its tools under the unifi prefix.

Claude Code config

Register the server with the Claude Code CLI (--scope user makes it available in every project; the default scope, local, keeps it private to you in the current project):

claude mcp add --scope user unifi --env UNIFI_API_KEY="YOUR_SITE_MANAGER_API_KEY" -- npx -y the-real-unifi-mcp

From a source checkout:

claude mcp add --scope user unifi -- node \
  --env-file=/absolute/path/to/the-real-unifi-mcp/.env \
  /absolute/path/to/the-real-unifi-mcp/dist/index.js

claude mcp list shows whether it connects.

Tool reference

Site Manager hand-wrappers (10)

Account-level tools against api.ui.com directly:

  • unifi_sm_list_hosts: list all UniFi consoles on the account (optional pageSize, nextToken)

  • unifi_sm_get_host: detail for a single console

  • unifi_sm_list_sites: account-level sites (optional pageSize, nextToken); the statistics object of each site is omitted unless includeStatistics: true

  • unifi_sm_list_devices: account-level device list (optional hostIds, time, pageSize, nextToken)

  • unifi_sm_get_isp_metrics: ISP metrics by bucket (5m/1h), for beginTimestamp/endTimestamp or a duration (24h, 7d, 30d)

  • unifi_sm_query_isp_metrics: query ISP metrics with a time window

  • unifi_sm_list_sdwan_configs: SD-WAN configurations

  • unifi_sm_get_sdwan_config: single SD-WAN configuration

  • unifi_sm_get_sdwan_config_status: status of an SD-WAN configuration

  • unifi_sm_identity: resolved consoleId, networkSiteId, siteManagerSiteId

Network hand-wrappers (76)

Per-console tools via the Cloud Connector proxy, grouped by resource. Every unifi_net_list_* tool takes optional offset, limit and filter (vendor filter syntax); a result with more items carries a pagination hint with the next offset.

  • Info / Sites (2): unifi_net_get_info, unifi_net_list_sites

  • Devices (9): unifi_net_list_devices, unifi_net_get_device, unifi_net_get_device_stats, unifi_net_list_pending_devices, unifi_net_adopt_devices, unifi_net_device_action, unifi_net_reboot_device, unifi_net_port_action, unifi_net_remove_device

  • Clients (5): unifi_net_list_clients, unifi_net_get_client, unifi_net_client_action, unifi_net_block_client, unifi_net_unblock_client (block/unblock return a "not supported" error: the Network API has no such client action)

  • Networks (6): unifi_net_list_networks, unifi_net_get_network, unifi_net_get_network_references, unifi_net_create_network, unifi_net_update_network, unifi_net_delete_network

  • WiFi broadcasts (5): unifi_net_list_wifi, unifi_net_get_wifi, unifi_net_create_wifi, unifi_net_update_wifi, unifi_net_delete_wifi

  • Firewall (13): unifi_net_list_firewall_zones, unifi_net_get_firewall_zone, unifi_net_create_firewall_zone, unifi_net_update_firewall_zone, unifi_net_delete_firewall_zone, unifi_net_list_firewall_policies, unifi_net_get_firewall_policy, unifi_net_create_firewall_policy, unifi_net_update_firewall_policy, unifi_net_patch_firewall_policy, unifi_net_delete_firewall_policy, unifi_net_get_firewall_policy_ordering, unifi_net_reorder_firewall_policies

  • ACL rules (7): unifi_net_list_acl_rules, unifi_net_get_acl_rule, unifi_net_create_acl_rule, unifi_net_update_acl_rule, unifi_net_delete_acl_rule, unifi_net_get_acl_rule_ordering, unifi_net_reorder_acl_rules

  • DNS policies (5): unifi_net_list_dns_policies, unifi_net_get_dns_policy, unifi_net_create_dns_policy, unifi_net_update_dns_policy, unifi_net_delete_dns_policy

  • Traffic matching lists (5): unifi_net_list_traffic_lists, unifi_net_get_traffic_list, unifi_net_create_traffic_list, unifi_net_update_traffic_list, unifi_net_delete_traffic_list

  • Hotspot vouchers (5): unifi_net_list_vouchers, unifi_net_get_voucher, unifi_net_create_vouchers, unifi_net_delete_voucher, unifi_net_delete_vouchers

  • Switching (6): unifi_net_list_switch_stacks, unifi_net_get_switch_stack, unifi_net_list_mclag_domains, unifi_net_get_mclag_domain, unifi_net_list_lags, unifi_net_get_lag

  • Supporting (8): unifi_net_list_wans, unifi_net_list_site_to_site_vpn, unifi_net_list_vpn_servers, unifi_net_list_radius_profiles, unifi_net_list_device_tags, unifi_net_list_dpi_application_categories, unifi_net_list_dpi_applications, unifi_net_list_countries

Auto-generated tools (82)

Named unifi_gen_<operationid> (the vendor operationId in lower case, e.g. unifi_gen_createfirewallpolicy, unifi_gen_getinfo). One tool per documented UniFi API endpoint (Site Manager API v1.0.0, Network API v11.0.97), except the Site Manager connector* proxy endpoints, which unifi_raw_request covers. siteId is auto-resolved from discovery; callers do not need to pass it. Write tools document the vendor request body in their body schema, but accept and send any body value unchanged, as in 0.2.1. unifi_gen_listsites omits the statistics object of each site unless includeStatistics: true, like unifi_sm_list_sites. See src/tools/generated/ for the full inventory.

Escape hatch (1)

unifi_raw_request(method, path, body?, query?): execute any HTTP method against api.ui.com{path}. The path must be relative; see SECURITY.md for what is refused. Auth, retry, error parsing, and pagination hints are handled automatically. Useful when no dedicated tool exists. It returns the response as is: GET /v1/sites here keeps the statistics object that unifi_sm_list_sites omits by default.

Errors

A failed call returns an error result whose details carry the HTTP statusCode (0 when no response arrived) and, when known, a code: the code from the UniFi API, or NETWORK_ERROR, REDIRECT_REFUSED, TIMEOUT or CANCELLED (the client cancelled the call).

Resources

  • unifi://identity: resolved consoleId + both siteIds + console metadata

  • unifi://hosts: account hosts list

  • unifi://hosts/{id}: single host detail

Prompts

  • unifi-audit-firewall: walks firewall zones and policies, flags weak rules, suggests hardening

  • unifi-network-health: configured WANs, device counts per state and pending firmware updates, connected clients by type and the most recently connected

  • unifi-adoption-status: pending adoptions report with adopt/reject recommendation

Write safety

By default (UNIFI_CONFIRM_WRITES unset or true), destructive tools require an explicit confirm: "YES" argument; without it they return a preview in which passwords, WiFi passphrases, pre-shared keys, secrets, tokens and keys in the body are replaced by (redacted). Set UNIFI_CONFIRM_WRITES=false to let destructive tools execute directly. Independent of these settings, a write tool refuses a body in which any value, at any depth, is exactly (redacted) (the placeholder of UNIFI_REDACT_SECRETS and of the preview): it returns an error with code: "REDACTED_PLACEHOLDER" and the paths of those fields, before any preview or request, so an object read with redaction on cannot overwrite a passphrase with the placeholder. Set the real value or omit the field:

{
  "data": {
    "preview": {
      "tool": "unifi_net_create_vouchers",
      "method": "POST",
      "url": "/v1/connector/consoles/.../proxy/network/integration/v1/sites/.../hotspot/vouchers",
      "body": { "count": 1, "name": "demo" }
    },
    "hint": "Write confirmation is on (UNIFI_CONFIRM_WRITES). Re-run with `confirm: \"YES\"` to apply this change."
  }
}

Every write tool also takes dry_run: true: it returns the same preview and never executes, also with confirm: "YES" or with UNIFI_CONFIRM_WRITES=false. With UNIFI_READ_ONLY=true, write tools refuse with code: "READ_ONLY" and send nothing; read tools keep working.

The model can send confirm: "YES" on its own, so the guard is a second step for the model, not a human approval. If you want to approve each write yourself, keep your MCP client's per-tool approval on for the write tools (all of them carry destructiveHint: true).

Examples

Prompts you can paste into Claude after installing the server:

  • "Show me all my UniFi networks and their VLAN IDs."

  • "Which of my UniFi devices are offline right now?"

  • "Audit my firewall posture: group rules by zone and flag any allow-any-any."

  • "Reboot the access point named AP-Office-1."

  • "Power-cycle PoE port 3 on the switch named SW-Office."

Destructive examples respect UNIFI_CONFIRM_WRITES (default true): the model first gets a preview and has to call again with confirm: "YES" to apply.

Limitations

  • Cloud-only. All requests go through the UniFi cloud endpoint (api.ui.com) via the Site Manager API and the Network Cloud Connector proxy. There is no direct-to-controller / local-network mode.

  • Single account, owned consoles. Discovery resolves consoles your API key owns. Multi-console and multi-site accounts must pin IDs via the UNIFI_*_ID variables (see Troubleshooting).

  • Auto-generated tools track the published docs. The unifi_gen_* tools are generated from UniFi's documented endpoints; their input schemas are only as accurate as the upstream documentation. Use unifi_raw_request if an endpoint behaves differently than its schema suggests.

  • Network API requires recent firmware. The Network API is only available on consoles running firmware ≥ 5.0.3.

  • No event streaming / websockets. Tools are request/response only; there is no live event subscription.

Troubleshooting

"Discovery: no console found …" Discovery takes the host of type console that your key owns; only when there is none, an owned host of type ucore (UniFi OS Server). If your console has another type, or the key owns none, set UNIFI_CONSOLE_ID=<id> (the id from unifi_sm_list_hosts).

"Discovery: multiple consoles match …" Your Site Manager account has more than one UniFi console. Set UNIFI_CONSOLE_ID=<id> from one of the listed IDs. The same pattern applies to multi-Network-site (UNIFI_NETWORK_SITE_ID) and multi-Site-Manager-site (UNIFI_SITE_MANAGER_SITE_ID) cases.

401 Unauthorized The API key is missing the Network scope or has been revoked. Re-generate the key at unifi.ui.com with both Site Manager and UniFi Applications → Network scopes enabled. Rotate any key that has ever been exposed in a chat or commit.

Tools not showing in Claude Desktop Restart Claude Desktop after editing claude_desktop_config.json; config changes are only picked up on startup. The MCP log is at ~/Library/Logs/Claude/mcp-server-unifi.log (macOS); check it for startup errors or discovery failures.

Server stops right after a very large request The MCP SDK closes the stdio transport when one incoming message exceeds its line limit (see SECURITY.md); the process then logs stdio transport closed on stderr and exits with code 1, without an error result. Split the input (for example fewer MACs or a smaller body per call) and restart the server.

Development

npm run dev                  # tsx watch
npm run test:unit            # unit tests (offline; what prebuild runs)
npm test                     # unit tests (offline; the live smoke is not part of it)
npm run test:integration     # live read-only smoke against api.ui.com (only with UNIFI_LIVE=1 and UNIFI_API_KEY)
npm run codegen              # download the vendor OpenAPI docs and regenerate src/tools/generated/ (see CONTRIBUTING.md first)
npm run inspector            # MCP Inspector
npm run build:mcpb           # build MCPB bundle + SBOMs into release/
npm run lint                 # ESLint (type-aware, src, tests, scripts)
npm run typecheck            # tsc --noEmit (src), then tsconfig.tests.json (tests, scripts)

See CONTRIBUTING.md for the full workflow.

Architecture

Three-layer tool design. Hand-wrappers (unifi_sm_*, unifi_net_*) provide ergonomic, well-documented entry points for common operations with auto-resolved IDs and named arguments. The 82 auto-generated tools (unifi_gen_*) cover the endpoints listed in the codegen catalog (src/codegen/catalog.ts), with input schemas derived from the upstream UniFi docs. unifi_raw_request is the escape hatch for anything not covered by the first two layers.

Lazy ID discovery. On first use, the server calls GET /v1/hosts to find the owned console (type console, or ucore when no console matches), then GET /v1/sites (Network and Site Manager) to discover both siteIds. Results are cached for the process lifetime. Concurrent callers share a single in-flight request via stored promises. All three IDs can be pinned via environment variables for multi-console / multi-site accounts.

Retries. A request is tried at most 3 times. 429 is retried on every method, honouring Retry-After (capped at 60 s), because the server rejected the request. 5xx and dropped connections are retried only for GET; a POST, PUT, PATCH or DELETE is resent after a network error only when the connection was never established (for example ECONNREFUSED, ENOTFOUND), so a write that may already have reached UniFi is never duplicated. Redirects are refused (the API key never leaves the configured host) and timeouts are not retried. Network failures are returned as an error with the cause and logged at warn.

Codegen pipeline. A separate build step (npm run codegen) downloads the vendor OpenAPI documents (developer.ui.com/<api>/<version>/openapi.json) into tests/fixtures/openapi/, converts each catalogued operation into a Zod schema and emits one .ts file per endpoint. It writes nothing unless every catalog entry succeeds, and it fails on a vendor operation that is neither catalogued nor excluded. npm run codegen -- --offline regenerates from the committed documents; a unit test checks that the committed output equals that byte for byte. The output lives in src/tools/generated/ and is committed to git so builds work offline.

Security

  • API key is read from UNIFI_API_KEY environment variable only. Never hardcoded.

  • .env is gitignored.

  • An MCP client config that holds the key in env (for example claude_desktop_config.json) stores it in plain text; keep that file private.

  • The stderr logger redacts known secret patterns (UNIFI_API_KEY=..., X-API-Key, Authorization, apiKey, api_key, and api_key / apikey / token / access_token query parameters) and, by exact value, the configured API key wherever it appears. Output written by other tooling is not covered.

  • Request paths are relative to the configured UNIFI_API_BASE origin, which must be https:// (plain http:// only for loopback test stubs); the API key is sent only to that origin and redirects are refused.

  • Error texts from the UniFi API are scrubbed like log lines and cut to a fixed length before they reach the model.

  • Keep UNIFI_CONFIRM_WRITES=true (the default) for a confirmation step on destructive operations.

  • Tool results carry strings controlled by whoever can name things in your UniFi setup (device names, client hostnames, SSIDs, rule descriptions). The server instructions tell the model to treat them as data; your MCP client should still ask you before destructive tools run. The threat model is in SECURITY.md.

To report a vulnerability, please use GitHub Security Advisories; do not open a public issue. See SECURITY.md.

Maintenance status

  • Maintained on a best-effort basis by one maintainer (@mguttmann) in spare time. There is no support contract and no guaranteed response time.

  • Security fixes take priority over features. Report vulnerabilities privately (see Security).

  • Dependency updates come from Dependabot; CI fails when a runtime dependency has a known high or critical advisory.

  • Only the latest minor release gets fixes.

  • The unifi_gen_* tools follow the published UniFi API documentation; when Ubiquiti changes the API, they are regenerated in a later release. Open items are listed in BACKLOG.md.

  • Issues and pull requests are welcome; see CONTRIBUTING.md and the Code of Conduct.

Contributing

See CONTRIBUTING.md.

License

MIT, see LICENSE. The vendor OpenAPI documents in tests/fixtures/openapi/ (Ubiquiti's developer documentation) are not covered by the MIT License; see NOTICE.

Available Tools

169 tools
unifi_gen_adoptdeviceunifi_gen_adoptdeviceC
Destructive

Adopt Devices - generated from developer.ui.com/network/v11.0.97/adoptdevice

NameRequiredDescriptionDefault
bodyNoJSON request body, sent as is. Top-level vendor fields only; full schema: vendor docs page in the description. The API requires a body.
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

C2.8/5.0
Behavior2/5

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

The annotations already declare destructive=true, openWorld=true, idempotent=false and readOnly=false, so the safety risk is visible. The description adds nothing: it does not say the adoption is irreversible, does not list rate limits or the need for device-limit bypass (ignoreDeviceLimit), and does not explain what the preview returns when confirm is omitted.

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

Conciseness3/5

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

The description is very short and has a clear lead-in, so it is not verbose. However, one of its two clauses is only a documentation-source pointer, which does not help an agent decide whether or how to call the tool.

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

Completeness2/5

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

This is a destructive mutation with no output schema and no information about prerequisites or post-conditions. A complete definition would cover what 'adopt' does to the device record, the pending-device requirement, and the preview behavior; instead, it defers entirely to an external docs URL.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already explains body, confirm and dry_run clearly. The description adds no parameter meaning, which is acceptable given full coverage, so the baseline of 3 applies.

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 phrase 'Adopt Devices' gives a clear verb and resource, which is more than many generated stubs. However, it does not distinguish this tool from the sibling unifi_net_adopt_devices, which appears to do the same job, nor does it identify what state a device must be in (e.g., pending) before adoption.

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 contains no guidance about when to use this tool instead of unifi_net_adopt_devices or unifi_net_device_action, and no mention of the prerequisites involved in adopting a device. The only usage hints (the confirm field 'YES' and dry_run preview) appear in the schema, not the description.

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

unifi_gen_createaclruleunifi_gen_createaclruleC
Destructive

Create ACL Rule - generated from developer.ui.com/network/v11.0.97/createaclrule

NameRequiredDescriptionDefault
bodyNoJSON request body, sent as is. Top-level vendor fields only; full schema: vendor docs page in the description. The API requires a body.
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already flag this as destructive, non-idempotent and open-world, so the safety profile is known. The description adds nothing beyond that — it does not surface the confirm/dry_run gating, ordering/index side effects, or what happens to existing rules, all of which are meaningful for a destructive create.

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

Conciseness3/5

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

Single short sentence with zero padding, which is good, but it is under-specified rather than concise in a useful sense; the doc-page attribution consumes half the description's limited real estate.

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

Completeness2/5

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

For a destructive create operation with no output schema, the description should at least note that a confirm token is required to actually apply, that unconfirmed calls preview, and that rule order/index matters. None of that is present, leaving an agent to discover it only from the schema.

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

Parameters3/5

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

Schema description coverage is 100% and the schema documents body/confirm/dry_run including the 'YES to apply' preview semantics. The description contributes no parameter meaning of its own, so baseline 3 applies.

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

Purpose3/5

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

The description says 'Create ACL Rule', which gives a verb and resource, but it is essentially a restatement of the tool name plus a vendor doc URL. It does nothing to distinguish this tool from siblings such as unifi_net_create_acl_rule or unifi_gen_createfirewallpolicy, and never clarifies how an ACL rule differs from a firewall policy/zone.

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?

There is no when-to-use guidance, no prerequisites, and no mention of alternatives among the many create_* siblings. The only extra content is a documentation link, which is not usage guidance.

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

unifi_gen_creatednspolicyunifi_gen_creatednspolicyC
Destructive

Create DNS Policy - generated from developer.ui.com/network/v11.0.97/creatednspolicy

NameRequiredDescriptionDefault
bodyNoJSON request body, sent as is. Top-level vendor fields only; full schema: vendor docs page in the description. The API requires a body.
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, openWorldHint=true, idempotentHint=false and readOnlyHint=false, so the safety profile is covered structurally. The description adds nothing beyond that: no statement of what gets created where, whether duplicates are possible, whether changes are reversible, or what the confirmation requirement means in practice.

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

Conciseness3/5

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

One sentence, front-loaded with the verb, with no padding — but that brevity comes from omission rather than discipline. The dev-docs URL is a minor provenance aid that earns little space for an agent.

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?

This is a destructive, non-idempotent creation call whose safety and preview/confirm mechanics are fully specified in annotations and parameter descriptions. The ancillary schema, notably the anyOf that permits an empty object for body, is unusual, but it is largely self-documenting at the parameter level, so the description does not need to re-explain return values or body structure here.

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

Parameters3/5

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

Schema description coverage is 100% — body, confirm (const "YES") and dry_run all carry their own descriptions — so the schema does the heavy lifting and baseline 3 applies. The description contributes no additional meaning, and notably does not explain the type-dependent nature of the body fields (ipAddress vs ipv6Address vs mailServerDomain per record type).

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

Purpose3/5

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

The description names a specific verb+resource ("Create DNS Policy"), so an agent knows what it does. But it does not distinguish this tool from the near-identical sibling unifi_net_create_dns_policy, nor does it explain what a DNS policy covers versus firewall/traffic-list siblings. The trailing provenance URL is metadata, not clarification.

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?

There is no guidance on when to use this tool versus unifi_net_create_dns_policy, nor any mention of prerequisites such as site selection or the required record-type fields. The preview/confirm workflow is only implied, and only by the parameter schema, not by the description.

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

unifi_gen_createfirewallpolicyunifi_gen_createfirewallpolicyC
Destructive

Create Firewall Policy - generated from developer.ui.com/network/v11.0.97/createfirewallpolicy

NameRequiredDescriptionDefault
bodyNoJSON request body, sent as is. Top-level vendor fields only; full schema: vendor docs page in the description. The API requires a body.
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare that this is a non-read-only, open-world, non-idempotent, destructive mutation. The description adds no behavioral detail beyond the title, such as what policy scope is affected, what confirmation/preview behavior is exposed via the schema, or why a creation tool is marked destructive.

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 padding. It is concise, though the provenance phrase does not add much operational value.

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

Completeness2/5

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

For a destructive firewall-policy creation tool with a nested vendor body, the definition is too sparse. The schema and annotations cover structure and safety hints, but the description does not explain usage context, sibling choice, or mutation consequences.

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 the body, confirm, and dry_run parameters. The description adds no parameter-specific meaning beyond pointing to the generated vendor source, so the baseline of 3 applies.

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 states a specific verb and resource: "Create Firewall Policy." It is clear what the tool does, but it does not distinguish this generated variant from the sibling unifi_net_create_firewall_policy tool or explain that they are duplicate/related creation paths.

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 gives no when-to-use guidance, no prerequisites, and no alternatives. An agent must infer that this is for creating rather than updating, patching, or deleting firewall policies, and must also infer which sibling create tool to use.

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

unifi_gen_createfirewallzoneunifi_gen_createfirewallzoneC
Destructive

Create Custom Firewall Zone - generated from developer.ui.com/network/v11.0.97/createfirewallzone

NameRequiredDescriptionDefault
bodyNoJSON request body, sent as is. Top-level vendor fields only; full schema: vendor docs page in the description. The API requires a body.
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is covered structurally. The description adds only a vendor documentation URL and does not explain permissions required, the effect of creating a zone, or how confirm/dry_run alter behavior beyond what the schema already states.

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 wasted prose. It is appropriately sized, though extremely terse for a destructive creation tool.

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 a destructive firewall-zone creation tool with rich annotations and a fully documented schema, the description covers the basic action and points to vendor docs. It still omits sibling differentiation and any operational context about what a firewall zone is or when this generated variant should be chosen.

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 the body, confirm, and dry_run parameters in detail. The tool description itself adds no parameter meaning beyond the high-coverage schema, making the baseline 3 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 states a specific verb and resource: “Create Custom Firewall Zone.” It is clear what operation is performed, but it does not distinguish this tool from sibling firewall-zone creation tools such as unifi_net_create_firewall_zone or explain its generated-API nature beyond the URL.

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 the many sibling firewall-zone tools. It does not mention prerequisites, alternatives, or the distinction between generated and non-generated API tools.

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

unifi_gen_createnetworkunifi_gen_createnetworkC
Destructive

Create Network - generated from developer.ui.com/network/v11.0.97/createnetwork

NameRequiredDescriptionDefault
bodyNoJSON request body, sent as is. Top-level vendor fields only; full schema: vendor docs page in the description. The API requires a body.
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, idempotentHint=false and openWorldHint=true, so the danger profile is known. The description adds nothing beyond that — no note about prerequisites such as an existing site, VLAN availability, or that duplicate creation is non-idempotent.

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

Conciseness3/5

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

One short line with no bloat, but that brevity is under-specification rather than economy. The only content beyond the name is a vendor documentation URL, which is marginally useful but not front-loaded guidance.

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

Completeness2/5

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

This is a destructive, open-world create operation with a large nested body schema and no output schema. Given that complexity, the description should say what is being created, what the confirm gate implies, and how it relates to unifi_net_create_network; it says none of that.

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%: the body payload, its required fields (name, vlanId, enabled, management), the confirm gate, and dry_run are all documented in the schema. The description contributes no additional parameter meaning, so the baseline of 3 applies.

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

Purpose3/5

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

The description names a verb and resource ("Create Network"), which is intelligible, but it essentially restates the tool name and adds only a provenance URL. It gives no indication of what a network object is or which of the near-identical siblings (unifi_net_create_network, unifi_gen_updatenetwork) it should be preferred over.

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?

There is no when-to-use or when-not-to-use guidance and no mention of the confirm/dry_run preview workflow that governs whether the call actually mutates anything. The agent must infer usage entirely from the tool name.

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

unifi_gen_createtrafficmatchinglistunifi_gen_createtrafficmatchinglistC
Destructive

Create Traffic Matching List - generated from developer.ui.com/network/v11.0.97/createtrafficmatchinglist

NameRequiredDescriptionDefault
bodyNoJSON request body, sent as is. Top-level vendor fields only; full schema: vendor docs page in the description. The API requires a body.
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, and openWorldHint=true, so the safety profile is covered structurally. The description adds nothing beyond that: no note that without confirm="YES" nothing is applied, no statement about reversibility or required permissions, which is the exact context a create-with-destroy semantics tool needs.

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

Conciseness3/5

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

It is short and front-loaded, which is good, but the only content beyond the tool name is the "generated from developer.ui.com/..." provenance string, which is boilerplate rather than agent-useful information. Space that could carry the confirm/dry_run contract is spent on a docs URL.

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

Completeness2/5

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

This is a destructive, non-idempotent write with no output schema and a preview-versus-apply gate in the schema. The description omits the single most important operational fact — that the call is inert unless confirm is set to "YES" — and gives no indication of what the returned preview or created object looks like.

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

Parameters3/5

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

Schema description coverage is 100% and every parameter (body, confirm, dry_run) is documented in the schema itself, so the baseline of 3 applies. The description contributes no additional meaning about the body shape, the three allowed `type` enum values, or how `items` is interpreted.

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

Purpose3/5

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

The description names a verb and resource ("Create Traffic Matching List"), so the basic action is recognizable. But the second half is only a provenance URL, and it never distinguishes this from the near-identical sibling unifi_net_create_traffic_list or from unifi_gen_updatetrafficmatchinglist, leaving the agent to guess which family to use.

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 when-to-use, when-not-to-use, or alternative is stated. The schema exposes a confirm/dry_run preview flow, but the description never tells the agent when a preview is appropriate versus when to apply, and never mentions the parallel unifi_net traffic-list tools.

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

unifi_gen_createvouchersunifi_gen_createvouchersC
Destructive

Generate Vouchers - generated from developer.ui.com/network/v11.0.97/createvouchers

NameRequiredDescriptionDefault
bodyNoJSON request body, sent as is. Top-level vendor fields only; full schema: vendor docs page in the description. The API requires a body.
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the description must add context such as what a voucher is for, whether creation is reversible, or the confirm/preview safety flow. It adds only a docs link, leaving the destructive write behavior entirely to 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.

Conciseness3/5

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

It is short and front-loaded with the verb+resource, but the second half is a provenance note rather than information an agent can act on. Concise, yet thin rather than efficient.

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

Completeness2/5

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

This is a destructive, non-idempotent creation tool with no output schema, and the description supplies none of the missing context — no return value expectations, no effect of creating multiple vouchers via count, no explanation of the preview/confirm flow. An agent cannot confidently select or call it from this text alone.

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 body fields, the confirm token, and dry_run. The description adds no parameter meaning beyond that, which is the expected baseline when the schema does the work.

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

Purpose3/5

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

"Generate Vouchers" names a verb and resource, so the basic intent is clear, but it is essentially a restatement of the tool name plus a docs URL. It does nothing to distinguish this from sibling unifi_net_create_vouchers, which appears to do the same thing.

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?

There is no when-to-use guidance at all: no mention of when to pick this over unifi_net_create_vouchers or unifi_net_list_vouchers, and no prerequisites. The only routing hint is a URL to external vendor documentation.

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

unifi_gen_createwifibroadcastunifi_gen_createwifibroadcastC
Destructive

Create Wifi Broadcast - generated from developer.ui.com/network/v11.0.97/createwifibroadcast

NameRequiredDescriptionDefault
bodyNoJSON request body, sent as is. Top-level vendor fields only; full schema: vendor docs page in the description. The API requires a body.
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

C2.3/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that: no note about what a failed create leaves behind, whether duplicate SSIDs are allowed, or what the confirm/dry_run preview returns.

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

Conciseness3/5

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

It is a single short line with no bloat, but half of it is a vendor-docs URL rather than usable guidance. Brevity here reflects under-specification rather than disciplined editing.

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

Completeness2/5

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

This is a destructive create with a 25+ field body schema full of opaque nested objects (securityConfiguration, multicastFilteringPolicy, hotspotConfiguration) typed only as free-form objects, and no output schema. The description supplies only a link, leaving the agent without the field-level context the schema cannot provide.

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 body, confirm and dry_run parameters are already documented in the schema. The description contributes no extra semantics, which meets the baseline of 3 when the schema does the work.

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

Purpose2/5

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

"Create Wifi Broadcast" restates the tool name (unifi_gen_createwifibroadcast) almost verbatim, so it is close to tautological. It does not differentiate from the near-identical sibling unifi_net_create_wifi or from unifi_gen_updatewifibroadcast, and the only added content is a provenance URL.

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 when-to-use guidance is given. With both unifi_net_create_wifi and unifi_gen_createwifibroadcast in the sibling list, an agent has no stated rule for choosing one, and no prerequisites or constraints are mentioned.

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

unifi_gen_deleteaclruleunifi_gen_deleteaclruleC
DestructiveIdempotent

Delete ACL Rule - generated from developer.ui.com/network/v11.0.97/deleteaclrule

NameRequiredDescriptionDefault
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.
aclRuleIdYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered, but the description adds nothing on top: it does not say that deletion is permanent, that the confirm/dry_run preview gate exists, or what a preview returns. The only added text is a provenance URL, which carries no behavioral information.

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

Conciseness3/5

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

It is short and front-loads the operation, but the trailing 'generated from developer.ui.com/.../deleteaclrule' is implementation provenance that consumes space without helping an agent decide or invoke.

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

Completeness2/5

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

For a destructive, irreversible delete with no output schema, the description should warn about permanence and explain the safety gate (a preview unless confirm="YES"). None of that is present, leaving the agent to infer the mutation risk purely from annotations and schema.

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

Parameters2/5

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

Schema coverage is 67%, and the two documented parameters (confirm, dry_run) are described only in the schema, not the description. The required aclRuleId has no description anywhere, and the description does nothing to explain the preview-vs-apply workflow the parameters encode.

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

Purpose3/5

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

It names a verb (Delete) and a resource (ACL Rule), so the basic operation is identifiable. But it is essentially the tool name expanded, and it gives no way to distinguish it from the near-identical sibling unifi_net_delete_acl_rule that appears in the same sibling list.

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?

There is no statement of when to use this tool, when not to, or which sibling to prefer for the same operation. The coexistence of unifi_net_delete_acl_rule (and unifi_gen_deletefirewallzone-style equivalents) makes this ambiguity costly.

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

unifi_gen_deletednspolicyunifi_gen_deletednspolicyC
DestructiveIdempotent

Delete DNS Policy - generated from developer.ui.com/network/v11.0.97/deletednspolicy

NameRequiredDescriptionDefault
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.
dnsPolicyIdYes

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so safety is partially covered structurally. The description adds nothing beyond a provenance URL: it never says the deletion is irreversible, what happens to references to the policy, or that omitting confirm yields a preview rather than an execution.

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?

One short, front-loaded sentence naming the action, plus a provenance tag. Nothing is padded or buried, though the developer.ui.com URL is agent-irrelevant noise rather than useful context.

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

Completeness2/5

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

For a destructive, open-world mutation with no output schema, the definition should explain irreversibility, the confirm/dry_run gate, and error behavior. None of that appears, and the ambiguity with the sibling delete tool is unresolved.

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

Parameters2/5

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

At 67% schema coverage, two of three parameters (confirm, dry_run) are self-documented, but dnsPolicyId has no description in the schema and none here either. The description contributes zero parameter meaning, so it fails to compensate for the modest coverage gap on the required identifier.

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?

States a specific verb and resource ('Delete DNS Policy'), which is unambiguous on its own. However, it does nothing to distinguish itself from the near-identical sibling unifi_net_delete_dns_policy, leaving the agent to guess which delete-DNS-policy variant to pick.

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?

There is no guidance on when to use this versus unifi_net_delete_dns_policy, no mention of preconditions, and no warning about when not to delete. The only usage-adjacent information (preview via confirm/dry_run) lives in the schema, not the description.

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

unifi_gen_deletefirewallpolicyunifi_gen_deletefirewallpolicyC
DestructiveIdempotent

Delete Firewall Policy - generated from developer.ui.com/network/v11.0.97/deletefirewallpolicy

NameRequiredDescriptionDefault
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.
firewallPolicyIdYes

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, readOnlyHint=false, and openWorldHint=true. The description adds nothing beyond a generated-from URL: it does not mention the preview/confirm behavior, irreversibility, or any cascade effects of deletion.

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

Conciseness3/5

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

The single sentence is brief and front-loaded with the action. However, the 'generated from developer.ui.com/...' boilerplate adds no decision value and consumes part of an already sparse description.

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

Completeness2/5

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

For a destructive deletion operation with no output schema, the description should disclose the preview requirement, irreversibility, and the confirm gate. The schema mentions confirm and dry_run, but the description itself provides no operational context.

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

Parameters2/5

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

Schema coverage is 67%: confirm and dry_run are documented in the schema, but firewallPolicyId has no description. The tool description adds no semantic meaning to any parameter, so it fails to compensate for the partially undocumented required parameter.

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 states a specific verb and resource: delete a Firewall Policy. This is clear enough to distinguish it from list/get/create/update siblings, but it does not differentiate itself from the near-duplicate unifi_net_delete_firewall_policy or explain the uuid requirement.

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?

There is no guidance on when to use this tool versus unifi_net_delete_firewall_policy or the broader unifi_net_* family. It also omits prerequisites such as requiring the firewallPolicyId or the confirm='YES' gate, leaving usage entirely to inference from the schema.

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

unifi_gen_deletefirewallzoneunifi_gen_deletefirewallzoneC
DestructiveIdempotent

Delete Custom Firewall Zone - generated from developer.ui.com/network/v11.0.97/deletefirewallzone

NameRequiredDescriptionDefault
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.
firewallZoneIdYes

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds nothing beyond a source URL — it doesn't mention the confirm/dry_run preview flow, irreversibility, or what happens to referencing policies.

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

Conciseness3/5

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

Very short and front-loads the action, but the trailing "generated from developer.ui.com/..." provenance clause consumes roughly half the text without helping an agent decide or invoke.

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

Completeness2/5

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

For a destructive, open-world mutation with no output schema and an ambiguous duplicate sibling, the description should cover the preview/confirm workflow and ambiguity with unifi_net_delete_firewall_zone. It covers neither.

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

Parameters2/5

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

Schema coverage is a middling 67%, and the description explains none of the three parameters. The confirm="YES" preview gate and dry_run semantics are documented only in the schema, and firewallZoneId has no description at all in either place.

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?

States a specific verb and resource ("Delete Custom Firewall Zone"), which is clearly a destructive counterpart to get/create/update firewall zone siblings. It does not differentiate from the near-duplicate sibling unifi_net_delete_firewall_zone or explain what a "Custom" zone is.

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?

There is no guidance on when to use this versus unifi_net_delete_firewall_zone, no prerequisites, and no warning about dependencies such as attached firewall policies. The only usage-relevant text is a provenance URL.

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

unifi_gen_deletenetworkunifi_gen_deletenetworkC
DestructiveIdempotent

Delete Network - generated from developer.ui.com/network/v11.0.97/deletenetwork

NameRequiredDescriptionDefault
forceNo
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.
networkIdYes

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the description adds little behavioral context beyond restating deletion. It does not explain force semantics, confirmation behavior, or what dry_run previews beyond what is already present in the schema.

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

Conciseness3/5

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

The description is very short and front-loads the operation, but the source URL provenance does not help an agent invoke the tool correctly. Its brevity reflects under-specification more than effective conciseness.

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

Completeness2/5

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

For a destructive deletion tool with four parameters and no output schema, the description is insufficient. It does not distinguish this generated variant from the sibling delete tool or explain the force/confirmation/preview interactions that matter for safe invocation.

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

Parameters2/5

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

The description does not mention any parameters, so it cannot compensate for the 50% schema description coverage. The schema covers confirm and dry_run, and networkId has format validation, but force remains undocumented and the description adds no semantic value.

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 states a specific verb and resource: deleting a network. It is clear but does not differentiate this generated tool from the closely named sibling unifi_net_delete_network.

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 such as unifi_net_delete_network. It also does not mention prerequisites, when deletion is appropriate, or how force/preview behavior should affect usage.

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

unifi_gen_deletetrafficmatchinglistunifi_gen_deletetrafficmatchinglistC
DestructiveIdempotent

Delete Traffic Matching List - generated from developer.ui.com/network/v11.0.97/deletetrafficmatchinglist

NameRequiredDescriptionDefault
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.
trafficMatchingListIdYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered structurally. The description adds nothing beyond that — it does not mention that deletion is permanent, what happens to objects referencing the list, or that the schema's confirm/dry_run gates produce a preview unless confirm=YES.

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

Conciseness3/5

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

It is short and front-loads the action, but the trailing "generated from developer.ui.com/..." provenance string is metadata that does not help an agent decide or invoke, so the text is not entirely earning its place.

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

Completeness2/5

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

For a destructive, open-world mutation with no output schema and an undocumented required identifier, the description should at least say where the ID comes from and confirm the preview/confirm flow. None of that context is present, leaving the schema and annotations to carry most of the burden.

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

Parameters2/5

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

Schema description coverage is 67%, and the one undescribed parameter is the required trafficMatchingListId, which carries only a UUID pattern with no explanation of what a traffic matching list is or where to obtain its ID. The description adds zero parameter meaning to compensate for that gap.

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

Purpose3/5

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

The description names a specific verb and resource ("Delete Traffic Matching List"), so the basic action is inferable. However, it is effectively a restatement of the tool name plus a documentation URL, and it gives no hint of how this differs from the very similarly named sibling unifi_net_delete_traffic_list or unifi_gen_get/update/create_trafficmatchinglist.

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?

There is no guidance on when to use this tool versus alternatives, no prerequisites, and no warning about irreversibility. An agent must infer everything from the name and sibling list.

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

unifi_gen_deletevoucherunifi_gen_deletevoucherC
DestructiveIdempotent

Delete Voucher - generated from developer.ui.com/network/v11.0.97/deletevoucher

NameRequiredDescriptionDefault
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.
voucherIdYes

TDQS

C2/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the risk profile is known from structured data. The description adds nothing beyond that: it does not mention irreversibility, the confirm/dry_run safety gate, or the effect on active vouchers. No contradiction with annotations, but no value added either.

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

Conciseness2/5

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

It is short, but that is under-specification rather than conciseness. The only substantive content is a generated-from URL, which is metadata noise for an agent deciding how to call the tool.

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

Completeness2/5

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

For a destructive, open-world mutation with no output schema and only partial schema coverage, the description should carry real weight but carries none. An agent gets no information about what exactly is removed, whether the operation can be undone, or how the preview/confirm flow behaves beyond what the schema hints at.

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

Parameters2/5

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

Schema description coverage is 67%, but the description itself explains none of the three parameters. Notably it does not mention that voucherId is a UUID, that confirm must be literally "YES" for the delete to be applied, or that omitting it returns only a preview – the most consequential semantics of the call.

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

Purpose2/5

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

"Delete Voucher" merely restates the tool name; the only other content is a source-document URL. It never distinguishes this tool from the many nearby siblings such as unifi_net_delete_voucher, unifi_net_delete_vouchers, and unifi_gen_deletevouchers, so an agent cannot tell which delete to pick from the description.

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?

There is no guidance on when to use this tool, when to prefer the singular/plural or net/gen variants, or what prerequisites apply. The URL pointer to developer.ui.com is documentation provenance, not usage guidance.

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

unifi_gen_deletevouchersunifi_gen_deletevouchersC
DestructiveIdempotent

Delete Vouchers - generated from developer.ui.com/network/v11.0.97/deletevouchers

NameRequiredDescriptionDefault
filterYes
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so safety framing is covered structurally. The description adds nothing beyond that, and the genuinely consequential behavior - that an unfiltered/broad call could remove many vouchers, and that a preview path exists - is left entirely to the schema's confirm/dry_run fields rather than stated in prose.

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

Conciseness3/5

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

It is short and front-loads the action, but a single fragment plus a generated-from URL is under-specified rather than concise. The URL segment earns no place for an agent choosing a tool.

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

Completeness2/5

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

A destructive bulk-delete tool with a required, undocumented filter parameter and no output schema needs the description to explain filtering scope and result behavior. Neither is present, so an agent cannot confidently construct a safe call from this definition alone.

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

Parameters2/5

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

Schema coverage is 67%, and the one required parameter, "filter", has no description anywhere - neither in the schema nor in the description. The description would need to compensate by explaining the filter syntax or scope (what identifiers are accepted, whether multiple vouchers can be matched), and it does not.

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

Purpose3/5

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

"Delete Vouchers" names a specific verb and resource, so the basic operation is clear. However, it does not distinguish this bulk delete from the closely named siblings unifi_gen_deletevoucher (singular) and unifi_net_delete_vouchers, and the trailing "generated from developer.ui.com/..." string adds no meaning.

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?

There is no when-to-use or when-not-to-use guidance and no mention of the singular sibling or the alternative list tools. The only implicit cue is destructive intent from the name and annotations.

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

unifi_gen_deletewifibroadcastunifi_gen_deletewifibroadcastC
DestructiveIdempotent

Delete Wifi Broadcast - generated from developer.ui.com/network/v11.0.97/deletewifibroadcast

NameRequiredDescriptionDefault
forceNo
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.
wifiBroadcastIdYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is known. The description however omits the most consequential behavioral detail — that without confirm="YES" the call only previews — leaving a writer that might think a delete happened when it didn't.

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

Conciseness3/5

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

Short, but half the content is a documentation URL rather than an actionable statement. It is front-loaded on the action, though there is nothing of substance behind it.

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

Completeness2/5

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

For a destructive mutation with no output schema, an undocumented half of the parameters, and a two-step preview/apply flow, the description should explain the confirmation gate and irreversibility. It explains neither.

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

Parameters2/5

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

Schema coverage is only 50% and the description compensates for none of it: the required wifiBroadcastId is undocumented here and 'force' has no type-independent meaning anywhere. The confirm/dry_run duplication is left to the schema as well.

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

Purpose3/5

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

States a specific verb+resource ("Delete Wifi Broadcast"), so the core action is detectable, but the remainder is a provenance URL that adds no meaning and nothing distinguishes it from siblings like unifi_gen_deletenetwork or unifi_gen_deletevouchers.

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 indication of when to use this over alternatives, no prerequisites (e.g. that the ID must come from a get/list call), and no exclusions. The agent must infer everything from the name.

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

unifi_gen_executeadopteddeviceactionunifi_gen_executeadopteddeviceactionD
Destructive

Execute Adopted Device Action - generated from developer.ui.com/network/v11.0.97/executeadopteddeviceaction

NameRequiredDescriptionDefault
bodyNoJSON request body, sent as is. Top-level vendor fields only; full schema: vendor docs page in the description. The API requires a body.
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.
deviceIdYes

TDQS

D1.7/5.0
Behavior1/5

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

Annotations already flag destructiveHint=true, idempotentHint=false, and openWorldHint=true; the description adds nothing about what gets disrupted, that a device will be restarted, or what the confirm/dry_run safety flow means in practice. The only content beyond the name is a documentation URL, so no behavioral context is contributed.

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

Conciseness2/5

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

It is short, but the brevity comes from under-specification rather than efficiency: one name-restating line plus a provenance URL, with no front-loaded explanation of the operation.

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

Completeness1/5

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

For a destructive, non-idempotent, open-world mutation tool with four parameters and no output schema, the description provides nothing an agent needs in order to call it safely or correctly.

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

Parameters2/5

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

Schema coverage is 75% and the schema itself explains 'confirm' and 'dry_run'; the description only points to a vendor docs page for the body schema. It adds no meaning about the body's RESTART-only constraint or expected deviceId semantics.

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

Purpose2/5

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

The description restates the title ('Execute Adopted Device Action') and adds only a generator URL. It never says what the action is (the schema reveals it is a RESTART) nor how it differs from near-duplicate siblings such as unifi_net_device_action, unifi_net_reboot_device, unifi_gen_executeportaction, or unifi_gen_executeconnectedclientaction.

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 when-to-use, when-not-to-use, or alternative routing is given. An agent has to infer from the name alone whether this or the many other device-action siblings should be called.

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

unifi_gen_executeconnectedclientactionunifi_gen_executeconnectedclientactionC
Destructive

Execute Client Action - generated from developer.ui.com/network/v11.0.97/executeconnectedclientaction

NameRequiredDescriptionDefault
bodyNoJSON request body, sent as is. Top-level vendor fields only; full schema: vendor docs page in the description. The API requires a body.
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.
clientIdYes

TDQS

C2.3/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, idempotentHint=false and openWorldHint=true, so the safety profile is covered elsewhere. The description itself adds nothing about what gets destroyed, whether authorization is reversible, or that a confirm/dry-run preview flow exists (that only appears in the schema). The docs link is the sole added value.

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

Conciseness3/5

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

It is a single short line with no padding, and the verb+resource is front-loaded. However, the brevity comes from under-specification rather than economy, and the only substantive content is the appended URL.

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

Completeness2/5

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

For a destructive, non-idempotent mutation on a client with a 4-parameter body and no output schema, an agent needs to know what the action does and what the response/preview looks like. The description supplies neither, leaving annotations and schema to carry nearly everything.

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 75% — body, confirm and dry_run all carry inline descriptions explaining preview-vs-apply behavior, so the schema does the heavy lifting. The description contributes no parameter meaning beyond that, and clientId is undocumented, keeping this at the baseline for a mostly-covered schema.

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

Purpose2/5

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

The description restates the tool name ("Execute Client Action") and appends a vendor docs URL, adding essentially no explanatory content. It does not say what the action does, what action types exist (only the schema enum reveals AUTHORIZE_GUEST_ACCESS / UNAUTHORIZE_GUEST_ACCESS), or how it differs from close siblings like unifi_net_client_action or unifi_net_block_client.

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?

There is no when-to-use guidance and no mention of alternatives, despite the sibling list containing several overlapping client-manipulation tools (unifi_net_client_action, unifi_net_block_client, unifi_net_unblock_client). The only implied usage cue is the linked vendor documentation page, which the agent would have to fetch separately.

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

unifi_gen_executeportactionunifi_gen_executeportactionC
Destructive

Execute Port Action - generated from developer.ui.com/network/v11.0.97/executeportaction

NameRequiredDescriptionDefault
bodyNoJSON request body, sent as is. Top-level vendor fields only; full schema: vendor docs page in the description. The API requires a body.
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.
portIdxYes
deviceIdYes

TDQS

C2.1/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, and non-idempotent behavior, so the safety profile is known. The description adds nothing beyond that: it never says that POWER_CYCLE disrupts a live port, never mentions the confirm/dry_run safety pattern, and never explains what happens on execution. It is a name plus a URL, contributing no behavioral context.

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

Conciseness3/5

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

The description is short and front-loads the action name, so it is not bloated. However, half of its content is a provenance URL ('generated from developer.ui.com/...') rather than information that helps an agent decide or invoke, so its brevity reflects missing content rather than efficiency.

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

Completeness2/5

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

For a destructive, non-idempotent mutation with five parameters, two undocumented required fields, and no output schema, the description should carry substantial weight. Instead it offers only a vendor doc link, leaving the agent unable to determine effect scope, prerequisites, or return behavior from the definition itself.

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

Parameters2/5

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

Schema description coverage is only 60%: body, confirm, and dry_run are documented in the schema, but the two required parameters portIdx and deviceId have no descriptions beyond min/max and a UUID pattern. The description does not compensate at all — it says nothing about port index numbering or how to obtain a deviceId.

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

Purpose2/5

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

The description restates the tool name ('Execute Port Action') and appends a documentation URL, which is effectively tautological. It never explains what a 'port action' does in this API (the schema hints at POWER_CYCLE only inside the body const), and it does not distinguish itself from the sibling unifi_net_port_action, which appears to offer overlapping capability.

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?

There is no guidance at all about when to use this tool, when not to, or how it relates to alternatives such as unifi_net_port_action, unifi_net_device_action, or unifi_gen_executeadopteddeviceaction. The presence of a near-identical sibling makes this absence costly, though the text is not actively misleading.

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

unifi_gen_getaclruleunifi_gen_getaclruleC
Read-onlyIdempotent

Get ACL Rule - generated from developer.ui.com/network/v11.0.97/getaclrule

NameRequiredDescriptionDefault
aclRuleIdYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered structurally. The description adds no behavioral context of its own (no auth requirements, no scope, no return shape) beyond a source URL, so it contributes almost nothing beyond the annotations.

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

Conciseness4/5

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

Very short and front-loaded with the action. The appended 'generated from...' URL is filler that does not help an agent invoke the tool, but overall the definition wastes little space.

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

Completeness2/5

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

For a read tool with no output schema, the description should indicate what the returned ACL rule contains and how the ID is sourced. It offers neither, and there is no differentiation from the duplicate sibling, so an agent lacks enough to call it confidently.

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

Parameters2/5

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

Schema description coverage is 0% and the single aclRuleId parameter is documented only by its uuid format and regex pattern, with no prose. The description does not explain what an ACL rule ID refers to or how to obtain one, so it fails to compensate for the coverage gap.

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

Purpose3/5

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

States a specific verb and resource (get a single ACL Rule), which distinguishes it from list/create/update/delete variants. However, it does not differentiate from the near-duplicate sibling unifi_net_get_acl_rule, leaving the agent unable to choose between them from the description alone.

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?

There is no guidance on when to use this versus unifi_net_get_acl_rule or the list/page variants, and no prerequisites are mentioned. The trailing URL is provenance metadata, not usage context.

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

unifi_gen_getaclruleorderingunifi_gen_getaclruleorderingB
Read-onlyIdempotent

Get User-Defined ACL Rule Ordering - generated from developer.ui.com/network/v11.0.97/getaclruleordering

NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered structurally. The description adds nothing beyond that — no note on what the ordering payload looks like, whether it is site-scoped, or permission requirements — so it earns little credit over the annotations.

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

Conciseness4/5

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

A single short sentence with the operation front-loaded. The trailing 'generated from developer.ui.com/...' provenance adds little for an agent but is not harmful.

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

Completeness2/5

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

With no output schema, the description is the only place an agent could learn what 'ordering' returns (e.g., a list of rule IDs in priority sequence), and it says nothing about that. For a read tool whose entire value is its return shape, this is a meaningful gap.

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

Parameters4/5

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

The tool takes zero parameters, so there is no parameter semantics to explain; the baseline for a 0-param tool applies. Nothing in the description misleads about arguments.

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 names a specific verb and resource ('Get User-Defined ACL Rule Ordering'), so an agent knows it retrieves the ordering of user-defined ACL rules rather than the rules themselves. However, it does not distinguish itself from the near-identical sibling unifi_net_get_acl_rule_ordering, which appears to do the same thing.

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?

There is no statement of when to use this tool versus the sibling unifi_net_get_acl_rule_ordering or the reorder tool unifi_gen_updateaclruleordering. The only context is the 'generated from' provenance string, which does not help an agent choose.

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

unifi_gen_getaclrulepageunifi_gen_getaclrulepageC
Read-onlyIdempotent

List ACL Rules - generated from developer.ui.com/network/v11.0.97/getaclrulepage

NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo

TDQS

C2.7/5.0
Behavior2/5

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

The annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safety profile is covered. The description adds only provenance ('generated from developer.ui.com/network/v11.0.97/getaclrulepage'), which adds nothing about behavior related to pagination, default return size, or filter semantics.

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?

One short, front-loaded sentence with the action stated first. The trailing provenance URL is of marginal value to an agent but adds little bloat.

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

Completeness2/5

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

There is no output schema, and three parameters are undocumented everywhere. For a paginated list endpoint, an agent needs the filter format and paging defaults, and neither the description nor the schema supplies them.

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

Parameters2/5

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

Schema coverage is 0%: limit, filter, and offset are all undocumented, and the description does not explain the filter string syntax, that limit caps at 200, or the default page size. The single word 'List' implies pagination at most.

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 states a specific verb and resource: 'List ACL Rules'. It is clear what the tool returns, but it does not distinguish itself from the sibling unifi_net_list_acl_rules, which appears to serve the same purpose.

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 given about when to use this tool or when to use another tool instead. Given that the sibling list unifi_net_list_acl_rules overlaps, the absence of any routing hint leaves the agent to guess.

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

unifi_gen_getadopteddevicedetailsunifi_gen_getadopteddevicedetailsC
Read-onlyIdempotent

Get Adopted Device Details - generated from developer.ui.com/network/v11.0.97/getadopteddevicedetails

NameRequiredDescriptionDefault
deviceIdYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered upstream. The description adds nothing on top of that — no note about what the returned detail set contains, whether it reflects live or cached state, or what happens for non-adopted/nonexistent device IDs.

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

Conciseness3/5

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

It is short and front-loaded, which is good, but roughly half the text is an auto-generated provenance URL that carries no actionable meaning for an agent choosing or calling the tool.

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

Completeness2/5

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

With no output schema and a 0%-described parameter, the description is the only place an agent could learn what 'details' covers and how deviceId is sourced — and it supplies none of that. For a lookup tool whose whole value is the returned payload, this is under-specified.

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

Parameters2/5

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

Schema description coverage is 0% for the single required parameter deviceId, so the description must compensate and fails to: it never says the UUID identifies an adopted device, nor distinguishes it from a client ID or site ID. The schema's format/pattern gives shape but not semantics.

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

Purpose3/5

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

The name is restated as 'Get Adopted Device Details', which gives a verb and a resource, so the basic purpose is legible. But it offers no differentiation from close siblings like unifi_gen_getadopteddeviceoverviewpage or unifi_gen_getadopteddevicelateststatistics, and the trailing 'generated from developer.ui.com/...' provenance line is metadata rather than meaning.

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?

There is no statement of when this tool should be used instead of the overview page, latest-statistics, or unifi_net_get_device alternatives that appear in the sibling list. The agent is left to infer the selection rule entirely from tool names.

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

unifi_gen_getadopteddevicelateststatisticsunifi_gen_getadopteddevicelateststatisticsC
Read-onlyIdempotent

Get Latest Adopted Device Statistics - generated from developer.ui.com/network/v11.0.97/getadopteddevicelateststatistics

NameRequiredDescriptionDefault
deviceIdYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered by structured data. The description adds nothing beyond that — no indication of what statistics are returned, over what time window, whether the device must be currently adopted/online, or how fresh the data is.

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

Conciseness3/5

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

A single short sentence with the purpose front-loaded, which is good. However, roughly half the text is a generator/provenance URL that adds little decision value for an invoking agent.

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

Completeness2/5

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

No output schema exists, so the description would need to convey what "latest statistics" returns, and it does not. Combined with an unexplained required UUID parameter and several competing sibling tools, an agent cannot confidently call this correctly from the definition alone.

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

Parameters2/5

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

The single parameter (deviceId) has 0% schema description coverage; the schema supplies only type, uuid format, and a regex pattern. The description does not mention deviceId at all, nor clarify whether it must be an adopted device ID versus a generic device identifier — a gap the schema cannot fill.

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

Purpose3/5

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

States a specific verb and resource ("Get Latest Adopted Device Statistics"), so the agent knows the general domain, but it does not distinguish itself from near-identical siblings such as unifi_net_get_device_stats, unifi_gen_getadopteddevicedetails, or unifi_gen_getadopteddeviceoverviewpage. "Latest" and "statistics" are left undefined, so the exact scope is unclear.

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?

There is no guidance on when to use this tool versus the many sibling device-statistics/detail tools, and no prerequisites or exclusions are stated. The only extra information is a provenance URL, which does not help tool selection.

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

unifi_gen_getadopteddeviceoverviewpageunifi_gen_getadopteddeviceoverviewpageC
Read-onlyIdempotent

List Adopted Devices - generated from developer.ui.com/network/v11.0.97/getadopteddeviceoverviewpage

NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds nothing beyond that — no mention of pagination behavior, whether 'adopted' excludes pending devices, or what the overview response contains.

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

Conciseness3/5

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

It is short and front-loads the action, but roughly half the text is a provenance URL ('generated from developer.ui.com/...') that gives the calling agent no operational value.

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

Completeness2/5

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

For a paginated list endpoint with no output schema and undocumented parameters, the description should at minimum describe return shape and paging semantics. Neither is present, so an agent cannot confidently call it correctly.

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

Parameters2/5

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

Schema description coverage is 0% across three parameters; 'filter' in particular is an opaque string whose syntax is documented nowhere. The description provides no compensating explanation of limit/offset paging or filter grammar, so the agent is left guessing at the most consequential parameter.

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

Purpose3/5

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

The description states a verb and resource ('List Adopted Devices'), so the basic action is identifiable. But it does not differentiate from closely-named siblings such as unifi_gen_getadopteddevicedetails, unifi_gen_listdevices, or unifi_net_list_devices, leaving ambiguity about what makes this 'overview page' distinct.

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?

There is no guidance on when to use this versus unifi_gen_getadopteddevicedetails or the other device-listing tools. The agent must infer that this is the paginated overview endpoint purely from the name.

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

unifi_gen_getconnectedclientdetailsunifi_gen_getconnectedclientdetailsC
Read-onlyIdempotent

Get Connected Client Details - generated from developer.ui.com/network/v11.0.97/getconnectedclientdetails

NameRequiredDescriptionDefault
clientIdYes

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so safety is covered. The description adds nothing beyond a documentation URL — no note on what the detail payload contains, whether it requires the client to be actively connected, or any failure mode (e.g., unknown clientId).

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

Conciseness3/5

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

It is short and front-loads the operation name, which is good, but the remainder is a generated provenance URL that adds little actionable value for an agent and consumes half of an already minimal description.

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

Completeness2/5

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

With no output schema and zero parameter documentation, the description should explain what 'details' are returned and how to supply the client identifier. Instead it gives only a source URL, leaving an agent unable to predict the response shape or the precondition that the client be currently connected.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for the single required parameter. It never mentions clientId, where to obtain it (e.g., from a list-clients call), or how it relates to the connected client entity — only the schema's UUID pattern hints at the format.

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 states a specific verb+resource ('Get Connected Client Details'), so the agent knows this retrieves the detail record for a single connected client. However, it does not distinguish this from close siblings such as unifi_net_get_client or unifi_gen_getconnectedclientoverviewpage, leaving ambiguity about which client-retrieval tool to pick.

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?

There is no guidance on when to use this versus unifi_net_get_client, the connected-client overview page tool, or the client action tool. The agent must infer that this requires a known clientId and returns full details rather than a list.

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

unifi_gen_getconnectedclientoverviewpageunifi_gen_getconnectedclientoverviewpageC
Read-onlyIdempotent

List Connected Clients - generated from developer.ui.com/network/v11.0.97/getconnectedclientoverviewpage

NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered. The description adds nothing about pagination behavior, total-count fields, default page size, or result ordering — all relevant for a paged listing endpoint. The provenance URL is metadata, not behavior.

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?

One line, front-loaded with the action. The trailing "generated from developer.ui.com/..." is provenance noise that doesn't help invocation, but it costs little.

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

Completeness2/5

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

No output schema, no parameter documentation, and a terse label — for a paginated list endpoint with a free-form filter string, this leaves large gaps. The description should say what the page returns and how filter/limit/offset work together.

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

Parameters2/5

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

Three parameters (limit, filter, offset) have 0% schema description coverage, so the description carries the full burden — yet it mentions none of them. The agent gets no idea of filter syntax, whether filter is a query string or JSON, or that limit is capped at 200.

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

Purpose3/5

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

"List Connected Clients" gives a verb and resource, so the basic intent is clear. But it never distinguishes itself from the very similar siblings unifi_net_list_clients and unifi_gen_getconnectedclientdetails, and the description doesn't explain what an "overview page" contains versus those alternatives.

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?

There is no indication of when to use this tool rather than unifi_net_list_clients or unifi_gen_getconnectedclientdetails, despite both being present in the sibling list. The only additional text is a source-URL provenance note, which gives the agent no routing guidance.

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

unifi_gen_getcountriesunifi_gen_getcountriesC
Read-onlyIdempotent

List Countries - generated from developer.ui.com/network/v11.0.97/getcountries

NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo

TDQS

C2.8/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is fully covered. The description adds only a provenance URL with an API version, which is not behavioral context; it says nothing about pagination defaults, filter behavior, or result shape.

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?

A single short sentence with the purpose front-loaded; nothing is padded. The trailing 'generated from developer.ui.com/...' clause is the only arguably non-essential text, though it hints at the upstream spec.

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?

For a simple read-only list endpoint with annotations covering safety and no output schema, the description is minimally sufficient to call the tool. It is still incomplete regarding the filtering/pagination semantics and the overlap with the duplicate 'unifi_net_list_countries' tool, which an agent would need to choose correctly.

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

Parameters2/5

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

Schema description coverage is 0% and three parameters (limit, filter, offset) are documented nowhere. The description does not compensate at all — no mention of the 200-item limit cap, what 'filter' accepts, or default page size — though the conventional pagination names make the gap somewhat less severe than fully opaque parameters.

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 names a specific verb and resource ('List Countries'), so the agent knows exactly what the tool returns. However, it does nothing to distinguish itself from the sibling 'unifi_net_list_countries', which appears to do the same thing, leaving ambiguity unresolved.

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?

There is no guidance on when to use this tool versus the near-identical 'unifi_net_list_countries' sibling, nor any stated preconditions or exclusions. The only signal is the name itself, which implies a read-only enumeration.

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

unifi_gen_getdevicetagpageunifi_gen_getdevicetagpageC
Read-onlyIdempotent

List Device Tags - generated from developer.ui.com/network/v11.0.97/getdevicetagpage

NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds nothing beyond that — no mention of how limit/offset pagination behaves, no default page size, and no indication that this is the raw/generated variant of the endpoint.

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

Conciseness3/5

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

Very short, so nothing is bloated, but the second half is a provenance pointer ('generated from developer.ui.com/...') that occupies space without helping the agent invoke the tool. The useful content is a single noun phrase with no front-loaded operational detail.

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

Completeness2/5

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

Three undocumented parameters including an opaque 'filter' object, no output schema, and a confusing overlap with a sibling tool — this definition should do considerably more. It gives the agent no basis for constructing a paginated or filtered request.

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

Parameters1/5

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

Schema description coverage is 0% for all three parameters, and the 'filter' parameter has an entirely empty schema ({}), so neither the schema nor the description explains what it accepts. The description does not compensate at all; it names no parameters, no formats, and no defaults.

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?

States a specific verb and resource ('List Device Tags'), which is clear enough to know what the tool returns. However it makes no attempt to distinguish itself from the sibling unifi_net_list_device_tags, which appears to do the same thing.

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 versus unifi_net_list_device_tags, which is a near-identical sibling. The agent is left to guess which of the two tag-listing endpoints to call, and nothing is said about prerequisites or scope.

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

unifi_gen_getdnspolicyunifi_gen_getdnspolicyC
Read-onlyIdempotent

Get DNS Policy - generated from developer.ui.com/network/v11.0.97/getdnspolicy

NameRequiredDescriptionDefault
dnsPolicyIdYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnly, idempotent, non-destructive, open-world behavior, so the safety profile is covered. The description adds nothing beyond a documentation URL — no note on error behavior for an unknown ID, response shape, or any context beyond what annotations supply.

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

Conciseness3/5

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

It is a single short line with no padding, but it is also almost entirely content-free apart from the source-URL provenance. Brevity here comes from under-specification rather than disciplined writing.

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

Completeness2/5

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

For a lookup tool with an undocumented parameter and a duplicate-named sibling, the description does not equip the agent to choose or invoke it correctly. The 'generated from' URL is provenance, not usable operational context.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not mention dnsPolicyId at all. The agent must infer from the name and UUID format that it is the policy identifier; nothing is said about where to obtain it (e.g., from unifi_net_list_dns_policies).

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

Purpose3/5

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

The description states a verb and resource ('Get DNS Policy'), so the basic action is identifiable. But it offers no scope detail and does not distinguish this tool from the near-identical sibling unifi_net_get_dns_policy, leaving the agent to guess which to call.

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?

There is no guidance on when to use this versus unifi_net_get_dns_policy or unifi_net_list_dns_policies. Usage is only inferable from the tool name and the single required ID parameter.

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

unifi_gen_getdnspolicypageunifi_gen_getdnspolicypageC
Read-onlyIdempotent

List DNS Policies - generated from developer.ui.com/network/v11.0.97/getdnspolicypage

NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive, so the safety profile is covered. Beyond that the description adds only the upstream API path (v11.0.97/getdnspolicypage); it says nothing about pagination behavior for limit/offset, result ordering, or what a call returns.

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?

One line, front-loaded with the action and resource. The provenance clause is marginal filler but harmless; nothing bloats it.

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

Completeness2/5

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

For a paginated list tool with three undocumented parameters and no output schema, the description should explain pagination semantics and the filter parameter's format. It also omits how to distinguish this generated mirror from the native unifi_net_list_dns_policies.

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

Parameters2/5

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

All three parameters (limit, offset, filter) have 0% schema description coverage, and the description provides no compensating detail. limit/offset are conventional enough to guess, but the filter syntax and accepted fields are completely opaque.

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?

"List DNS Policies" names a specific verb and resource, so an agent can tell it enumerates DNS policies. However, it gives no hint on how this differs from the sibling unifi_net_list_dns_policies, and the "generated from..." suffix adds provenance rather than purpose.

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?

There is no when-to-use guidance, no prerequisites, and no mention of the nearly identical sibling unifi_net_list_dns_policies or unifi_gen_getdnspolicy for single-item retrieval. The agent must infer usage purely from the name.

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

unifi_gen_getdpiapplicationcategoriesunifi_gen_getdpiapplicationcategoriesC
Read-onlyIdempotent

List DPI Application Categories - generated from developer.ui.com/network/v11.0.97/getdpiapplicationcategories

NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo

TDQS

C2.8/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds nothing behavioral beyond a provenance URL: no pagination behavior, no filter semantics, no indication of what the response contains or how large the category set typically is.

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

Conciseness3/5

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

It is a single short, front-loaded line with no padding, which is good. But roughly half of it is a generator URL that conveys no actionable information to the calling agent.

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?

It is a read-only list endpoint with rich annotations and no required parameters, so the bar is genuinely low. Still, for a paginated, filterable list the description should say something about return size or filter matching, and it does not.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the full burden for limit, filter and offset, yet it mentions none of them. The agent is left to infer the filter syntax (matching on name? id?) and pagination defaults entirely on its own.

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?

States a specific verb (List) and resource (DPI Application Categories), which is enough to distinguish it from most siblings. However, it gives no differentiation from the near-identical sibling unifi_net_list_dpi_application_categories nor from unifi_gen_getdpiapplications, leaving the agent to guess which variant to call.

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?

There is no statement of when to use this tool, when not to, or which alternative to prefer. Given that two near-duplicate siblings exist (unifi_net_list_dpi_application_categories and unifi_gen_getdpiapplications), this omission is significant.

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

unifi_gen_getdpiapplicationsunifi_gen_getdpiapplicationsC
Read-onlyIdempotent

List DPI Applications - generated from developer.ui.com/network/v11.0.97/getdpiapplications

NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered structurally. The description adds nothing behavioral beyond a docs URL — no pagination behavior, no result size expectations despite a 200-item limit cap, and no note on what 'filter' matches.

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

Conciseness3/5

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

The single sentence is front-loaded and wastes no words on repetition of the input schema. However, it is under-specified rather than concise, and the appended developer.ui.com versioned URL is noise that consumes space without helping an agent decide or invoke.

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

Completeness2/5

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

With no output schema, three undocumented query parameters, and two near-duplicate sibling list tools, the description should explain the filter/pagination contract and the difference from unifi_net_list_dpi_applications. None of that is present, leaving real ambiguity for an agent with no required parameters to anchor on.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the full burden for limit, offset and filter — yet it mentions none of them. The parameter names are largely self-explanatory and bounds are in the schema, but the critical question of filter syntax (name match? prefix? case sensitivity?) is left entirely unresolved.

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 states a specific verb and resource ("List DPI Applications"), which is enough to know the operation is a read-only enumeration of DPI application entries. It does not, however, distinguish this from close siblings such as unifi_net_list_dpi_applications or unifi_gen_getdpiapplicationcategories, forcing the agent to guess which of the three to call.

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?

There is no when-to-use guidance, no exclusion of alternatives, and no mention of prerequisites such as site or network scoping. The only additional text is a source URL, which tells the agent nothing about when this tool is the right choice over its nearly identical siblings.

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

unifi_gen_getfirewallpoliciesunifi_gen_getfirewallpoliciesC
Read-onlyIdempotent

List Firewall Policies - generated from developer.ui.com/network/v11.0.97/getfirewallpolicies

NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered structurally. The description adds nothing behavioral beyond a source-doc citation — no mention of pagination behavior, default page size, result ordering, or how the open-world 'filter' query is applied.

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

Conciseness3/5

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

It is short and front-loaded, which is good, but half the content is a 'generated from developer.ui.com/...' provenance note that provides no value to an invoking agent. The brevity here reflects under-specification rather than disciplined concision.

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?

Placeholder check: this dimension is scored on the definition as a whole. With a read-only list tool, annotations covering safety, no output schema required, and no required parameters, an agent can invoke it correctly with a bare call; the missing filter grammar is the main residual gap and is penalized under parameter_semantics.

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

Parameters2/5

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

Schema description coverage is 0%, so all three parameters (limit, offset, filter) are undocumented anywhere. The description makes no attempt to explain them, and 'filter' in particular has an unknown syntax/grammar that an agent cannot infer from the schema alone.

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 gives a clear verb+resource ('List Firewall Policies'), which is enough for an agent to know it enumerates the collection rather than fetching one policy like unifi_gen_getfirewallpolicy. It does not, however, distinguish itself from the near-identical sibling unifi_net_list_firewall_policies, nor does it state scope (site-level? all sites?).

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?

There is no when-to-use guidance, no mention of when to prefer this over unifi_net_list_firewall_policies, and no note about pagination or prerequisites. The only usage-adjacent text is a documentation URL, which is not actionable 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_gen_getfirewallpolicyunifi_gen_getfirewallpolicyC
Read-onlyIdempotent

Get Firewall Policy - generated from developer.ui.com/network/v11.0.97/getfirewallpolicy

NameRequiredDescriptionDefault
firewallPolicyIdYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is fully covered structurally. The description adds nothing behavioral beyond a documentation-source URL — no error behavior for an unknown ID, no return shape, no auth notes.

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?

Extremely short and front-loaded with the action. The trailing "generated from developer.ui.com/..." provenance string is metadata noise rather than useful guidance, keeping it out of the top score.

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

Completeness2/5

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

For a single-parameter lookup with no output schema, the description should at least say what is returned or how to source the ID. With annotations carrying the safety profile, the remaining burden on the description is modest but still unmet.

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

Parameters2/5

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

The single parameter firewallPolicyId has 0% schema description coverage; the schema supplies only type/format/pattern. The description never explains that the value is a policy UUID or where to obtain one, so it fails to compensate for the coverage gap.

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

Purpose3/5

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

The description names a specific verb and resource ("Get Firewall Policy"), so the basic action is clear, and the singular form hints at a single-record fetch versus the sibling list tool. However, it offers no differentiation from the near-duplicate sibling unifi_net_get_firewall_policy, and the only other content is a provenance URL.

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?

There is no guidance on when to use this tool versus unifi_gen_getfirewallpolicies or unifi_net_get_firewall_policy, and no stated prerequisite such as needing an ID obtained from a list call. Usage must be inferred entirely from the name.

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

unifi_gen_getfirewallpolicyorderingunifi_gen_getfirewallpolicyorderingC
Read-onlyIdempotent

Get User-Defined Firewall Policy Ordering - generated from developer.ui.com/network/v11.0.97/getfirewallpolicyordering

NameRequiredDescriptionDefault
sourceFirewallZoneIdYes
destinationFirewallZoneIdYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is fully covered structurally. The description adds only the 'User-Defined' scope qualifier and says nothing about what ordering data is returned, whether zones must be a valid pair, or what happens when no policies exist between the zones.

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

Conciseness3/5

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

It is short and front-loaded, so it is not padded in length. However, the second half ('generated from developer.ui.com/...') is machine provenance that consumes space without informing the agent's decision, so not every element earns its place.

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

Completeness2/5

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

With no output schema, the description is the only place that could explain the return shape — presumably an ordered list of policy IDs for the zone pair — and it says nothing about it. For a tool whose entire purpose is order, omitting how order is represented is a material gap.

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

Parameters2/5

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

Schema description coverage is 0% and neither parameter has a description, so the description carries the burden of explaining sourceFirewallZoneId and destinationFirewallZoneId — including that both must be valid existing zone UUIDs and that the pair defines the ordering direction. It supplies none of that; only the self-evident property names carry meaning.

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

Purpose3/5

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

The phrase 'Get User-Defined Firewall Policy Ordering' names a verb and a resource, so the basic operation is inferable. But it does not differentiate from the near-identical siblings unifi_net_get_firewall_policy_ordering and unifi_gen_updatefirewallpolicyordering, so an agent cannot tell which of the three to pick from the description alone.

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?

There is no statement of when to use this tool, no exclusions, and no pointer to the sibling that returns or mutates ordering. The only remaining sentence is a provenance note ('generated from developer.ui.com/...'), which is not usage guidance.

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

unifi_gen_getfirewallzoneunifi_gen_getfirewallzoneD
Read-onlyIdempotent

Get Firewall Zone - generated from developer.ui.com/network/v11.0.97/getfirewallzone

NameRequiredDescriptionDefault
firewallZoneIdYes

TDQS

D1.8/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered. The description adds nothing beyond a source documentation link — no information on behavior when the ID is unknown, whether it returns 404/empty, or required permissions.

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

Conciseness2/5

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

It is short, but this is under-specification rather than conciseness. The one non-redundant element is the developer.ui.com link, which is provenance metadata rather than actionable information for the calling agent.

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

Completeness2/5

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

Annotations cover safety and there is no output schema, but the description still leaves the entire parameter undocumented and gives no hint about the returned zone object shape. For a lookup tool with a required UUID argument, this is a bare-minimum definition.

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

Parameters2/5

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

There is one required parameter (firewallZoneId) with 0% schema description coverage; the schema supplies only a UUID format/pattern with no prose meaning. The description does not mention the parameter at all, so it fails to compensate for the coverage gap — the agent cannot tell whether this is a zone UUID, name, or something else.

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

Purpose2/5

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

The description restates the tool name/title ('Get Firewall Zone') and adds only a provenance URL. It does not distinguish this tool from the near-identical sibling unifi_net_get_firewall_zone or clarify the singular-vs-list relationship with unifi_gen_getfirewallzones.

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

Usage Guidelines1/5

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

No guidance whatsoever on when to use this versus unifi_net_get_firewall_zone, unifi_gen_getfirewallzones, or unifi_net_list_firewall_zones. The agent must infer everything from the tool name alone.

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

unifi_gen_getfirewallzonesunifi_gen_getfirewallzonesC
Read-onlyIdempotent

List Firewall Zones - generated from developer.ui.com/network/v11.0.97/getfirewallzones

NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo

TDQS

C2.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that: no pagination defaults, no maximum result behavior (limit caps at 200), and no note that filter syntax is undocumented. Only the 'generated from developer.ui.com' provenance is added, which is not behaviorally useful.

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

Conciseness3/5

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

It is a single short, front-loaded line, so there is no padding in the sentence itself. However, the appended developer.ui.com URL is dead weight that consumes half the text without helping an agent decide or invoke.

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

Completeness2/5

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

There is no output schema, so the description should say what a firewall zone record contains and how pagination results are returned; it says neither. For a parameterized, open-world list tool this leaves the agent with more unknowns than knowns.

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

Parameters1/5

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

All three parameters (limit, filter, offset) have 0% schema description coverage, so the description must carry their meaning and does not mention any of them. The filter string in particular is completely unexplained, leaving an agent with no way to construct a valid query.

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

Purpose3/5

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

"List Firewall Zones" gives a clear verb plus resource, but it stops at restating the tool name. There is a near-identical sibling (unifi_net_list_firewall_zones) and a singular variant (unifi_gen_getfirewallzone), and the description offers no basis for choosing between them. The trailing source URL is provenance metadata, not purpose information.

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?

There is no statement of when to use this tool rather than unifi_net_list_firewall_zones, when to page with limit/offset, or what filter accepts. An agent is left entirely to inference from the name.

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

unifi_gen_gethostbyidunifi_gen_gethostbyidC
Read-onlyIdempotent

Get Host by ID - generated from developer.ui.com/site-manager/v1.0.0/gethostbyid

NameRequiredDescriptionDefault
idYesUnique identifier of the host

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so safety is covered. The description adds nothing beyond a source URL — no note on what a 'host' is in this API, what the response contains, or whether an unknown ID errors versus returns empty.

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

Conciseness3/5

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

It is very short and front-loads the operation, which is good, but half of the text is auto-generated provenance boilerplate that does not help an agent decide or invoke. Brevity here reflects under-specification rather than disciplined editing.

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

Completeness2/5

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

No output schema exists, so the description is the only place an agent could learn what a host record contains or how to obtain a valid id — and it says neither. For a generated single-entity lookup tool, that leaves a meaningful gap.

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

Parameters3/5

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

Schema description coverage is 100% and the single `id` parameter is documented as 'Unique identifier of the host', so the schema carries the load. The description adds no syntax, format, or provenance detail about where an id comes from (e.g., a listhosts call), so baseline 3 applies.

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

Purpose3/5

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

The description restates the tool name almost verbatim ("Get Host by ID") plus a provenance URL, which is essentially tautological against the title. It does convey the verb (retrieve) and the resource (host, keyed by id), but gives no differentiation from siblings such as unifi_sm_get_host or unifi_gen_listhosts.

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?

There is no statement of when to use this tool versus alternatives, and the sibling set contains a near-duplicate (unifi_sm_get_host) that an agent would need help disambiguating. No prerequisites, no scope notes, no exclusions.

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

unifi_gen_getinfounifi_gen_getinfoC
Read-onlyIdempotent

Get Application Info - generated from developer.ui.com/network/v11.0.97/getinfo

NameRequiredDescriptionDefault

No parameters

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds no behavioral context beyond the annotations, such as what data is returned, whether authentication is needed, or any rate-limit characteristics.

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

Conciseness3/5

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

The description is short and front-loaded with the action, which is good. However, the trailing 'generated from developer.ui.com/...' clause is provenance metadata that does not help an agent select or invoke the tool, so not every sentence earns its place.

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

Completeness2/5

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

With no output schema and no parameter schema of substance, the description carries the burden of explaining what 'Application Info' actually returns. It does not do so, and it also fails to distinguish this tool from closely named siblings, leaving the agent under-informed despite the tool's simplicity.

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

Parameters4/5

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

The tool has zero parameters, so parameter semantics are not a concern. The baseline of 4 applies because there is nothing for the description to compensate for.

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

Purpose3/5

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

The description gives a verb and resource ('Get Application Info'), so the basic action is clear. However, 'Application Info' is vague about what application or data is meant, and there is no differentiation from sibling tools such as unifi_net_get_info or unifi_sm_identity.

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?

There is no guidance on when to use this tool versus alternatives, nor any stated context or prerequisites. The description merely names the operation and cites a source URL, leaving routing decisions entirely to inference.

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

unifi_gen_getispmetricsunifi_gen_getispmetricsC
Read-onlyIdempotent

Get ISP Metrics - generated from developer.ui.com/site-manager/v1.0.0/getispmetrics

NameRequiredDescriptionDefault
typeYesSpecifies whether metrics are returned using `5m` or `1h` intervals
durationNoSpecifies the time range of metrics to retrieve, starting from when the request is made. Supports `24h` for 5-minute metrics, and `7d` or `30d` for 1-hour metrics. This parameter **cannot** be used with `beginTimestamp` or `endTimestamp`.
endTimestampNoThe latest timestamp to retrieve data up to (RFC3339 format)
beginTimestampNoThe earliest timestamp to retrieve data from (RFC3339 format)

TDQS

C2.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds nothing beyond that – no note on granularity tradeoffs, data freshness, retention windows, or why 5m only pairs with 24h and 1h only with 7d/30d.

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

Conciseness3/5

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

It is short and the purpose is front-loaded, but roughly half the text is a generator provenance URL rather than information useful for tool selection. Brevity here reflects under-specification rather than disciplined editing.

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

Completeness2/5

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

For a four-parameter metrics-retrieval tool with no output schema, the description says nothing about what is returned (latency, jitter, packet loss, availability?), units, or per-site vs. aggregate scope. The schema compensates for parameters, but the return-value burden falls entirely on an undocumented description.

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 mutual exclusivity of duration vs. beginTimestamp/endTimestamp and the 5m/1h interval semantics are already documented in the schema. The description adds no additional parameter meaning, which is the baseline-3 case.

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

Purpose2/5

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

The description is essentially the tool name humanized ("Get ISP Metrics") plus a provenance URL. It restates the title rather than explaining what ISP metrics are or what scope is retrieved, and it makes no attempt to separate this from close siblings such as unifi_sm_get_isp_metrics, unifi_sm_query_isp_metrics, or unifi_gen_queryispmetrics.

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?

There is no when-to-use guidance, no exclusions, and no pointer to the several near-duplicate ISP metrics siblings. An agent must infer from the name alone that this is a read of ISP health/performance data.

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

unifi_gen_getlagunifi_gen_getlagC
Read-onlyIdempotent

Get LAG Details - generated from developer.ui.com/network/v11.0.97/getlag

NameRequiredDescriptionDefault
lagIdYes

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and non-destructive behavior, so the safety profile is covered. The description adds nothing beyond that, such as return shape, permission requirements, or rate-limit behavior; the only extra clause is a source-code provenance note.

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

Conciseness3/5

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

The description is short and front-loads the useful phrase 'Get LAG Details'. However, roughly half of it is a 'generated from developer.ui.com...' provenance note that does not help an agent select or invoke the tool.

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

Completeness2/5

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

For a one-parameter read tool this is thin: it does not explain what LAG details include, how lagId is obtained, or how it differs from sibling LAG tools. Annotations cover the safety profile, but the description leaves practical invocation context missing.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must carry the burden of explaining lagId. It does not: lagId is self-identifying as an identifier and the schema constrains it to a UUID, but the description never says where to get it or what a LAG refers to in this context.

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 states a clear verb and resource: 'Get LAG Details'. It does not, however, distinguish this from sibling tools such as unifi_net_get_lag, unifi_gen_getlagpage, or unifi_net_list_lags, so an agent cannot tell which LAG-fetching tool to choose without inspecting schemas.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives. The description does not explain when a single LAG lookup is appropriate compared with listing LAGs or using the page-level sibling, nor does it mention prerequisites for obtaining a lagId.

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

unifi_gen_getlagpageunifi_gen_getlagpageC
Read-onlyIdempotent

List LAGs - generated from developer.ui.com/network/v11.0.97/getlagpage

NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds nothing about pagination behavior, result limits, or what the generated `filter` string accepts — context that matters for a paginated read endpoint.

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?

Two short clauses, front-loaded with the verb and resource, no filler. The generated-from URL adds little for an agent but does not bloat the text.

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

Completeness2/5

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

For a generated endpoint with zero schema coverage, no output schema, and near-duplicate siblings, the description should at minimum explain the filter/pagination contract and how it relates to unifi_net_list_lags. It supplies none of that.

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

Parameters2/5

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

Schema description coverage is 0% across three parameters, so the description carries the full burden and fails to meet it. Nothing explains the `filter` syntax or what `limit`/`offset` page over, beyond what the bare property names imply.

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

Purpose3/5

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

The description gives a specific verb and resource ("List LAGs"), so the basic operation is legible. However, it does not distinguish this tool from close siblings such as unifi_net_list_lags, unifi_gen_getlag, or unifi_net_get_lag, leaving the agent unable to tell why there are duplicates or which to prefer.

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?

There is no statement of when to use this tool, when not to, or which alternative sibling to pick for multi-LAG vs single-LAG retrieval. The only extra text is a provenance URL, which gives no selection guidance.

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

unifi_gen_getmclagdomainunifi_gen_getmclagdomainC
Read-onlyIdempotent

Get MC-LAG Domain - generated from developer.ui.com/network/v11.0.97/getmclagdomain

NameRequiredDescriptionDefault
mcLagDomainIdYes

TDQS

C2.8/5.0
Behavior2/5

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

The annotations already declare readOnly, idempotent, non-destructive and openWorld, so the safety profile is covered. The description adds nothing beyond that — not what happens when the ID is unknown, not the error shape, and not the (likely Unifi-API-backed) authorization context implied by openWorldHint.

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?

One short sentence with the resource front-loaded, plus a compact provenance reference. There is no filler, though the versioned docs URL adds little for an agent deciding how to call the tool.

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?

For a single-parameter read tool whose annotations carry the safety profile, this is minimally sufficient. The remaining gaps — how to obtain the ID and which of several lookalike MC-LAG tools to use — are real but not fatal.

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

Parameters2/5

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

Schema description coverage is 0%, and the description never mentions mcLagDomainId, so it does nothing to compensate. An agent gets the UUID format from the schema but no hint that the value should be sourced from the MC-LAG domain list endpoint.

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 states a specific verb and resource ("Get MC-LAG Domain"), so an agent knows exactly what kind of object is retrieved. It does not, however, distinguish this from the near-identical siblings unifi_net_get_mclag_domain and unifi_gen_getmclagdomainpage, leaving the agent to guess which retrieval variant to call.

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 when-to-use guidance is given: no prerequisites, no note on where a domain ID comes from, and no exclusion pointing to list_mclag_domains or the net-namespace equivalent. The only extra text is a source URL, which is provenance rather than usage instruction.

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

unifi_gen_getmclagdomainpageunifi_gen_getmclagdomainpageC
Read-onlyIdempotent

List MC-LAG Domains - generated from developer.ui.com/network/v11.0.97/getmclagdomainpage

NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnly, idempotent, non-destructive, open-world, so safety is covered. The description adds nothing beyond a source URL: no pagination behavior, no default ordering, no indication of what a page contains or how limit/offset interact.

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?

One short, front-loaded sentence with no padding. Slightly under-specified rather than verbose; the trailing 'generated from' URL is low-value but cheap.

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

Completeness2/5

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

A paginated list tool with no output schema and no parameter documentation; the description doesn't say what fields a domain record has, whether results are paged, or how to page. For a zero-annotation-gap read tool the bar is lower, but this still leaves the agent guessing.

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

Parameters2/5

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

Schema coverage is 0% and the description says nothing about limit, filter, or offset. The names are conventional pagination/filter params, but no filter syntax, max page size behavior (limit caps at 200), or default is disclosed anywhere.

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?

Specific verb and resource ('List MC-LAG Domains'), so an agent knows what it returns. However it does not differentiate from the near-identical sibling unifi_net_list_mclag_domains, and the trailing doc URL adds no disambiguation.

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 when-to-use, when-not-to-use, or alternative named. With siblings like unifi_net_list_mclag_domains and unifi_gen_getmclagdomain covering the same resource, the absence of routing guidance is a real gap.

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

unifi_gen_getnetworkdetailsunifi_gen_getnetworkdetailsD
Read-onlyIdempotent

Get Network Details - generated from developer.ui.com/network/v11.0.97/getnetworkdetails

NameRequiredDescriptionDefault
networkIdYes

TDQS

D1.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered without the description. The description adds nothing about what a 'network detail' contains, error behavior for invalid/unknown IDs, or permissions — the 'generated from developer.ui.com/.../v11.0.97/getnetworkdetails' note only signals the upstream API version.

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

Conciseness2/5

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

It is short, but shortness here is under-specification rather than concision; the only content beyond the title is a provenance URL. Nothing is front-loaded because there is nothing substantive to front-load.

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

Completeness1/5

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

A detail-fetch tool with a required identifier and no output schema needs the description to explain what is returned and how it differs from other network getters. Nothing of the sort is present, leaving the agent unable to predict the response shape or pick correctly among siblings.

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

Parameters1/5

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

Schema description coverage is 0%, so the description carries the full burden of explaining the single parameter, yet it says nothing. An agent must infer that networkId is the UUID of a UniFi network, and specifically which network identifier (site-scoped? overlay? VLAN?) is expected.

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

Purpose2/5

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

The description restates the name ('Get Network Details') with no elaboration, which is effectively a tautology. It gives no way to distinguish this from close siblings such as unifi_net_get_network, unifi_gen_getnetworkreferences, or unifi_gen_getnetworksoverviewpage, which all sound like they return network details.

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

Usage Guidelines1/5

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

There is no guidance on when to use this tool versus the many sibling getters, no preconditions, and no exclusions. The only additional text is a source URL for the upstream API spec, which is not usage instruction.

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

unifi_gen_getnetworkreferencesunifi_gen_getnetworkreferencesD
Read-onlyIdempotent

Get Network References - generated from developer.ui.com/network/v11.0.97/getnetworkreferences

NameRequiredDescriptionDefault
networkIdYes

TDQS

D1.8/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered structurally. The description adds nothing beyond that — no statement of what is returned, whether references reflect dependent objects (firewall policies, Wi-Fi, etc.), or whether results can be large/truncated.

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

Conciseness3/5

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

It is short and front-loaded, so it is not bloated. But the brevity is under-specification rather than efficiency: the second half of the single sentence is a provenance URL that conveys nothing an agent can act on.

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

Completeness2/5

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

No output schema exists, so the description should explain what a reference list looks like; it does not. Combined with an undocumented required parameter and a duplicated sibling, an agent cannot confidently decide to call this tool or interpret its result.

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

Parameters1/5

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

Schema description coverage is 0% for the single required networkId parameter, and the description supplies no compensating meaning — it does not say what a networkId identifies, where to obtain one, or what happens with an invalid/unknown ID. The description carries the full burden here and discharges none of it.

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

Purpose2/5

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

The description restates the tool name ("Get Network References") and appends a documentation URL. It never explains what a "network reference" is or what entity is being retrieved, and it does nothing to distinguish this from the near-identical sibling unifi_net_get_network_references, which appears in the same tool list.

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

Usage Guidelines1/5

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

There is no guidance on when to call this versus unifi_net_get_network, unifi_net_get_network_references, or unifi_gen_getnetworkdetails — all of which plausibly overlap. The only added text is a source URL, which is not usage guidance.

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

unifi_gen_getnetworksoverviewpageunifi_gen_getnetworksoverviewpageC
Read-onlyIdempotent

List Networks - generated from developer.ui.com/network/v11.0.97/getnetworksoverviewpage

NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo

TDQS

C2.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered. The description adds nothing beyond that: no mention of pagination behavior (despite limit/offset), no note on whether the list is site-scoped, and no hint about response volume. With the lower bar set by annotations, this is still a thin contribution.

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

Conciseness3/5

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

The text is short and front-loads the action, which is good, but the second half is a provenance URL that does not help an agent select or invoke the tool. Brevity here reflects under-specification rather than disciplined editing.

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

Completeness2/5

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

For a paginated list tool with three undocumented parameters, no output schema, and a same-purpose sibling, the description is materially incomplete. An agent cannot determine the filter syntax, the default page size, or how this differs from unifi_net_list_networks.

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

Parameters1/5

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

Schema description coverage is 0% across three parameters, so the description carries the full burden and delivers nothing. "filter" in particular is an untyped string with no syntax, field names, or format disclosed, and limit/offset bounds and defaults are left entirely implicit.

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

Purpose3/5

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

"List Networks" gives a clear verb and resource, but the definition offers no way to distinguish it from the near-identical sibling unifi_net_list_networks, nor from unifi_gen_getnetworkdetails. The trailing provenance string ("generated from developer.ui.com/network/v11.0.97/getnetworksoverviewpage") identifies the upstream endpoint, not the tool's scope, so an agent still cannot tell which of the two network-listing tools to pick.

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?

There is no when-to-use, when-not-to-use, or alternative-tool guidance anywhere in the description. Given that the sibling list contains both unifi_net_list_networks and unifi_gen_getnetworkdetails, the absence of routing guidance leaves the choice entirely to inference.

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

unifi_gen_getpendingdevicepageunifi_gen_getpendingdevicepageC
Read-onlyIdempotent

List Devices Pending Adoption - generated from developer.ui.com/network/v11.0.97/getpendingdevicepage

NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false. The description adds only provenance ('generated from...'), not behavioral context such as pagination, filtering, or return format.

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

Conciseness4/5

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

The description is short and front-loads the tool purpose. The provenance note is somewhat dispensable, but the overall structure is efficient.

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

Completeness2/5

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

For a list tool with three undocumented parameters and no output schema, the description is not complete enough to guide correct invocation. It omits filter syntax, pagination behavior, and response expectations.

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

Parameters1/5

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

Schema description coverage is 0% for all three parameters (limit, filter, offset), and the description does not explain any of them. The description does nothing to compensate for the missing schema documentation.

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 states a specific verb and resource: 'List Devices Pending Adoption.' It is clear what the tool does, but it does not distinguish itself from the sibling tool unifi_net_list_pending_devices.

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 does not say when to use this tool versus alternatives, nor does it mention prerequisites or exclusions. Usage is only implied by the name and description.

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

unifi_gen_getradiusprofileoverviewpageunifi_gen_getradiusprofileoverviewpageC
Read-onlyIdempotent

List Radius Profiles - generated from developer.ui.com/network/v11.0.97/getradiusprofileoverviewpage

NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is fully covered. The description adds nothing beyond that — no note on pagination behavior, default page size, result completeness, or what the 'generated from' API endpoint implies for output shape.

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?

One short, front-loaded sentence with no padding. The trailing 'generated from developer.ui.com/...' provenance is mildly useful for tracing the underlying API but is not behavioral information, keeping this just short of a 5.

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

Completeness2/5

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

With no output schema, zero-described parameters, and a duplicate sibling, the description is the only place an agent could learn what the tool returns or how to page/filter. It supplies none of that, so an agent cannot call it correctly without guessing.

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

Parameters2/5

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

Schema description coverage is 0% for three parameters (limit, offset, filter). While limit/offset are self-explanatory pagination names, the description says nothing about the filter string syntax or what fields it matches on — the parameter that most needs explanation is left entirely undocumented.

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 gives a specific verb and resource ('List Radius Profiles'), so the basic operation is unambiguous. However, it does nothing to differentiate this tool from the near-identical sibling 'unifi_net_list_radius_profiles' in the same toolset, leaving the agent to guess which of the two to call.

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?

There is no indication of when to use this tool versus the sibling list tool, no mention of pagination expectations, and no prerequisites or context. The only guidance is the implicit 'it lists radius profiles', which the name already conveys.

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

unifi_gen_getsdwanconfigbyidunifi_gen_getsdwanconfigbyidC
Read-onlyIdempotent

Get SD-WAN Config by ID - generated from developer.ui.com/site-manager/v1.0.0/getsdwanconfigbyid

NameRequiredDescriptionDefault
idYesUnique identifier of the SD-WAN configuration

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description adds nothing beyond the name — no note on what is returned, whether a missing ID errors, or permissions required — so the lower bar set by annotations still isn't met with extra value.

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

Conciseness3/5

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

It is short and front-loaded with the action, but the "generated from developer.ui.com/..." suffix is internal provenance noise that consumes half the description without helping an agent.

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?

For a one-parameter read operation with full schema coverage and complete annotations, the essentials are present. What is missing is any link to the list-sibling for discovery of IDs, which is the practical hurdle for calling this 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% and the single id parameter is documented as the unique identifier of the SD-WAN configuration. The description adds no format or sourcing detail beyond the schema, so the baseline of 3 applies.

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

Purpose4/5

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

The description names a specific verb and resource ("Get SD-WAN Config by ID"), which is unambiguous on its own. It does not differentiate from its obvious siblings such as unifi_gen_listsdwanconfigs or unifi_sm_get_sdwan_config, so an agent must infer the distinction from the names alone.

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?

There is no guidance on when to use this tool versus the SD-WAN list tool or the alternative get_sdwan_config variants. The only appended text is a provenance URL, which gives no usage context.

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

unifi_gen_getsdwanconfigstatusunifi_gen_getsdwanconfigstatusC
Read-onlyIdempotent

Get SD-WAN Config Status - generated from developer.ui.com/site-manager/v1.0.0/getsdwanconfigstatus

NameRequiredDescriptionDefault
idYesUnique identifier of the SD-WAN configuration

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so the safety profile is covered. The description adds no behavioral context of its own — no indication of what status fields come back, whether the id refers to a config or a site, or whether results are cached/live. The only added text is a provenance URL.

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

Conciseness3/5

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

Very short and front-loaded with the purpose, which is good, but the trailing 'generated from developer.ui.com/...' provenance string occupies a meaningful share of an already minimal description without helping the agent decide or invoke.

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

Completeness2/5

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

No output schema exists, yet the description never says what a 'config status' response contains or how it differs from the config itself. For a tool whose whole value is a status payload, that is a substantive gap even though the single parameter is well documented.

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

Parameters3/5

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

Schema description coverage is 100% and the single 'id' parameter is documented as the SD-WAN configuration identifier, so the baseline applies. The description adds no extra meaning about where that id comes from (presumably listsdwanconfigs) or how it is formatted.

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

Purpose3/5

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

States a specific verb and resource ('Get SD-WAN Config Status'), but the resource is ambiguous next to siblings like unifi_gen_getsdwanconfigbyid, unifi_gen_listsdwanconfigs, and unifi_sm_get_sdwan_config_status. Nothing explains what a 'config status' is versus a config, so the agent cannot confidently pick this tool from the family without opening schemas.

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?

There is no when-to-use guidance, no prerequisites, and no mention of the closely named alternatives (getsdwanconfigbyid, listsdwanconfigs, unifi_sm_get_sdwan_config_status). The agent must infer selection from the name alone.

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

unifi_gen_getsiteoverviewpageunifi_gen_getsiteoverviewpageC
Read-onlyIdempotent

List Local Sites - generated from developer.ui.com/network/v11.0.97/getsiteoverviewpage

NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo

TDQS

C2.1/5.0
Behavior2/5

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

Annotations already declare readOnly, idempotent, non-destructive, open-world behavior, so the safety profile is covered. The description adds nothing beyond that: it doesn't mention pagination behavior (limit/offset are visible in the schema but unmentioned), result volume, or how the overview page is composed. The developer.ui.com URL is metadata, not behavioral disclosure.

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

Conciseness2/5

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

It is short, but short by omission rather than by discipline. The second clause is a raw documentation URL that consumes roughly half the text without helping an agent decide or invoke, while the mechanically important pagination/filter semantics are absent.

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

Completeness2/5

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

With no output schema and only annotation-level safety hints, the description should describe what a "site overview page" returns and how to page through it. It does not, nor does it disambiguate from the many other listing siblings. Only the read-only/idempotent annotations keep this from being a full failure.

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

Parameters1/5

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

Schema description coverage is 0% for all three parameters, so the description carries the full burden and provides nothing. It never explains what 'filter' accepts (syntax, fields, operators) or how limit/offset pagination behaves, which is the single most important thing an agent needs here.

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

Purpose3/5

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

It states a verb and resource ("List Local Sites"), which is better than a tautology, but the name says "getsiteoverviewpage" (a paginated overview endpoint) while the description says "List", and no sibling is distinguished. Dozens of siblings perform similar listing (unifi_gen_listsites, unifi_net_list_sites, unifi_sm_list_sites), so an agent cannot tell which one to pick from this text.

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?

There is no when-to-use guidance, no mention of prerequisites, and no routing to alternatives such as unifi_gen_listsites or unifi_net_list_sites. The only extra content is a provenance URL, which gives the agent nothing actionable about selection.

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

unifi_gen_getsitetositevpntunnelpageunifi_gen_getsitetositevpntunnelpageC
Read-onlyIdempotent

List Site-To-Site VPN Tunnels - generated from developer.ui.com/network/v11.0.97/getsitetositevpntunnelpage

NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=true, so the safety profile is carried by structured data. The description adds nothing beyond that — it does not say whether results are paginated, how the response is shaped, or how 'page' semantics differ from the sibling list tool.

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?

A single short sentence with the purpose front-loaded; nothing is buried. The trailing source-URL attribution is low-value for an agent but takes little space.

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

Completeness2/5

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

For a paginated list endpoint with no output schema and zero parameter documentation, the description should explain pagination behavior, the filter format, and how it relates to unifi_net_list_site_to_site_vpn. None of that is present, leaving the agent to guess between duplicate routes.

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

Parameters2/5

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

Schema description coverage is 0% across three parameters (limit, filter, offset), so the description bears the burden of explaining them and does not. The filter string's accepted syntax and the max-200 limit cap are left entirely opaque.

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 gives a specific verb and resource: 'List Site-To-Site VPN Tunnels', which is far better than a tautology. However, it does not distinguish this from the near-identical sibling unifi_net_list_site_to_site_vpn, nor explain what the 'page' variant adds (pagination envelope? controller raw shape?).

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?

There is no when-to-use guidance, no prerequisites, and no mention of the competing sibling tools that also list site-to-site VPNs. The only implied usage is 'call this to see tunnels', which an agent could infer from the name alone.

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

unifi_gen_getswitchstackunifi_gen_getswitchstackC
Read-onlyIdempotent

Get Switch Stack - generated from developer.ui.com/network/v11.0.97/getswitchstack

NameRequiredDescriptionDefault
switchStackIdYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered elsewhere. The description adds nothing behavioral beyond citing the upstream API doc version, not even what a switch stack response contains or how unknown IDs behave.

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

Conciseness3/5

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

It is short and front-loaded with no filler, but the second half is only a documentation URL, and the whole thing is under-specified rather than efficiently concise.

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

Completeness2/5

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

For a simple single-parameter lookup with no output schema, the description should at least say what is returned and how to obtain the ID. Neither is present, leaving the agent to infer the entire contract.

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

Parameters2/5

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

Schema description coverage is 0% for the single required switchStackId parameter (uuid format, no description). The description does not explain where that ID comes from (e.g., list_switch_stacks) or what it identifies, so it fails to compensate for the schema gap.

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

Purpose3/5

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

The description states a verb ("Get") and a resource ("Switch Stack"), which is enough to know it retrieves a single switch stack. However, it does not distinguish itself from the near-identical sibling unifi_net_get_switch_stack (or from unifi_gen_getswitchstackpage), so an agent has no way to choose between them from the text alone.

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?

There is no guidance on when to use this tool, when to prefer the net_* or page variant, or what prerequisites (site context, stack existence) apply. Usage is only inferable from the name, and the trailing doc URL is not usage guidance.

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

unifi_gen_getswitchstackpageunifi_gen_getswitchstackpageC
Read-onlyIdempotent

List Switch Stacks - generated from developer.ui.com/network/v11.0.97/getswitchstackpage

NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo

TDQS

C2.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, and the description adds nothing on top — no pagination behavior, no filtering semantics, no result-ordering or total-count information for a 'page' endpoint.

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

Conciseness3/5

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

It is short and front-loaded, which is good, but the length comes at the cost of omitting everything useful; the appended developer.ui.com URL is dead weight that contributes nothing to invocation.

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

Completeness2/5

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

For a paginated list endpoint with three undocumented parameters and no output schema, the description should at minimum explain paging and filter conventions. As written, an agent could not construct a correct filtered or paged request from the definition alone.

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

Parameters1/5

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

Schema description coverage is 0% across three parameters (limit, filter, offset), and the description does not compensate at all. It never states the filter syntax, the default or maximum page size behavior, or how offset interacts with limit.

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

Purpose3/5

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

"List Switch Stacks" gives a verb and a resource, so the basic action is legible. However, nothing distinguishes it from the near-identical siblings unifi_net_list_switch_stacks and unifi_gen_getswitchstack, and the trailing documentation URL is provenance noise rather than a purpose statement.

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?

There is no when-to-use guidance, no exclusions, and no mention of the sibling tools that appear to do the same thing. The agent has to guess whether this page endpoint or unifi_net_list_switch_stacks is the right call.

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

unifi_gen_gettrafficmatchinglistunifi_gen_gettrafficmatchinglistC
Read-onlyIdempotent

Get Traffic Matching List - generated from developer.ui.com/network/v11.0.97/gettrafficmatchinglist

NameRequiredDescriptionDefault
trafficMatchingListIdYes

TDQS

C2.1/5.0
Behavior2/5

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

Annotations already declare readOnly=true, idempotent=true, destructive=false, so the safety profile is covered. The description adds nothing beyond that: no statement of what a 404 / unknown ID returns, no note that the ID is a UUID that must come from the list endpoint, no mention of response shape.

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

Conciseness3/5

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

A single terse line, front-loaded with the verb and resource, so there is no padding. However, brevity here reflects under-specification rather than editorial economy, and the 'generated from ...' URL adds provenance but no decision-relevant information.

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

Completeness2/5

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

For a read-by-ID tool with annotations and no output schema, the agent still needs to know what entity is returned, that the UUID must be sourced elsewhere, and how this differs from the list sibling. None of that is present, leaving the definition materially incomplete.

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

Parameters2/5

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

Schema description coverage is 0% for the single required parameter trafficMatchingListId. The schema supplies the uuid format and regex, but the description gives no hint that this ID is a traffic-matching-list identifier obtained from the list endpoint, so it fails to compensate for the coverage gap.

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

Purpose2/5

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

The description restates the tool name ('Get Traffic Matching List') and appends a documentation URL; it never says it retrieves a single traffic-matching list identified by UUID, nor distinguishes it from the sibling unifi_gen_gettrafficmatchinglists list endpoint. This is essentially tautology plus provenance.

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 when-to-use, when-not-to-use, or alternative is named. An agent cannot tell from the text whether to call this versus unifi_gen_gettrafficmatchinglists or unifi_net_get_traffic_list; it must infer everything from the function name alone.

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

unifi_gen_gettrafficmatchinglistsunifi_gen_gettrafficmatchinglistsC
Read-onlyIdempotent

List Traffic Matching Lists - generated from developer.ui.com/network/v11.0.97/gettrafficmatchinglists

NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds nothing beyond that — it does not mention pagination behavior, default result count, or what a 'traffic matching list' contains.

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

Conciseness3/5

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

A single short line, front-loaded with the operation, which is good. But the trailing 'generated from developer.ui.com/...' provenance adds no actionable value for an invoking agent, and the brevity reflects under-specification rather than economy.

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

Completeness2/5

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

For a paginated list endpoint with no output schema and three undocumented parameters, the description should explain pagination and filtering. It supplies none of that, so an agent cannot confidently page or filter results.

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

Parameters2/5

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

Schema description coverage is 0% for three parameters (limit, filter, offset), so the description carries the full burden and fails to compensate. It never explains filter syntax, maximum page size, or offset semantics, leaving the agent to guess at how to page or filter.

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?

States a specific verb ('List') and resource ('Traffic Matching Lists'), so the agent knows the operation type. However, it does not distinguish itself from the sibling unifi_gen_gettrafficmatchinglist (singular) or explain how these lists differ from unifi_net_list_traffic_lists, leaving ambiguity about which list tool to pick.

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 versus the singular gettrafficmatchinglist sibling or the net_* traffic list tools. There are no prerequisites, exclusions, or selection criteria stated — only a documentation URL.

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

unifi_gen_getvoucherunifi_gen_getvoucherC
Read-onlyIdempotent

Get Voucher Details - generated from developer.ui.com/network/v11.0.97/getvoucher

NameRequiredDescriptionDefault
voucherIdYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is fully covered by structured data. The description adds nothing beyond a doc URL – no note on what a voucher is, whether lookup fails for expired vouchers, or any auth/site scoping context.

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

Conciseness3/5

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

Front-loaded and brief, so nothing is bloated. However, the second half is a provenance URL ("generated from developer.ui.com/...") that conveys no actionable meaning to an agent, consuming half the description.

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

Completeness2/5

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

For a single-resource read with no output schema, the description should at least indicate what details are returned or the retrieval semantics. Instead it provides only a name echo and a source URL, so an agent knows essentially nothing beyond the annotations.

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

Parameters2/5

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

Schema description coverage is 0%: voucherId carries only a UUID format and regex, with no explanation of what identifies the voucher or where it comes from. The description does not compensate for that gap at all.

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

Purpose3/5

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

"Get Voucher Details" gives a clear verb and resource, but the description stops there and never distinguishes this from near-identical siblings such as unifi_net_get_voucher or unifi_gen_getvouchers. An agent reading only the description cannot tell which of the voucher-lookup tools to pick.

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?

There is no when-to-use, when-not-to-use, or alternative-tool guidance at all. With several voucher retrieval siblings present, the absence of routing information is a real gap, leaving only the name to imply usage.

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

unifi_gen_getvouchersunifi_gen_getvouchersC
Read-onlyIdempotent

List Vouchers - generated from developer.ui.com/network/v11.0.97/getvouchers

NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already state readOnlyHint, idempotentHint and non-destructive, so the safety profile is covered. The description adds nothing beyond a source-doc URL: it does not mention pagination via limit/offset, how filter expressions are interpreted, or result ordering, which are the real behavioral unknowns for a list endpoint.

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

Conciseness3/5

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

The definition is short and front-loaded with the verb+resource, which is good. The trailing 'generated from developer.ui.com/...' clause consumes space without telling the agent anything actionable.

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

Completeness2/5

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

With no output schema, no parameter documentation and no behavioral notes, an agent cannot tell what a voucher record looks like, whether results are paged, or how to narrow them. The one-line description is not sufficient for a filtered list tool.

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

Parameters2/5

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

Schema description coverage is 0% for three parameters (limit, filter, offset), and the description supplies no semantics at all. The names hint at conventional paging and filtering, but format, filter syntax, and defaults are left entirely undocumented.

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?

States a specific verb and resource ('List Vouchers'), so the agent knows exactly what is returned. However, it does not distinguish this from close siblings such as unifi_net_list_vouchers or unifi_gen_getvoucher, which likely do the same thing through a different API surface.

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?

There is no guidance on when to use this versus unifi_net_list_vouchers or unifi_gen_getvoucher, and no prerequisites or scope conditions are given. The agent must guess which voucher-listing variant to call.

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

unifi_gen_getvpnserverpageunifi_gen_getvpnserverpageC
Read-onlyIdempotent

List VPN Servers - generated from developer.ui.com/network/v11.0.97/getvpnserverpage

NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so the safety profile is covered. The description adds nothing beyond that: it doesn't explain pagination behavior despite limit/offset params, nor result ordering or filtering scope. 'Generated from <url>' is provenance metadata, not behavioral disclosure.

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

Conciseness3/5

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

A single short sentence with no padding, but it is under-specified rather than efficient, and the trailing spec URL consumes space without adding actionable meaning.

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?

No output schema exists, so the description should convey something about the returned collection and pagination, which it does not. For a simple read-only list endpoint the annotations plus schema names are nearly sufficient, but the filter and paging semantics remain undocumented.

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

Parameters2/5

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

Schema description coverage is 0% on all three parameters, so the description carries the full burden and fails to compensate. It says nothing about the filter syntax, default/max page size, or how offset interacts with limit, all of which an agent would need to paginate correctly.

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?

States a specific verb and resource ('List VPN Servers'), which is clear enough to act on. However, a near-identical sibling exists (unifi_net_list_vpn_servers), and the description makes no attempt to distinguish the two, leaving an agent to guess which is canonical.

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 versus the sibling vpn-server listing tools or the site-to-site VPN tool. There are no exclusions, prerequisites, or context cues at all.

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

unifi_gen_getwansoverviewpageunifi_gen_getwansoverviewpageC
Read-onlyIdempotent

List WAN Interfaces - generated from developer.ui.com/network/v11.0.97/getwansoverviewpage

NameRequiredDescriptionDefault
limitNo
offsetNo

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), so the bar is lower, but the description adds nothing beyond them. It does not mention pagination behavior, page-size limits, what a 'page' contains, or any ordering of results.

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?

A single short, front-loaded sentence with no filler. The trailing generated-from URL is of marginal use to an agent but takes little space and is not harmful.

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

Completeness2/5

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

A paginated list tool with no output schema, 0% parameter documentation, and no explanation of result shape or pagination semantics is under-described. The agent could call it, but cannot predict how to page through results or what the response contains.

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

Parameters2/5

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

Schema description coverage is 0%, so both limit and offset are bare integers in the schema with no description anywhere. The description does not compensate: it never mentions pagination, the maximum page size of 200, or what offset indexes into.

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?

"List WAN Interfaces" gives a specific verb and resource, so the agent knows exactly what is returned at a high level. It does not distinguish this from the near-identical sibling unifi_net_list_wans, leaving the agent to guess which of the two to pick.

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?

There is no statement of when to use this tool, when not to, or which alternative to prefer. The presence of both this tool and unifi_net_list_wans makes the missing routing guidance a real cost, not a minor omission.

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

unifi_gen_getwifibroadcastdetailsunifi_gen_getwifibroadcastdetailsC
Read-onlyIdempotent

Get Wifi Broadcast Details - generated from developer.ui.com/network/v11.0.97/getwifibroadcastdetails

NameRequiredDescriptionDefault
wifiBroadcastIdYes

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered externally. The description adds nothing beyond a documentation URL — no mention of what the response contains, whether the ID must belong to a specific site, or what happens for an unknown ID.

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?

Extremely short and front-loaded with the operation, so there is no wasted prose. The only content beyond the title is a provenance URL, which is mildly useful but not operational context.

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

Completeness2/5

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

For a single-resource read with one required UUID and no output schema, the description should at least say what 'details' means (e.g., SSID, security, enabled state) or how to source the ID. Neither is present, leaving the agent to guess at the return shape and ID provenance.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the full burden for wifiBroadcastId, but it says nothing about what the ID identifies or where to get it (presumably from getwifibroadcastpage). The schema's UUID format/pattern is the only signal, which technically describes shape but not meaning.

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 names a specific verb (Get) and resource (Wifi Broadcast Details), and the singular 'Details' plus the required wifiBroadcastId implies a single-record fetch, which distinguishes it from the sibling unifi_gen_getwifibroadcastpage listing tool. However, it never states that contrast explicitly, so an agent must infer it from the sibling names.

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?

There is no guidance on when to use this versus unifi_gen_getwifibroadcastpage (list/page), unifi_gen_updatewifibroadcast, or unifi_net_get_wifi. No prerequisites, no exclusions, no context about how to obtain the required ID.

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

unifi_gen_getwifibroadcastpageunifi_gen_getwifibroadcastpageC
Read-onlyIdempotent

List Wifi Broadcasts - generated from developer.ui.com/network/v11.0.97/getwifibroadcastpage

NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered without the description. The description contributes nothing beyond the name: it does not mention pagination behavior implied by "page", default or maximum page sizes, or what the filter string matches.

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

Conciseness3/5

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

The sentence is short and front-loaded, but the second half is a generated provenance URL that conveys no decision-relevant meaning. It is concise but not well-spent.

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

Completeness2/5

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

For a paginated list tool with no output schema and no parameter documentation, the description leaves key questions open: what a wifi broadcast record contains, how paging results are returned, and whether filter narrows by name or ID. Only the annotations carry any real information.

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

Parameters2/5

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

Schema description coverage is 0% and there are three parameters (limit, filter, offset), none of which the description explains. While limit/offset are conventional pagination names, the "filter" string syntax and which fields it applies to are undocumented in both schema and description.

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?

States a specific verb and resource ("List Wifi Broadcasts"), so an agent knows this is a read/list operation over that collection. It does not differentiate from sibling tools like unifi_gen_getwifibroadcastdetails or unifi_net_list_wifi, and the trailing URL provenance adds no distinguishing information.

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?

There is no when-to-use guidance, no mention of alternatives such as getwifibroadcastdetails for a single record, and no prerequisites noted. The agent must infer the choice from the tool name alone.

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

unifi_gen_listdevicesunifi_gen_listdevicesC
Read-onlyIdempotent

List Devices - generated from developer.ui.com/site-manager/v1.0.0/listdevices

NameRequiredDescriptionDefault
timeNoLast processed timestamp of devices in RFC3339 format
pageSizeNoNumber of items to return per page
hostIds[]NoList of host IDs to filter the results
nextTokenNoToken for pagination to retrieve the next set of results

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and open-world behavior, so the safety profile is covered. The description contributes only a source URL and says nothing about result scope (site vs host), pagination behavior, or what a caller should expect back.

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

Conciseness3/5

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

The description is short and front-loaded, so it does not waste words, but it is under-specified rather than genuinely concise. Brevity here reflects minimal content rather than disciplined editing.

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

Completeness2/5

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

For a device-listing tool with four optional parameters and no output schema, the description does not clarify the namespace (site-manager vs network application) or the pagination model. In a toolset with multiple near-identical list-device siblings, this leaves a critical routing gap.

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 four parameters (time, pageSize, hostIds[], nextToken) are fully documented in the schema at 100% coverage, including the RFC3339 format and pagination token. The description adds no additional parameter semantics, so the baseline of 3 applies when the schema does all the work.

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

Purpose3/5

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

The description gives a clear verb-resource pair ("List Devices"), but it is essentially a restatement of the tool name, and 'generated from ...listdevices' only signals provenance. With three sibling list-device tools in scope (unifi_net_list_devices, unifi_sm_list_devices, unifi_gen_listdevices), it provides no 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?

There is no when-to-use guidance, no mention of prerequisites, and no indication of how this differs from other device-listing or host-scoped siblings. The agent is left to infer everything from the name.

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

unifi_gen_listhostsunifi_gen_listhostsC
Read-onlyIdempotent

List Hosts - generated from developer.ui.com/site-manager/v1.0.0/listhosts

NameRequiredDescriptionDefault
pageSizeNoNumber of items to return per page
nextTokenNoToken for pagination to retrieve the next set of results

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered. The description adds nothing beyond restating the name and a source URL – no note on default page size, pagination termination, or what a "host" represents in the site-manager model.

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?

A single short sentence with the verb and resource front-loaded, so there is no bloat. The trailing "generated from developer.ui.com/..." clause is provenance metadata of marginal use to a calling agent, keeping it just short of a 5.

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

Completeness2/5

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

The tool is simple and annotations are rich, but the description leaves open what a host is, what the response contains, and how it differs from unifi_sm_list_hosts. For a list tool in a catalog with heavily duplicated host/site/device listing tools, that disambiguation is the minimum needed.

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 pageSize and nextToken self-documented as pagination controls, so the baseline of 3 applies. The description contributes no additional meaning about default values or how nextToken chains across calls.

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

Purpose3/5

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

States a specific verb and resource ("List Hosts") and adds API provenance, which is better than a bare tautology. However, it does not distinguish this tool from the near-identical sibling unifi_sm_list_hosts, nor does it relate to unifi_gen_gethostbyid, leaving the agent unable to tell which host-listing tool to pick.

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?

There is no guidance on when to use this versus unifi_sm_list_hosts or the many unifi_net_* list tools. The only extra signal is the upstream endpoint path, which tells a developer where it came from but not when an agent should call it.

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

unifi_gen_listsdwanconfigsunifi_gen_listsdwanconfigsB
Read-onlyIdempotent

List SD-WAN Configs - generated from developer.ui.com/site-manager/v1.0.0/listsdwanconfigs

NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered without the text. The description adds only the upstream provenance (developer.ui.com site-manager v1 listsdwanconfigs endpoint), which is mild but genuine extra context; nothing about result volume, pagination or filtering is disclosed.

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?

A single front-loaded clause names the action and resource before any noise. The trailing source-endpoint string is machine-generated provenance — mildly useful but not agent-actionable, which keeps it out of 5 territory.

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?

For a no-argument read-only list tool with annotations covering safety and no output schema, the description is minimally sufficient to invoke it. However, it never says what an SD-WAN config contains, whether the list is site-scoped, or whether results are paginated, leaving real ambiguity that the annotations cannot fill.

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

Parameters4/5

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

The tool takes zero parameters, so per the baseline this is a 4. The description introduces no parameters that could be misread or left ambiguous.

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 states a specific verb+resource ("List SD-WAN Configs"), so an agent immediately knows this is a read operation over SD-WAN configuration objects. It does not differentiate from near-identical siblings such as unifi_sm_list_sdwan_configs or unifi_gen_getsdwanconfigbyid, which prevents a 5.

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?

There is no when-to-use or when-not-to-use guidance and no alternative tool is named. An agent must infer the scope purely from the tool name, with no help on choosing between this and the other SD-WAN list/get tools.

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

unifi_gen_listsitesunifi_gen_listsitesC
Read-onlyIdempotent

List Sites - generated from developer.ui.com/site-manager/v1.0.0/listsites

NameRequiredDescriptionDefault
pageSizeNoNumber of items to return per page
nextTokenNoToken for pagination to retrieve the next set of results
includeStatisticsNotrue: keep the `statistics` object of each site (device and client counts, WAN issue lists; can be very large). Default: omitted.

TDQS

C2.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds nothing about scope (all sites vs. a site group), pagination behavior, or the cost of includeStatistics, which is the main behavioral risk here.

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

Conciseness3/5

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

It is short and front-loaded, but the second clause is API provenance that does not help an agent decide or invoke. Not wasteful in length, but low information density.

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

Completeness2/5

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

For a list tool with no output schema, the description should say what a site record contains and how pagination terminates. Instead it provides only provenance, leaving the agent to infer the response shape and default page size.

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 pageSize, nextToken and includeStatistics all documented inline, so the baseline is 3. The description adds no meaning beyond the schema, but nothing is required of it given full coverage.

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

Purpose2/5

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

"List Sites" restates the tool name and title rather than describing it, and the only added content is provenance (developer.ui.com/site-manager/v1.0.0). It gives no basis for choosing it over the many siblings that also list sites (unifi_net_list_sites, unifi_sm_list_sites) or 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 Guidelines2/5

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

There is no when-to-use guidance, no exclusions, and no mention of alternatives despite several overlapping siblings. An agent must infer applicability entirely from the name.

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

unifi_gen_patchfirewallpolicyunifi_gen_patchfirewallpolicyC
DestructiveIdempotent

Patch Firewall Policy - generated from developer.ui.com/network/v11.0.97/patchfirewallpolicy

NameRequiredDescriptionDefault
bodyNoJSON request body, sent as is. Top-level vendor fields only; full schema: vendor docs page in the description. The API requires a body.
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.
firewallPolicyIdYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond a docs link: it does not say what the patch semantics are, what happens to unmentioned fields, or that the operation is destructive to existing policy configuration. It is consistent with the annotations, just not additive.

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

Conciseness3/5

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

The single line is front-loaded with verb and resource and contains no filler sentences. The vendor-URL suffix is mildly useful provenance but does not compensate for how little operational content is packed in.

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

Completeness2/5

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

For a destructive, open-world mutation with four parameters and no output schema, the description should explain patch semantics and the confirm/dry_run workflow. Instead it is one boilerplate line plus a URL, leaving an agent to infer everything from the schema.

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

Parameters2/5

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

Schema description coverage is 75%, just under the baseline where the schema alone is considered sufficient, and the description contributes zero parameter information. The required firewallPolicyId carries only a format/pattern and no prose meaning, and the preview-vs-apply semantics of confirm/dry_run live entirely in the schema rather than the description.

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

Purpose3/5

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

States a specific verb (Patch) and resource (Firewall Policy), so the basic operation is identifiable. However, it does not distinguish this from the near-identical siblings unifi_net_patch_firewall_policy and unifi_gen_updatefirewallpolicy, and 'Patch' is never explained (partial update of which fields?). The purpose is recognizable but under-differentiated.

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?

There is no guidance on when to use this versus unifi_gen_updatefirewallpolicy (full update) or the unifi_net_* variant of the same operation. The only added context is a vendor documentation URL, which is a reference, not a usage rule.

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

unifi_gen_queryispmetricsunifi_gen_queryispmetricsC
Read-onlyIdempotent

Query ISP Metrics - generated from developer.ui.com/site-manager/v1.0.0/queryispmetrics

NameRequiredDescriptionDefault
bodyNoJSON request body, sent as is. Top-level vendor fields only; full schema: vendor docs page in the description.
typeYesSpecifies whether metrics are returned using `5m` or `1h` intervals
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so safety is covered. The description adds no behavioral context such as authentication needs, response shape, rate limits, or why confirm/dry_run exist alongside a read-only query.

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

Conciseness3/5

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

The description is brief and technically front-loaded, but it is under-specified rather than efficiently concise. The provenance sentence adds little operational value compared with a sentence describing interval or site filtering.

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

Completeness2/5

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

With four parameters, a required type interval, confirm/dry-run preview behavior, a vendor body, and no output schema, the definition is too thin. An agent cannot tell what metrics are returned, how sites are scoped, or how preview mode works from this description alone.

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 documents all four parameters, including type, confirm, dry_run, and body. The description adds no additional parameter meaning beyond the schema, making the baseline 3 appropriate.

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

Purpose3/5

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

The description says "Query ISP Metrics," which gives a clear verb and resource, but it does not distinguish this tool from closely named siblings such as unifi_sm_query_isp_metrics, unifi_gen_getispmetrics, or unifi_sm_get_isp_metrics.

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?

There is no guidance on when to use this tool, what data it returns, or why an agent would choose it over the multiple sibling ISP metrics tools. Usage must be inferred entirely from the name.

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

unifi_gen_removedeviceunifi_gen_removedeviceB
DestructiveIdempotent

Remove (Unadopt) Device - generated from developer.ui.com/network/v11.0.97/removedevice

NameRequiredDescriptionDefault
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.
deviceIdYes

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is known. The description adds the 'Unadopt' framing, which tells the agent the device is returned to the unadopted pool rather than deleted, but it omits the confirm/preview gate, irreversibility, and permission requirements.

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?

A single compact sentence with the operation front-loaded and no filler. The trailing URL provenance adds little for an agent but costs almost nothing.

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

Completeness2/5

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

This is a destructive, open-world mutation with no output schema, and the description says nothing about consequences, the confirm='YES' requirement, or the preview behavior. An agent must read the schema to learn that omitting confirm yields a preview rather than performing the removal.

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 67%: confirm and dry_run are well documented in the schema, while deviceId is documented only through its uuid format. The description contributes nothing about any parameter, so baseline 3 is appropriate for a tool where the schema does most of the work.

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?

States a specific verb and resource ('Remove (Unadopt) Device') and the parenthetical clarifies the UniFi-specific semantics of what removal means. It does not, however, distinguish this from the sibling unifi_net_remove_device, which appears to perform the same operation in a different namespace.

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?

There is no guidance on when to use this tool versus unifi_net_remove_device, unifi_gen_adoptdevice, or unifi_net_device_action. The only hint of a workflow (preview vs. apply) lives in the schema, not the description.

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

unifi_gen_updateaclruleunifi_gen_updateaclruleC
DestructiveIdempotent

Update ACL Rule - generated from developer.ui.com/network/v11.0.97/updateaclrule

NameRequiredDescriptionDefault
bodyNoJSON request body, sent as is. Top-level vendor fields only; full schema: vendor docs page in the description. The API requires a body.
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.
aclRuleIdYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=true, and openWorldHint=true. The description adds no behavioral context beyond those annotations, such as what happens on preview, whether confirm is required, or how destructive changes are applied.

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

Conciseness2/5

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

The description is a single terse sentence that mostly restates the title and appends a documentation URL. It is short but under-specified rather than efficiently concise, and the provenance clause does little to help invocation.

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

Completeness2/5

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

For a destructive mutation tool with a complex nested body and no output schema, the description is too thin. It leaves the agent to infer preview/confirm behavior and body requirements from the schema alone.

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 75%, so the schema already explains confirm, dry_run, and body at a high level. The description contributes no additional meaning about aclRuleId or the body structure, relying instead on the vendor URL, so baseline 3 is appropriate.

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

Purpose3/5

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

The description states a specific verb and resource, 'Update ACL Rule,' but does not distinguish the tool from sibling unifi_net_update_acl_rule or clarify its scope beyond the name. The added provenance URL is not a purpose statement.

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?

There is no guidance on when to use this generated tool versus unifi_net_update_acl_rule, no prerequisites, and no exclusions. The agent must infer usage entirely from the name and schema.

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

unifi_gen_updateaclruleorderingunifi_gen_updateaclruleorderingC
DestructiveIdempotent

Reorder User-Defined ACL Rules - generated from developer.ui.com/network/v11.0.97/updateaclruleordering

NameRequiredDescriptionDefault
bodyNoJSON request body, sent as is. Top-level vendor fields only; full schema: vendor docs page in the description. The API requires a body.
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds no behavioral context beyond the name, such as whether ordering changes take effect immediately, permission requirements, or how the confirm/dry_run preview flow works.

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 appropriately short and front-loads the action and resource. The vendor documentation URL is marginally useful as provenance but does not add operational guidance.

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?

For a destructive mutation tool with no output schema, the annotations and schema carry most of the needed detail. However, the description omits important selection context against the duplicate unifi_net reorder tool and says nothing about the confirm/dry_run workflow.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema documents the body, confirm, and dry_run parameters. The description adds no parameter meaning beyond what the schema already provides, so the baseline of 3 applies.

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 states a specific verb and resource: 'Reorder User-Defined ACL Rules.' This is clear enough to understand the operation, but it does not distinguish this tool from the sibling unifi_net_reorder_acl_rules or clarify the generated/raw API scope.

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?

There is no guidance on when to use this tool versus unifi_net_reorder_acl_rules, unifi_net_get_acl_rule_ordering, or the other ACL tools. The intended usage is only implied by the tool name.

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

unifi_gen_updatednspolicyunifi_gen_updatednspolicyC
DestructiveIdempotent

Update DNS Policy - generated from developer.ui.com/network/v11.0.97/updatednspolicy

NameRequiredDescriptionDefault
bodyNoJSON request body, sent as is. Top-level vendor fields only; full schema: vendor docs page in the description. The API requires a body.
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.
dnsPolicyIdYes

TDQS

C2.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds nothing on top — it does not disclose that a preview/dry-run is available or that 'confirm=YES' is required to actually apply changes, both of which are important context for a destructive mutation. There is no contradiction, but zero added behavioral value.

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

Conciseness3/5

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

Two short sentences with no wasted words and the purpose front-loaded. However, brevity here reflects under-specification rather than disciplined conciseness — there is very little content to be concise about, and the second sentence only cites a source URL.

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

Completeness2/5

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

For a destructive, open-world mutation with no output schema and a confirm/preview gate, the description should explain the apply-vs-preview workflow and irreversibility. It instead gives one restated sentence, leaving the agent to infer the entire confirmation protocol from the schema alone.

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 75%, so the schema already carries most of the parameter meaning (confirm, dry_run, body fields). The description adds nothing about any parameter, and the only hint is a bare reference to the vendor docs page. Baseline 3 is appropriate given the schema does the heavy lifting.

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

Purpose2/5

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

The description 'Update DNS Policy' is essentially the tool name (unifi_gen_updatednspolicy) de-slugified, plus a source URL. It states a verb and resource but adds no information beyond the title and gives no differentiation from the sibling unifi_net_update_dns_policy, which appears to do the same thing. This is tautological rather than clarifying.

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?

There is no when-to-use guidance, no preconditions, and no mention of the critical preview/confirm workflow that the schema implies. It also does not help the agent choose this tool over the nearly identical unifi_net_update_dns_policy sibling. The description provides no routing signal at all.

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

unifi_gen_updatefirewallpolicyunifi_gen_updatefirewallpolicyC
DestructiveIdempotent

Update Firewall Policy - generated from developer.ui.com/network/v11.0.97/updatefirewallpolicy

NameRequiredDescriptionDefault
bodyNoJSON request body, sent as is. Top-level vendor fields only; full schema: vendor docs page in the description. The API requires a body.
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.
firewallPolicyIdYes

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, openWorldHint=true and readOnlyHint=false, so the risk profile is conveyed structurally. The description adds nothing beyond that — no note that this is a full replacement of the policy body, no confirmation flow explanation, no permission requirements. It neither contradicts nor enriches 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.

Conciseness3/5

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

It is a single short sentence with the operation front-loaded, so it is not padded. However the brevity comes from omission rather than efficiency — the second half is a raw docs URL rather than information an agent can act on.

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

Completeness2/5

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

This is a destructive update against a complex nested body object with required fields (action, source, destination, ipProtocolScope) whose sub-schemas have no property descriptions, and there is no output schema. The description does not explain replacement semantics, the preview/confirm gate, or what the response contains — a serious gap for an unannotated-body mutation.

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 75%, with the schema itself documenting body, confirm ("YES" to apply, otherwise preview) and dry_run. The description contributes no parameter meaning and does not explain that firewallPolicyId identifies the target policy or that body must be the complete vendor payload. Baseline 3 is appropriate given the schema carries most of the weight.

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

Purpose3/5

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

The description states a specific verb and resource ("Update Firewall Policy") plus a docs URL, so an agent knows this modifies an existing firewall policy. But it does not differentiate from near-identical siblings such as unifi_gen_patchfirewallpolicy or unifi_net_update_firewall_policy, which is where the real ambiguity lies. Effectively it restates the tool name with a provenance link.

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?

There is no when-to-use, when-not-to-use, or alternative guidance at all. The sibling list contains both a patch variant and a differently-named update variant, and the description gives the agent nothing to choose among them. Only the name implies the operation.

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

unifi_gen_updatefirewallpolicyorderingunifi_gen_updatefirewallpolicyorderingC
DestructiveIdempotent

Reorder User-Defined Firewall Policies - generated from developer.ui.com/network/v11.0.97/updatefirewallpolicyordering

NameRequiredDescriptionDefault
bodyNoJSON request body, sent as is. Top-level vendor fields only; full schema: vendor docs page in the description. The API requires a body.
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.
sourceFirewallZoneIdYes
destinationFirewallZoneIdYes

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds nothing: it doesn't explain whether the supplied list must be a complete ordering, what happens to policies omitted from it, or how source/destination zone scoping affects the reorder — the exact behavioral facts an agent needs for a destructive operation.

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

Conciseness4/5

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

The core statement is front-loaded in a single readable phrase. The appended 'generated from developer.ui.com/...' provenance string earns little place in the description, as it duplicates metadata rather than telling the agent anything about behavior.

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

Completeness2/5

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

This is a destructive, open-world mutation with five parameters, no output schema, and a body whose key field has an undocumented nested structure. Given that complexity, a one-line title restatement is far from complete — an agent cannot construct a valid call from this description alone.

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

Parameters2/5

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

Schema coverage is only 60%, and the two required parameters (sourceFirewallZoneId, destinationFirewallZoneId) have no description in either the schema or the description text. The body's 'orderedFirewallPolicyIds' is typed as an empty object with no documented shape, and the description does not compensate for any of this.

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?

States a specific verb ('Reorder') and resource ('User-Defined Firewall Policies'), which is more than the title alone conveys. However, it doesn't distinguish this tool from the near-duplicate sibling unifi_net_reorder_firewall_policies or from unifi_gen_getfirewallpolicyordering, leaving the agent to guess which one is the current/generated variant.

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 indication of when to use this versus unifi_net_reorder_firewall_policies, nor any prerequisite such as first fetching the current order via getfirewallpolicyordering. The confirm/dry_run preview mechanism exists only in the schema, not the description.

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

unifi_gen_updatefirewallzoneunifi_gen_updatefirewallzoneC
DestructiveIdempotent

Update Firewall Zone - generated from developer.ui.com/network/v11.0.97/updatefirewallzone

NameRequiredDescriptionDefault
bodyNoJSON request body, sent as is. Top-level vendor fields only; full schema: vendor docs page in the description. The API requires a body.
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.
firewallZoneIdYes

TDQS

C2.1/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so the description need not re-establish the safety profile — but it adds nothing about what a destructive update actually replaces (e.g., whether networkIds is overwritten wholesale), nor about permission or preview behavior. Only a raw source URL is supplied. No contradiction with annotations, but no added value either.

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

Conciseness3/5

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

The text is short and front-loaded with the verb and resource, so nothing is bloated. However, the second half is a bare documentation URL, which is filler relative to the missing operational content, and the overall size is under-specified rather than efficient.

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

Completeness2/5

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

For a destructive, open-world mutation with a loosely typed anyOf body and no output schema, the description should explain what changes, whether the body replaces or merges existing zone fields, and how the preview/confirm path works. None of that is present, and the duplicate-vendor sibling is not disambiguated.

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

Parameters2/5

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

Schema description coverage is 75%, just under the threshold where a baseline 3 is granted for the schema doing the work. The description supplies no parameter meaning at all — notably nothing about firewallZoneId (which lacks a schema description) or the confirm/dry_run preview contract — so it fails to compensate for the coverage gap.

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

Purpose2/5

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

"Update Firewall Zone" restates the tool name and title verbatim, adding only a vendor-docs URL. It does name a verb and a resource, but there is no scope, no statement of what aspects of the zone are updated, and no differentiation from the sibling unifi_net_update_firewall_zone / unifi_gen_createfirewallzone / unifi_gen_deletefirewallzone.

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 when-to-use, prerequisites, or alternatives are stated. In particular the description gives no help choosing between this tool and unifi_net_update_firewall_zone, which appears to target the same resource, nor when to use update vs. create/delete for zones.

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

unifi_gen_updatenetworkunifi_gen_updatenetworkD
DestructiveIdempotent

Update Network - generated from developer.ui.com/network/v11.0.97/updatenetwork

NameRequiredDescriptionDefault
bodyNoJSON request body, sent as is. Top-level vendor fields only; full schema: vendor docs page in the description. The API requires a body.
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.
networkIdYes

TDQS

D1.7/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, readOnlyHint=false and openWorldHint=true, so the safety profile is covered structurally. The description adds nothing beyond a documentation URL: it does not say whether the update is a full replace or a partial patch, what happens to omitted fields, or that this is irreversible against a live controller.

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

Conciseness2/5

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

It is short, but shortness here reflects under-specification rather than concision. The single generated-from string plus URL is not front-loaded with anything an agent can act on, and no sentence earns a place beyond citing provenance.

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

Completeness1/5

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

For a destructive, open-world mutation with no output schema and 4 parameters, the description supplies nothing: no statement of effect, reversibility, permission requirements, or what the preview mode returns. The doc link is the only supplementary anchor and is not usable guidance on its own.

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

Parameters2/5

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

Schema description coverage is 75%, which would ordinarily provide a baseline of 3, but the description itself contributes zero parameter meaning — the field-level guidance (confirm/dry_run preview semantics, "top-level vendor fields only") lives in the schema, not the description. The one genuinely ambiguous point, that body is a full vendor payload with required name/vlanId/enabled/management, is left entirely to the schema.

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

Purpose2/5

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

The description reads "Update Network - generated from developer.ui.com/network/v11.0.97/updatenetwork", which essentially restates the tool name and appends a source-doc path. It conveys that a network resource is updated but gives no scope, no distinction from the many sibling update tools (unifi_net_update_network, unifi_gen_updatewifibroadcast), and no indication of what 'update' means here.

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

Usage Guidelines1/5

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

There is no guidance about when to use this tool versus alternatives. Notably, sibling tools unifi_net_update_network and unifi_gen_updatenetwork appear to cover the same operation, and the description offers nothing to disambiguate them or to explain prerequisites such as needing an existing networkId.

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

unifi_gen_updatetrafficmatchinglistunifi_gen_updatetrafficmatchinglistC
DestructiveIdempotent

Update Traffic Matching List - generated from developer.ui.com/network/v11.0.97/updatetrafficmatchinglist

NameRequiredDescriptionDefault
bodyNoJSON request body, sent as is. Top-level vendor fields only; full schema: vendor docs page in the description. The API requires a body.
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.
trafficMatchingListIdYes

TDQS

C2.1/5.0
Behavior2/5

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

Annotations already declare destructive=true, idempotent=true, readOnly=false, openWorld=true, so the safety profile is covered. The description adds nothing beyond a docs link — notably it never says whether the update replaces or merges the list contents, a critical trait for a destructive operation.

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

Conciseness3/5

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

Extremely short and front-loaded, with zero wasted sentences, but that brevity reflects under-specification rather than discipline — the single sentence carries no actionable content.

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

Completeness2/5

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

For a destructive, open-world mutation with no output schema, the description gives an agent almost nothing: not the replace-vs-merge semantics, not the confirm/dry_run safety flow (only visible in schema), not return behavior. The provenance URL is the sole addition.

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

Parameters2/5

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

Schema coverage is 75% and the description says nothing about the four parameters. The undocumented trafficMatchingListId and the body's required name/type/items fields get no explanation beyond the schema itself, so the description fails to compensate for the coverage gap.

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

Purpose2/5

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

The description 'Update Traffic Matching List' merely restates the tool name in prose and appends a docs URL. It identifies a verb and resource but offers no detail on what a traffic matching list is or how this differs from the sibling unifi_gen_createtrafficmatchinglist / unifi_gen_gettrafficmatchinglist.

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 when-to-use, when-not-to-use, or alternative guidance at all. Nothing tells the agent when to pick this over patch-style or raw_request siblings, or what prerequisites (existing list ID) are needed.

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

unifi_gen_updatewifibroadcastunifi_gen_updatewifibroadcastC
DestructiveIdempotent

Update Wifi Broadcast - generated from developer.ui.com/network/v11.0.97/updatewifibroadcast

NameRequiredDescriptionDefault
bodyNoJSON request body, sent as is. Top-level vendor fields only; full schema: vendor docs page in the description. The API requires a body.
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.
wifiBroadcastIdYes

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so the description's bar is lower, but it adds nothing at all — no warning that this overwrites an existing broadcast's full configuration, no mention of the preview-then-confirm gate, and no permission context.

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

Conciseness3/5

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

A single sentence with zero filler, so nothing is wasted — but that brevity is under-specification rather than efficiency. The docs URL is the only added content and does not convey actionable information an agent can use mid-task.

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

Completeness2/5

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

This is a destructive mutation with a large, complex body schema (required fields, enum type, many nested vendor objects) and no output schema. The description should at minimum flag full-replacement semantics and the confirm/dry_run safety flow, and it says neither.

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 75%: body, confirm and dry_run carry substantive descriptions in the schema, so the baseline of 3 is appropriate. The description contributes nothing extra, and wifiBroadcastId remains undescribed in both places, so it does not compensate for the remaining gap.

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

Purpose3/5

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

The description names a clear verb and resource ("Update Wifi Broadcast"), distinguishing it from siblings like unifi_gen_createwifibroadcast and unifi_gen_deletewifibroadcast via the verb. However, the rest is a provenance URL, so the agent learns nothing about what a 'wifi broadcast' is or what scope of settings gets updated beyond the name itself.

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?

There is no guidance on when to use this versus unifi_gen_createwifibroadcast or unifi_gen_getwifibroadcastdetails, and no mention of prerequisites. The preview/confirm workflow exists only in the parameter descriptions in the schema, not in the tool description.

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

unifi_net_adopt_devicesAdopt pending devicesB
Destructive

Adopts pending devices by MAC. Sends one adoption request per MAC and reports the result per MAC.

NameRequiredDescriptionDefault
macsYesDevice MAC addresses to adopt
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the risk profile is covered structurally. The description usefully adds that adoption is fanned out as one request per MAC with per-MAC results, but it omits the safety gate (confirm=YES required to actually apply, otherwise preview) and any partial-failure behavior.

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 short sentences with zero filler; the core action and its per-MAC reporting behavior are 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?

For a destructive, non-idempotent mutation with a preview gate, the description plus annotations and the fully documented schema give an agent enough to invoke it correctly and understand the result shape (one outcome per MAC, no output schema needed). The only real gap is failure/partial-success semantics.

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 all three parameters (macs, confirm, dry_run) are documented in the schema itself. The description reinforces that MACs drive the operation and results are per MAC, but adds no format or constraint detail beyond the schema.

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?

Specific verb+resource: adopts pending devices identified by MAC, with the batch semantics (one request per MAC, per-MAC result) spelled out. It never references the neighboring list_pending_devices or other adoption tooling, so sibling differentiation is left implicit.

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?

There is no when-to-use / when-not-to-use guidance: nothing says this should be preceded by listing pending devices, nor that devices already adopted will fail. The confirm/dry_run preview workflow is only discoverable from the schema, not the description.

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

unifi_net_block_clientBlock clientA
DestructiveIdempotent

Not supported: the UniFi Network API defines no block action for clients, so this tool returns an error and sends nothing. Kept for compatibility.

NameRequiredDescriptionDefault
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.
clientIdYes

TDQS

A3.8/5.0
Behavior2/5

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

The description itself is maximally transparent about runtime behavior (no API call, error returned, retained only for compatibility), which is exactly the kind of disclosure an agent needs. However, it directly conflicts with the annotation profile (destructiveHint=true, readOnlyHint=false), which advertises a mutating operation that the description says never happens; the schema's 'confirm: YES to apply' also implies a real write. The description is the trustworthy party here, but the mismatch leaves the agent with contradictory signals.

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 short sentences with the disqualifying fact ('Not supported') front-loaded, followed by the reason and the compatibility rationale. Nothing is wasted and nothing essential is buried.

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 deprecated stub with no output schema, the description covers what an agent needs: it does nothing, it errors, and it exists only for compatibility. Naming the exact error or the preferred sibling tool for blocking would close the remaining gap.

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 67%: confirm and dry_run are documented in the schema, while clientId is undocumented in both places. The description adds no parameter-level detail, and it implicitly renders the confirm/dry_run semantics moot by declaring the tool a no-op — useful to know, but not a semantics contribution 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 states a specific and unambiguous outcome: the tool is unsupported, the UniFi Network API defines no block action, and calling it returns an error without sending anything. That is far more informative than a generic 'block a client' phrasing and lets an agent immediately distinguish it from functional siblings like unifi_net_unblock_client or unifi_net_client_action.

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?

'Not supported ... returns an error and sends nothing. Kept for compatibility.' clearly implies the agent should not call this tool and explains why it still exists. It stops just short of explicitly naming the alternative to use instead, which is the only missing piece.

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

unifi_net_client_actionExecute client actionA
Destructive

Action on a connected client. Vendor values: AUTHORIZE_GUEST_ACCESS, UNAUTHORIZE_GUEST_ACCESS (lowercase and dashes are mapped). The Network API has no block/unblock action.

NameRequiredDescriptionDefault
actionYese.g. "AUTHORIZE_GUEST_ACCESS", "UNAUTHORIZE_GUEST_ACCESS"
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.
clientIdYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is carried by structured data. The description adds one genuinely useful behavioral fact (the Network API exposes no block/unblock action, preventing a wrong call), but says nothing about the mutation's consequence, reversibility, or the confirm-gate/preview behavior.

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 compact sentences, front-loaded with the resource and action vocabulary, followed by the normalization hint and a negative constraint. No padding or repetition of schema content.

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?

For a destructive, non-idempotent mutation with no output schema, the description leaves the agent without return-value expectations or a statement of what the action actually changes on the client. The critical preview/confirm gating exists only in parameter descriptions, so a reader of the prose alone could issue a live change unintentionally.

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?

With 0 enums in the schema, listing AUTHORIZE_GUEST_ACCESS and UNAUTHORIZE_GUEST_ACCESS in prose is real added value, and the note that lowercase/dash forms are normalized tells the agent it need not over-normalize input. The confirm and dry_run parameters are not addressed in the description, but the schema documents them at 75% coverage, so the baseline is satisfied.

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?

States a specific verb+resource ('Action on a connected client') and enumerates the two supported vendor action values, which distinguishes it from the get/list client siblings. However, it does not name its closest sibling (unifi_gen_executeconnectedclientaction) or explain how the two differ, so differentiation is only partial.

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 the use case (guest-access authorization/deauthorization on a client) and usefully notes that block/unblock is not available through this API, implicitly routing the agent to unifi_net_block_client/unblock_client. There is no explicit when-to-use vs the sibling action tool and no mention of the confirm/dry_run workflow the schema requires.

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

unifi_net_create_acl_ruleCreate ACL ruleC
Destructive

Creates a new ACL rule on the current site. Body shape per ACL API docs.

NameRequiredDescriptionDefault
bodyNoACL rule create payload
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare destructive=true, idempotent=false, openWorld=true, so the safety profile is covered. The description adds only site scoping, and defers behavior to an unresolvable external pointer ("Body shape per ACL API docs"), without saying what a successful apply or preview returns.

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?

Two short sentences, front-loaded with the action and scope, with no filler. The brevity is appropriate, though the second sentence is close to wasted space given how vague it is.

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

Completeness2/5

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

For a destructive, non-idempotent mutation with no output schema, the definition should clarify the preview-versus-apply flow and what the body must contain. It instead points at external docs, leaving the agent under-informed about the consequences of a successful call.

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 body, confirm, and dry_run parameters are already documented, establishing the baseline of 3. The phrase "Body shape per ACL API docs" adds no concrete field guidance beyond the schema.

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?

"Creates a new ACL rule on the current site" gives a specific verb and resource with site scope. It does not differentiate from the near-duplicate sibling unifi_gen_createaclrule or from unifi_net_update_acl_rule, leaving the agent to infer which create variant to call.

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 statement of when to use this versus unifi_gen_createaclrule or the update/reorder siblings, and no mention that a confirm token is needed to actually apply the rule rather than preview it. Usage is only implied by the tool name.

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

unifi_net_create_dns_policyCreate DNS policyC
Destructive

Creates a new DNS policy on the current site. Body shape per Network API docs.

NameRequiredDescriptionDefault
bodyNoDNS policy create payload
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

C2.8/5.0
Behavior2/5

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

Annotations already declare destructiveHint, idempotentHint=false and openWorldHint, so safety is covered; the description adds only the 'current site' scope. It never mentions the confirm/dry_run preview pathway that the schema exposes, so the agent does not learn from prose that this can be safely rehearsed.

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

Conciseness3/5

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

Two short sentences with no filler, which is good. But the second sentence is a punt that consumes space without informing, leaving the definition thin rather than tight.

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

Completeness2/5

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

This is a destructive create with an unconstrained body object and no output schema, yet the description says nothing about what a valid policy payload must contain or what happens on success. Deferring to external 'Network API docs' leaves a critical gap for an agent that only sees this definition.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema itself documents confirm and dry_run well, so baseline 3 applies. However, the description's only parameter-related content is 'Body shape per Network API docs', which points away from the tool rather than clarifying the untyped body payload.

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?

States a specific verb and resource (creates a DNS policy) and scopes it to the current site. It does not distinguish itself from the near-duplicate sibling unifi_gen_creatednspolicy, so an agent cannot tell from the description which create path to pick.

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 rather than unifi_gen_creatednspolicy, nor any note that an existing policy should be updated instead (unifi_net_update_dns_policy). Usage is only implied by the verb.

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

unifi_net_create_firewall_policyCreate firewall policyC
Destructive

Creates a new firewall policy on the current site. Body shape per Firewall API docs.

NameRequiredDescriptionDefault
bodyNoFirewall policy create payload
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, openWorldHint=true and idempotentHint=false, so the safety profile is covered. The description adds only the site scoping, and its one behavioral hint — 'Body shape per Firewall API docs' — defers to out-of-band documentation rather than describing anything in-band, leaving permission requirements and failure behavior undisclosed.

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?

Two short sentences with the core action front-loaded; nothing is padded. The second sentence, however, is a low-value external reference that occupies real space without conveying usable information.

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

Completeness2/5

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

This is a destructive, non-idempotent create with no output schema, and the description says nothing about what a preview returns, what confirm=YES actually applies, permission prerequisites, or validation failures. Given the tool's risk profile, far more in-band behavioral context is warranted.

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 all three parameters are already documented in the schema, which sets the baseline at 3. The description contributes nothing beyond that aside from an unactionable pointer to external API docs for the body payload.

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?

States a specific verb and resource ('Creates a new firewall policy') and scopes it to 'the current site'. It does not distinguish this tool from the near-identical sibling unifi_gen_createfirewallpolicy, so an agent cannot tell which create path to pick without reasoning externally.

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 versus unifi_gen_createfirewallpolicy, unifi_net_update_firewall_policy, or unifi_net_patch_firewall_policy. The preview-vs-apply workflow (confirm/dry_run) is a key selection consideration and is never mentioned in the description.

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

unifi_net_create_firewall_zoneCreate firewall zoneC
Destructive

Creates a new firewall zone on the current site. Body shape per Firewall API docs.

NameRequiredDescriptionDefault
bodyNoFirewall zone create payload
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, openWorldHint=true, so the safety profile is covered structurally. The description adds nothing beyond that: it doesn't say what a zone creation affects, whether duplicate names are rejected, or that omitting confirm yields a preview rather than a write — that last point only appears in the schema.

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

Conciseness3/5

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

Two short sentences with no wasted words and the operation front-loaded, but the brevity reflects under-specification rather than disciplined concision, and the pointer to external docs is a weak substitute for content.

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

Completeness2/5

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

For a destructive, non-idempotent mutation with an opaque body and no output schema, the description leaves too much unsaid: no payload field guidance, no preview/confirmation workflow, no note on what is returned or what side effects follow.

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

Parameters2/5

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

Coverage is nominally 100%, but the most important parameter, 'body', has no type and no properties — only 'Firewall zone create payload' — and the description merely defers to external 'Firewall API docs' an agent may not have. The confirm/dry_run semantics are already fully spelled out in the schema, so the description contributes no additional parameter meaning.

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?

States a specific verb and resource ('Creates a new firewall zone') and adds the scoping detail 'on the current site'. It does not differentiate from near-duplicate siblings such as unifi_gen_createfirewallzone or explain the relationship to unifi_net_create_firewall_policy.

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 when-to-use or when-not-to-use guidance, no prerequisites (e.g. whether zones must exist before policies reference them), and no mention of the confirm/dry_run workflow in prose. The agent must infer everything from the schema.

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

unifi_net_create_networkCreate networkC
Destructive

Creates a new network on the current site. Body shape per Network API docs.

NameRequiredDescriptionDefault
bodyNoNetwork create payload
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, idempotentHint=false and openWorldHint=true, so the write/destructive profile is covered. The description adds only that it targets the current site and defers payload shape to external 'Network API docs' — no word on irreversibility, conflicts with existing networks, or failure modes.

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?

Two short sentences with the action front-loaded and no filler. Brevity is efficient, though it borders on under-specification rather than tightness.

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

Completeness2/5

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

A destructive create on an untyped body parameter with no output schema needs more than a docs pointer: what a network payload minimally requires, how it relates to the parallel unifi_gen_createnetwork, and what a preview returns are all absent.

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

Parameters3/5

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

Schema description coverage is 100% and the confirm/dry_run safety gates are fully documented in the schema, so baseline 3 applies. The one description contribution — 'Body shape per Network API docs' — signals that the opaque, untyped body must be sourced externally, which is marginally useful but not real semantics.

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?

Clear verb+resource and a scope qualifier ("current site") make the purpose immediately legible. It does not differentiate itself from the close sibling unifi_gen_createnetwork (or from unifi_net_update_network), so an agent has no textual basis for choosing between two network-creation 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 when-to-use guidance, no prerequisites, no named alternative. Nothing says when to pick this over unifi_gen_createnetwork, nor when a preview (dry_run) is appropriate versus a real apply.

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

unifi_net_create_traffic_listCreate traffic matching listC
Destructive

Creates a new traffic matching list on the current site. Body shape per Network API docs.

NameRequiredDescriptionDefault
bodyNoTraffic matching list create payload
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is partly covered. However, for a destructive create the description says nothing about side effects, what the confirm/dry_run preview flow yields, or what dependencies (firewall policies) the new list may affect, and it defers the payload contract to 'Network API docs'.

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?

Two short sentences with the action front-loaded and no filler. The second sentence is arguably low-value boilerplate that points away from the description rather than adding content.

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

Completeness2/5

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

The tool is a destructive create with an untyped 'body' object, zero required parameters and no output schema, so the description carries real weight — yet it never states what the body must contain, what a preview response looks like, or what happens on success. Delegating the payload contract to external docs leaves the agent under-equipped.

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 'confirm' and 'dry_run' semantics are already documented in the schema. The description's only parameter-related contribution is pointing at Network API docs for the opaque 'body' object, which adds a reference but no concrete shape, required fields, or examples.

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?

States a specific verb and resource ('Creates a new traffic matching list') and scopes it to 'the current site', so the action is unambiguous. It does not distinguish itself from the near-identical sibling unifi_gen_createtrafficmatchinglist or from unifi_net_update_traffic_list.

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 versus the duplicate generative sibling or the update/delete traffic-list tools, and no prerequisite or ordering advice. The only implicit context is that the list is created on the current site.

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

unifi_net_create_vouchersCreate vouchersC
Destructive

Generates one or more hotspot vouchers. Body shape per UniFi docs (count, name, duration, …).

NameRequiredDescriptionDefault
bodyNoVoucher generation payload
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already disclose destructiveHint=true, idempotentHint=false, openWorldHint=true, so the safety profile is covered. Beyond that the description adds almost nothing: it defers payload semantics to "UniFi docs" rather than stating what a voucher contains or what the two-step confirm/preview behavior means in practice.

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?

Two short sentences with the action front-loaded and no filler. The brevity is appropriate, though the second sentence spends words deferring to an external reference.

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

Completeness2/5

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

For a destructive, non-idempotent batch-create with no output schema, the description never says what comes back (voucher codes? ids?) or how the confirm/preview interaction works. Those omissions matter here more than for a read 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 count/name/duration are already documented and confirm/dry_run are self-describing. Naming the body fields (count, name, duration) adds marginal value, but the pointer to external "UniFi docs" is not actionable on its own.

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?

States a specific verb+resource ("Generates ... hotspot vouchers") and clarifies batch semantics with "one or more." It does not, however, distinguish itself from the near-identical sibling unifi_gen_createvouchers that also appears in the sibling list.

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 statement of when to use this versus unifi_gen_createvouchers, and no mention of the two-phase preview flow implied by the confirm/dry_run params. The agent must infer the workflow entirely from the schema.

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

unifi_net_create_wifiCreate WiFi broadcastC
Destructive

Creates a new WLAN.

NameRequiredDescriptionDefault
bodyNoWiFi broadcast create payload
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already flag destructiveHint=true, openWorldHint=true and idempotentHint=false, so the safety profile is partially covered. The description adds nothing beyond that: it never says the tool previews by default until confirm=YES, that re-running creates a duplicate SSID, or what scope the new WLAN lands in -- all material for a destructive, non-idempotent create.

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

Conciseness3/5

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

Single short sentence, front-loaded and waste-free, but it is terse to the point of under-specification rather than genuinely concise. There is no second sentence earning its place because there is essentially no second sentence.

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

Completeness2/5

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

For a destructive, non-idempotent create with an undocumented-body payload and no output schema, the description omits the preview/confirm workflow and the payload's required fields. An agent reading only the description would not know that calling it without confirm=YES does nothing.

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 confirm/dry_run carry clear descriptions, so the baseline of 3 applies. The description does not reinforce the critical two-step preview-then-apply pattern, which would have been the one place it could add value over the schema.

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

Purpose3/5

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

States a specific verb and resource ('Creates a new WLAN'), but 'WLAN' is a different term from the title's 'WiFi broadcast' and the tool name's 'wifi', forcing the agent to reconcile terminology. Nothing distinguishes it from the near-identical sibling unifi_gen_createwifibroadcast.

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 indication of when to use this versus unifi_gen_createwifibroadcast or unifi_net_update_wifi, and no prerequisites (which site/network context, required payload shape) are given. The only usage nuance in play -- the confirm/dry_run preview path -- is left entirely to the schema.

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

unifi_net_delete_acl_ruleDelete ACL ruleC
DestructiveIdempotent

Deletes an ACL rule on the current site. IRREVERSIBLE.

NameRequiredDescriptionDefault
idYes
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, so 'IRREVERSIBLE' mostly reinforces what is structured, though it adds explicit severity. The description omits behavior an agent would want: that a call without confirm='YES' returns a preview instead of deleting, and that the idempotentHint means repeated deletes are safe.

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?

Two short sentences, front-loaded with the action and followed by the risk warning; nothing wasted. It is arguably too terse rather than padded, so length itself is not the problem.

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

Completeness2/5

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

For a destructive mutation tool with no output schema, the description should explain the confirm/dry_run two-step pattern and what a preview returns or what a missing rule raises. Instead an agent must read the schema to discover that calling without confirm='YES' silently does nothing but preview.

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

Parameters2/5

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

The description mentions no parameters at all, while schema coverage is only 67% and it is the description's omission of the confirm/dry_run safety gate — the most consequential part of this tool's contract — that leaves the biggest gap. Below the 3 baseline because it adds nothing beyond the schema.

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?

States a specific verb and resource ('Deletes an ACL rule') plus the scope ('on the current site'), which cleanly separates it from unifi_net_update_acl_rule and unifi_net_get_acl_rule. It doesn't name any sibling explicitly, so it stops short of 5.

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?

There is no guidance on when to use this versus alternatives (e.g. update_acl_rule to modify, delete_acl_rules for bulk), and no mention of the preview/confirm workflow that the schema requires. The only hint is the capitalized warning, which is a caution rather than usage guidance.

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

unifi_net_delete_dns_policyDelete DNS policyC
DestructiveIdempotent

Deletes a DNS policy. IRREVERSIBLE.

NameRequiredDescriptionDefault
idYes
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is largely covered; 'IRREVERSIBLE' reinforces it but adds little beyond that. The description omits the more valuable behavioral fact embedded in the schema — that without confirm='YES' the tool only returns a preview — leaving the two-step safety workflow undisclosed at the description level.

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?

Two short, front-loaded sentences with no filler; the destructive warning is placed immediately after the purpose. The terseness is efficient, though it borders on under-specification rather than optimal completeness.

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

Completeness2/5

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

For a destructive, open-world mutation with no output schema and a confirm/dry-run safety mechanism, the description is too thin: it doesn't explain the preview flow, what happens to dependent rules, or where the required id comes from. An agent must open the schema to call this safely.

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

Parameters2/5

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

The description says nothing about any of the three parameters. Schema coverage is 67%, so the schema documents confirm and dry_run reasonably well, but the required 'id' has no description anywhere and the description does not explain how to obtain a policy ID or that confirm/dry_run gate execution.

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?

States a specific verb and resource ('Deletes a DNS policy'), which cleanly separates it from the sibling list/get/create/update DNS policy tools. It does not name or differentiate against an alternative explicitly, but the operation 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 Guidelines2/5

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

There is no guidance on when to prefer this over alternatives, no prerequisites, and no warning about prerequisites such as the policy being referenced by active rules. The only steer is the word 'IRREVERSIBLE,' which implies caution but doesn't tell an agent when or when not to call it.

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

unifi_net_delete_firewall_policyDelete firewall policyC
DestructiveIdempotent

Deletes a firewall policy. IRREVERSIBLE.

NameRequiredDescriptionDefault
idYes
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, and 'IRREVERSIBLE' reinforces that rather than adding new facts. The genuinely valuable behavior — that the call only executes with confirm="YES" and otherwise returns a preview — appears only in the schema and is never surfaced in the description.

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?

Two short sentences, front-loaded and waste-free. Brevity is appropriate for a delete tool, though the second sentence is emphasis rather than information.

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

Completeness2/5

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

For a destructive, gated mutation with no output schema and an undocumented required id, the description omits the most important operational fact: the confirm/preview safety gate. An agent could call this expecting deletion and instead receive a preview, or fail to pass confirm and be confused.

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

Parameters2/5

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

Schema coverage is 67%, and the required 'id' parameter has no schema description at all (what form is a firewall policy id?). The description says nothing about id, confirm, or dry_run, so it does not compensate for the coverage gap.

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?

States a specific verb and resource ('Deletes a firewall policy'), which cleanly separates it from the get/list/create/update/patch firewall-policy siblings. It stops short of explicitly naming those alternatives, but the operation 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 Guidelines2/5

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

There is no guidance on when to use this versus list/get/update, no mention of required prerequisites such as the confirm token, and no note that a preview path exists. The agent gets a purpose but no decision criteria.

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

unifi_net_delete_firewall_zoneDelete firewall zoneB
DestructiveIdempotent

Deletes a firewall zone. IRREVERSIBLE.

NameRequiredDescriptionDefault
idYes
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is largely pre-supplied; "IRREVERSIBLE" reinforces it in prose. However, the description omits the important behavioral gate that without confirm="YES" the tool returns a preview rather than deleting — a detail the agent must dig out of the schema.

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

Conciseness4/5

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

Two short sentences, front-loaded with the action and the risk warning; nothing is padded. It is efficient but borders on under-specification rather than being a model of tight structure.

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

Completeness2/5

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

For a destructive delete with three parameters, no output schema and no dependency information, the description leaves real gaps: what happens to referencing policies, what the preview response looks like, and whether deletion is blocked by dependencies. Annotations cover safety but not consequences.

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 67%: confirm and dry_run carry their own descriptions, while id is undocumented in both places. The description adds nothing about parameters, so the schema does the heavy lifting — baseline 3 is appropriate for this coverage level.

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?

States a specific verb and resource ("Deletes a firewall zone") that unambiguously separates it from the create/update/get siblings. It stops short of explicitly naming the alternative path, but the delete semantics are clear from the verb alone.

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 deletion is appropriate, no mention that a zone still referenced by firewall policies may fail or be blocked, and no pointer to unifi_net_get_firewall_zone or unifi_net_list_firewall_policies for pre-checking. The agent must infer all preconditions.

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

unifi_net_delete_networkDelete networkC
DestructiveIdempotent

Deletes a network. IRREVERSIBLE.

NameRequiredDescriptionDefault
idYes
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

C2.7/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so "IRREVERSIBLE" largely restates structured data. The genuinely useful behavioral detail - that deletion is gated behind confirm:"YES" and returns a preview otherwise, and what happens to network references - is absent from the description and only partially visible in the schema.

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

Conciseness4/5

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

Two short sentences, front-loaded with the action and then the risk. Nothing is wasted, though the terseness leaves the definition under-specified rather than optimal.

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

Completeness2/5

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

For a destructive mutation with no output schema and a confirm/preview workflow, the description fails to explain the safety gate, side effects on dependent objects, or the alternative delete tool. An agent could call it without knowing it must supply confirm:"YES" to actually apply.

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

Parameters2/5

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

Schema coverage is 67%, with confirm and dry_run already documented in the schema. The description adds nothing about any parameter, and the undocumented required "id" (network identifier) is not compensated for at all.

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

Purpose3/5

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

States a clear verb and resource ("Deletes a network"), which is enough to know what it does. However, the sibling list contains unifi_gen_deletenetwork and unifi_net_delete_wifi, and nothing here explains when this one is the right delete tool versus those, so it lacks sibling 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 versus unifi_gen_deletenetwork, no preconditions (e.g. checking unifi_net_get_network_references before deletion), and no mention that a preview path exists. "IRREVERSIBLE" signals caution but does not route the agent anywhere.

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

unifi_net_delete_traffic_listDelete traffic matching listC
DestructiveIdempotent

Deletes a traffic matching list. IRREVERSIBLE.

NameRequiredDescriptionDefault
idYes
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so "IRREVERSIBLE" is reinforcement rather than new information (and is consistent with the annotations). The description does say nothing about the preview/confirm gate, which is the single most important behavioral trait here, nor about auth requirements.

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?

Two short sentences, front-loaded with the verb and the destructive warning — no filler. It is efficient, though the brevity comes at the cost of the missing safety-flow detail rather than being truly complete.

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

Completeness2/5

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

For a destructive, open-world delete with no output schema and an undocumented required parameter, the description should explain the confirm/dry_run preview cycle and what breaks when a traffic matching list is removed (e.g. references from firewall policies). Neither is present.

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

Parameters2/5

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

All three parameters are ignored in the description, and schema description coverage is only 67% (the `id` parameter has no description at all). The description does not compensate by explaining that `id` is the list identifier and that `confirm`/`dry_run` gate execution, so half the invocation semantics rest on an undocumented schema.

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?

States a specific verb+resource ("Deletes a traffic matching list") that is unambiguous and correctly implies mutation. It does not distinguish itself from the sibling unifi_net_update_traffic_list or the generated unifi_gen_deletetrafficmatchinglist variant, so an agent gets no differentiation signal.

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 when-to-use guidance, no prerequisites, and no mention of the two-step flow that the schema implies (preview without `confirm`, then apply). An agent must read the schema to discover that calling without confirm="YES" is a safe preview.

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

unifi_net_delete_voucherDelete voucherB
DestructiveIdempotent

Deletes a single hotspot voucher.

NameRequiredDescriptionDefault
idYes
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds cardinality ('single') but does not mention the preview behavior available via confirm/dry_run or what happens after deletion.

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 wasted words. It is concise, though extremely terse for a destructive operation.

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?

For a simple delete tool, annotations and schema provide the main safety and preview semantics. The description is minimally adequate but does not mention the confirmation requirement, preview behavior, or the id parameter's meaning.

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

Parameters2/5

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

Schema coverage is 67%, with the required 'id' parameter undocumented in the schema and the description adds no parameter details. The confirm and dry_run parameters are explained in the schema, but the description does not compensate for the missing id semantics.

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 states a specific verb and resource: deletes a single hotspot voucher. The word 'single' helps distinguish it from the bulk sibling unifi_net_delete_vouchers, though it does not explicitly name that alternative.

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 given on when to use this tool versus the bulk delete or other voucher tools, and there are no prerequisites or exclusions. Usage is only implied by the verb 'deletes'.

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

unifi_net_delete_vouchersDelete vouchersA
DestructiveIdempotent

Deletes all vouchers matching filter (required by the API, sent as query parameter). body.filter is still accepted for compatibility.

NameRequiredDescriptionDefault
bodyNoDeprecated: { filter } is read from here when `filter` is not set
filterNoVoucher filter expression, sent as the `filter` query parameter
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered; the description adds the important blast-radius detail that it removes *all* matching vouchers, not one. It does not restate irreversibility (annotations handle that), which is acceptable.

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 short sentences, the deletion scope front-loaded, with the parameter mechanics follow-up. Every clause carries information; nothing repeats the title.

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?

For a destructive bulk-delete tool the essential mechanical facts (required filter, preview-gated confirm, dry_run) are split between description and schema, but behavior when the filter is omitted or matches broadly is left unstated. Adequate, with a real safety-relevant gap.

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

Parameters4/5

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

Schema coverage is 100%, but the description adds genuinely new information: `filter` is required by the underlying API despite the schema listing zero required parameters, and it is transmitted as a query parameter. It also clarifies that `body.filter` is a deprecated compatibility path, which usefully steers the agent to use the top-level parameter.

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?

States a specific verb ('Deletes') and resource ('all vouchers matching `filter`'), with the scope qualifier 'all' that separates it from the singular unifi_net_delete_voucher sibling. It does not name that singular sibling explicitly, so differentiation is implied by wording rather than stated.

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 makes the filter-based bulk nature evident, which implicitly routes an agent away from the single-voucher tool, but never says when to use this versus unifi_net_delete_voucher or what to do if the filter would match nothing/unexpectedly much. No explicit when/when-not guidance.

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

unifi_net_delete_wifiDelete WiFi broadcastB
DestructiveIdempotent

Deletes a WLAN. IRREVERSIBLE.

NameRequiredDescriptionDefault
idYes
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the "IRREVERSIBLE." line mostly restates structured data. It adds emphasis but no new behavior: nothing about required permissions, what happens to dependent clients/profiles, or how the preview mode behaves. With annotations covering the safety profile, this is adequate but thin.

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 zero filler, and the destructive consequence is front-loaded right behind the action. Nothing could be trimmed without losing meaning.

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?

For a destructive three-parameter mutation with no output schema, the description should say what the preview returns and that the id is a WLAN id. Annotations carry the safety signal, but the agent still has to infer the preview/confirm workflow from the schema alone.

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 67%; the confirm and dry_run parameters are documented in the schema, and the bare "id" parameter is not described anywhere. The description adds no syntax or format meaning beyond the schema, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb and resource ("Deletes a WLAN"), so the agent knows exactly what the tool acts on. It does not distinguish itself from near-duplicate siblings such as unifi_gen_deletewifibroadcast or unifi_net_delete_network, which is the only thing keeping it from a 5.

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 versus the sibling wifi broadcast delete/update tools, and no mention of prerequisites such as fetching the WLAN id first via unifi_net_list_wifi. The safety flow (confirm="YES" vs preview, dry_run) exists only in the schema, not in the description.

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

unifi_net_device_actionExecute device actionC
Destructive

Generic device action. Uses the executeadopteddeviceaction endpoint. Vendor value: RESTART (lowercase "restart" is mapped).

NameRequiredDescriptionDefault
actionYese.g. "RESTART"
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.
deviceIdYes

TDQS

C2.3/5.0
Behavior2/5

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

Annotations already declare destructive=true, idempotent=false and openWorld=true, so the safety profile is covered structurally. The description adds only the underlying endpoint name and the casing mapping; it says nothing about the disruption a restart causes, how the confirm/preview gate behaves in practice, or error conditions.

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

Conciseness3/5

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

Three short, front-loaded sentences with no padding. However the brevity reflects under-specification rather than efficiency — the space saved is used on endpoint trivia instead of the action vocabulary.

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

Completeness2/5

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

For a destructive, non-idempotent, open-world mutation with no output schema, an agent needs to know the valid action set, what the preview path returns, and what state changes result. None of that is present, and the overlap with unifi_net_reboot_device is unresolved.

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 75%, so most parameters are documented structurally. The description usefully notes that lowercase "restart" is mapped to the vendor value RESTART, which the schema's bare e.g. "RESTART" does not make explicit. deviceId and the confirm/dry_run semantics are left entirely to the schema.

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

Purpose2/5

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

"Generic device action" restates the tool name rather than describing what it does; the only concrete content is that the vendor value is RESTART. It never states whether other action values exist, nor distinguishes itself from the sibling unifi_net_reboot_device, which appears to do an overlapping job.

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 when-to-use or when-not-to-use guidance. The obvious alternative, unifi_net_reboot_device (and unifi_gen_executeadopteddeviceaction / unifi_net_port_action), is never mentioned, so an agent has no basis for choosing between them.

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

unifi_net_get_acl_ruleGet ACL ruleC
Read-onlyIdempotent

Detail for one ACL rule on the current site.

NameRequiredDescriptionDefault
idYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnly, idempotent, non-destructive, open-world behavior, so the description adds only the site-scoping detail. Nothing is said about behavior on a missing/unknown id, permission requirements, or whether a 404 is returned rather than an empty object.

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?

A single front-loaded sentence with no filler or redundancy. It is efficient, though the brevity reflects under-specification as much as discipline.

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

Completeness2/5

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

With no output schema, the description should indicate what a returned ACL rule looks like (fields, ordering position) or that it fails for unknown ids. It provides none of that, leaving an agent to call it blind after the trivial schema and annotations.

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

Parameters2/5

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

Schema description coverage is 0% for the single required parameter 'id', and the description does not compensate: it does not state the id format (UUID vs. numeric), where to obtain it (list_acl_rules), or whether it must belong to the current site.

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

Purpose3/5

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

"Detail for one ACL rule on the current site" names the resource and implies a single-record read, so the verb+resource is inferable. However it never distinguishes itself from the many sibling reads in the list (unifi_net_list_acl_rules, unifi_net_get_acl_rule_ordering, and the near-duplicate unifi_gen_getaclrule), leaving an agent to guess which one fetches a single rule.

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?

There is no when-to-use vs. when-not guidance and no mention of the sibling list_acl_rules call as the way to obtain an id. The only context is the implicit 'current site' scoping, which is a constraint rather than a routing hint.

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

unifi_net_get_acl_rule_orderingGet ACL rule orderingA
Read-onlyIdempotent

Returns the current ordering of ACL rules on the current site.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds only the site scoping; it says nothing about the return shape (ordered rule IDs with positions), which is the key behavioral detail for an ordering tool.

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?

A single efficient sentence with no waste, though it is short enough that it could have front-loaded one more actionable detail (e.g., what the ordering output looks like) at no cost to brevity.

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?

With no output schema, the description is the only place an agent could learn what an 'ordering' response contains, and it does not say. For a simple read tool with full annotation coverage this is adequate but thin.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4. The phrase 'current site' usefully clarifies that site context is implicit rather than passed as an argument.

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?

States a specific verb (returns) and resource (ordering of ACL rules) scoped to the current site. It is distinguishable from unifi_net_list_acl_rules and unifi_net_reorder_acl_rules, though the description never explicitly names those siblings.

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 only implied: an agent can infer this is the read counterpart to unifi_net_reorder_acl_rules, but the description gives no explicit when-to-use or when-not-to-use guidance and names no alternatives.

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

unifi_net_get_clientGet connected clientC
Read-onlyIdempotent

Detail for a connected client by id.

NameRequiredDescriptionDefault
clientIdYes

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare the operation as read-only, idempotent, non-destructive, and open-world. The description adds that it applies to connected clients and requires an ID, but it does not explain behavior for unknown/offline clients or what kind of detail is returned.

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 short sentence with no filler. It is concise and front-loads the resource, though it is arguably too sparse for a tool with an undocumented parameter.

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

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple getter this is minimally informative, but with no output schema and no parameter description, the definition should clarify what clientId is and what "detail" covers. The annotations cover safety, but important invocation semantics remain missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the single clientId parameter is undocumented in the schema. The description only says "by id," which restates the parameter name without specifying format, source, or whether it is an internal ID, MAC address, or other identifier.

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 states a specific operation and resource: retrieving detail for a connected client by ID. It is clear what the tool does, but it does not distinguish itself from nearby siblings such as unifi_net_list_clients or unifi_gen_getconnectedclientdetails.

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 phrase "by id" only implies that the caller must already have a client identifier. There is no explicit guidance on when to use this tool instead of unifi_net_list_clients, unifi_gen_getconnectedclientdetails, or other client-related siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_get_deviceGet device detailsC
Read-onlyIdempotent

Detail for a single adopted device.

NameRequiredDescriptionDefault
deviceIdYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is fully covered by structured data. The only behavioral content the description adds is the word "adopted," which mildly scopes results but says nothing about error behavior for unknown/offline devices or what fields are returned.

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?

One short, front-loaded sentence with no filler. It is appropriately sized in form, though the brevity comes at the cost of substance rather than from efficient compression.

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?

For a simple one-parameter read tool with full safety annotations and no output schema, the definition is minimally viable but leaves the key unknown: the identity format of deviceId and the shape of the returned detail. Annotations carry the safety burden, so the gap is narrow but real.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single parameter deviceId has no description in either the schema or the description text. The agent is not told whether deviceId is an internal ID, MAC address, or hostname, which matters for a lookup tool that will fail on a malformed identifier.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Detail for a single adopted device" names the resource (device) and scope (single, adopted) but uses a noun fragment rather than a verb, and never distinguishes itself from close siblings such as unifi_net_list_devices, unifi_gen_getadopteddevicedetails, or unifi_sm_get_host. An agent can guess it is a per-device read, but not which of several per-device reads to pick.

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?

There is no guidance on when to use this vs. unifi_net_list_devices (many devices), unifi_net_list_pending_devices (unadopted), or unifi_net_get_device_stats (statistics). The only implicit constraint is "adopted," and no prerequisites or alternatives are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_get_device_statsGet latest device statisticsD
Read-onlyIdempotent

Latest statistics snapshot.

NameRequiredDescriptionDefault
deviceIdYes

TDQS

D1.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered elsewhere. The description adds nothing beyond the phrase 'snapshot' – no statement of freshness, retention, time range, or whether the device must be online.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Length is minimal, but this is under-specification rather than conciseness: three words convey no actionable information and the meaningful content (the device scope) is absent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A single-parameter read tool with no annotations gap and no output schema, yet the description omits the one thing the agent must supply (deviceId) and offers no sense of the returned statistics. Far too thin given the crowded sibling namespace.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the required deviceId is completely undocumented in both schema and description. The description never mentions deviceId or what identifier form is expected, so it fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Latest statistics snapshot' largely restates the title 'Get latest device statistics' and never states the resource scope (per-device, keyed by deviceId) or what kind of statistics are returned. It does not distinguish this tool from the many near-identical siblings such as unifi_gen_getadopteddevicelateststatistics or unifi_net_get_device.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites (e.g., device must be adopted), and no mention of alternatives. With dozens of overlapping get/list siblings, an agent has no signal for choosing this over unifi_gen_getadopteddevicelateststatistics.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_get_dns_policyGet DNS policyC
Read-onlyIdempotent

Detail for one DNS policy.

NameRequiredDescriptionDefault
idYes

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that—no statement of what happens if the ID is unknown, whether the policy is scoped to a site, or any hint about response shape—so it contributes no behavioral context of its own.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five words with no wasted clauses, but this is under-specification rather than conciseness; the single sentence is front-loaded only in the sense that there is nothing else to be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A single-record lookup tool with no output schema and an undocumented required parameter needs the description to explain the ID and expected result. The description covers none of this, leaving the agent to infer how to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter ('id') with 0% schema description coverage, so the description must carry the burden of explaining it. It never mentions the id at all—not that it is the policy identifier, not its format, not where to obtain one (e.g., from unifi_net_list_dns_policies).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The fragment 'Detail for one DNS policy' identifies the resource and makes clear this returns a single policy rather than a list (distinguishing it from unifi_net_list_dns_policies). However, it largely restates the name/title 'Get DNS policy' and never says what 'detail' comprises or that a policy ID is required to fetch it.

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?

There is no guidance on when to use this versus unifi_net_list_dns_policies, unifi_raw_request, or the description-equivalent unifi_gen_getdnspolicy. No prerequisites or exclusions are stated; the agent must infer usage from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_get_firewall_policyGet firewall policyC
Read-onlyIdempotent

Detail for one firewall policy.

NameRequiredDescriptionDefault
idYes

TDQS

C2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is fully carried by structured data. The description adds nothing beyond that — no note on what a missing id returns, whether lookup is by UUID or name, or any error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Brevity here is under-specification rather than conciseness: one four-word fragment with no front-loaded verb or object contract. Nothing is wasted, but almost nothing is conveyed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-resource lookup with one undocumented required parameter and no output schema, the description should at least say what identifier form is expected and what the response contains. Annotations cover read safety, but the calling contract remains incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single required parameter 'id' has 0% schema description coverage, so the description carries the burden of clarifying whether it is a UUID, a numeric index, or a policy name — and it says nothing. This is a clear gap the description fails to compensate for.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Detail for one firewall policy' is a noun fragment that essentially restates the name and title, with no verb. The only added information is 'one', which weakly implies a single-item fetch versus the sibling list_firewall_policies, but the agent gets that from the name anyway.

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?

There is no when-to-use guidance, no mention of when to prefer unifi_net_list_firewall_policies, unifi_gen_getfirewallpolicy, or unifi_raw_request, and no prerequisite notes. The only routing signal is implicit in the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_get_firewall_policy_orderingGet firewall policy orderingA
Read-onlyIdempotent

Returns the current ordering of firewall policies on the current site.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so safety is covered. The description adds only the site-scoping note and 'current' state, saying nothing about whether the ordering reflects pending changes or what happens when no policies exist. Adequate but thin 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?

A single front-loaded sentence with no filler. Every word carries information: the read verb, the resource, the ordering aspect, and the site scope.

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?

There is no output schema, and the description does not explain the shape of the returned ordering (an ordered list of policy IDs? full policy objects?). Since the primary consumer of this result is likely reorder_firewall_policies, the missing description of the return structure is a real gap for a tool whose output is the input to another call.

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?

Zero parameters, so the baseline of 4 applies; there is nothing the description could add on the input side. The schema is empty and fully described by default.

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?

States a specific verb and resource ('Returns the current ordering of firewall policies') and scopes it to the current site. It is clearly distinct from unifi_net_reorder_firewall_policies by implication of 'Returns', but never names that sibling or the generate-spec twin unifi_gen_getfirewallpolicyordering to make the split explicit.

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 only implied: an agent can infer this is the read step before calling reorder_firewall_policies, but the description never says so, nor does it state prerequisites (site must be active, policies must exist) or when to prefer the unifi_gen_ variant.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_get_firewall_zoneGet firewall zoneC
Read-onlyIdempotent

Detail for one firewall zone.

NameRequiredDescriptionDefault
idYes

TDQS

C2.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and openWorld, so safety is covered. The description adds nothing beyond that – no note on what constitutes a valid zone identifier, whether an error is returned for unknown IDs, or what the payload contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single front-loaded clause with no waste, which is good, but the brevity comes from under-specification rather than efficiency. There is nothing to trim and equally nothing of substance retained.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no parameter documentation, the description is the only source of semantics for a by-ID lookup tool, and it supplies none. An agent knows only that it returns something about a firewall zone, not what fields or behavior to expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the sole required parameter "id" is completely undocumented. The description does not say whether this is a zone UUID, a numeric ID, or a name, so it fails to compensate for the schema gap as the low-coverage rule requires.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Detail for one firewall zone" essentially restates the tool name and title rather than stating a verb+resource operation. It minimally distinguishes a single-zone fetch from the sibling list_firewall_zones, but only by implication of the word "one".

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 when-to-use guidance, no prerequisites, and no explicit mention of the sibling list_firewall_zones vs this single-zone variant. The agent must infer that this is the by-ID counterpart to the list tool from naming conventions alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_get_infoNetwork application infoA
Read-onlyIdempotent

Reads /v1/info on the Network application via the Cloud Connector. Useful as a health probe.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, so the safety profile is covered. The description adds real value by naming the concrete endpoint and the Cloud Connector dependency, but says nothing about authentication requirements, failure modes when the connector is unreachable, or cost/latency of the round trip.

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 short sentences, zero filler, with the primary action stated first and the secondary use case after. Nothing to trim.

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?

There is no output schema, so the description carries the burden of telling the agent what comes back, yet it only says the endpoint is '/v1/info'. For a health-probe tool the agent would benefit from knowing whether the response includes version, hostname, uptime or status fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4; nothing in the description misleads about inputs, and there is nothing further the description could reasonably add on 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?

States a specific verb and resource ('Reads /v1/info on the Network application') and even names the transport path (Cloud Connector), so the operation is unambiguous. However, it never distinguishes itself from the very similar sibling 'unifi_gen_getinfo', leaving the agent to guess which info endpoint to call.

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?

'Useful as a health probe' implies the intended use case but is hedged ('useful') rather than directive. There is no statement of when not to use it, no prerequisites, and no pointer to the near-duplicate 'unifi_gen_getinfo' alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_get_lagGet LAGC
Read-onlyIdempotent

Link Aggregation Group (LAG) detail for a single LAG.

NameRequiredDescriptionDefault
idYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is fully covered. The description adds essentially nothing beyond that — no behavior for an unknown/invalid id, no note on whether LAG membership or member ports are included, and no return-shape cues.

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?

A single compact phrase with zero waste and the scope constraint front-loaded. It is arguably under-specified rather than verbose, but structurally it is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, no annotation gaps, and an undocumented required identifier, the description should say what a 'detail' response contains and where the id comes from. For a get-by-id tool these are the two things an agent actually needs, and both are absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'id' has 0% schema description coverage, so the schema does not say whether it is a numeric LAG id, a UUID, or a name. The description does not compensate at all — it never mentions the identifier or how to obtain it from list_lags.

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 states the resource (Link Aggregation Group) and the scope (a single LAG, detail-level), which distinguishes it from the list-style sibling unifi_net_list_lags without opening either schema. The retrieval verb is only implied by the tool name rather than stated in the description, but an agent can still tell what it returns.

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?

There is no guidance on when to call this versus unifi_net_list_lags or unifi_net_get_lagpage, and no indication that the id must first be obtained elsewhere. The agent must infer the workflow entirely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_get_mclag_domainGet MCLAG domainC
Read-onlyIdempotent

MCLAG domain detail for a single domain.

NameRequiredDescriptionDefault
idYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the entire safety profile. The description adds nothing beyond that—no note on error behavior for unknown ids, no indication of what fields are returned, and no scoping/permission context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with no filler, and the scoping phrase is front-loaded. Its brevity, however, reflects under-specification rather than disciplined conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description should indicate what a MCLAG domain record contains or how the identifier is obtained, especially given the undocumented parameter. For a detail-fetch tool, the agent is left guessing at both input format and return content.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the full burden for the single 'id' parameter, but it never says whether that id is a domain UUID, name, or numeric identifier, nor its format. 'For a single domain' only weakly implies the parameter's role.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

States it returns MCLAG domain detail for a single domain, which implies a read of one entity versus the list sibling. However, it merely paraphrases the title 'Get MCLAG domain' without a strong distinguishing verb or explicit contrast to unifi_net_list_mclag_domains.

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 instead of unifi_net_list_mclag_domains or unifi_gen_getmclagdomain. The 'single domain' phrasing hints at lookup-by-id use, but no alternatives or exclusions are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_get_networkGet networkC
Read-onlyIdempotent

Detail for one network.

NameRequiredDescriptionDefault
idYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that: no mention of what the detail payload includes, whether references/associations are expanded, or what happens when the id is unknown.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is short and front-loaded, so there is no waste. But it is a bare fragment that is concise by virtue of omission rather than by careful editing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-param read tool with good annotations, the bar is low, but the agent still cannot tell what the response contains or how to supply the id. No output schema exists to fill that gap, so the description should have done more.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single required parameter has 0% schema description coverage, so the schema gives the agent only the name "id" and type string. The description does not clarify whether this is the network's UUID, internal reference, or a human-readable name, leaving the one parameter that matters undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Detail for one network" implies retrieving a single network object, and the singular "one" distinguishes it from unifi_net_list_networks. However the verb is a noun fragment rather than a specific action, and it does not say what "detail" contains or how the network is identified. Vague purpose rather than a clear verb+resource statement.

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?

There is no guidance on when to call this instead of siblings such as unifi_net_list_networks, unifi_net_get_network_references, or unifi_gen_getnetworkdetails. The only implied usage is the singular vs. list contrast, which the agent must infer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_get_network_referencesGet network referencesC
Read-onlyIdempotent

References to this network from other objects.

NameRequiredDescriptionDefault
idYes

TDQS

C2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered elsewhere. The description adds only the vague hint 'from other objects' and says nothing about what is returned, whether the list can be empty, or what scopes are searched — minimal value beyond structured data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is short, but it is a sentence fragment that is under-specified rather than economical — brevity here costs clarity instead of adding it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description should describe the shape of returned references; it does not. Combined with the undocumented `id` parameter and no differentiation from the duplicated unifi_gen_* sibling, an agent cannot confidently invoke this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage and one required parameter, the description must explain that `id` is the network id. It never mentions the parameter at all, leaving the agent to guess whether it is a network id, a reference id, or a site id.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'References to this network from other objects' is a noun phrase that essentially restates the title 'Get network references' rather than naming a verb and resource. It never explains what a 'reference' is (firewall rule, DNS policy, VPN, etc.) or how the result differs from siblings like unifi_gen_getnetworkreferences.

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?

There is no guidance on when to call this versus alternatives — no mention of a prerequisite lookup of a network id, no note that unifi_gen_getnetworkreferences appears to be the equivalent generated variant. The agent must infer usage entirely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_get_switch_stackGet switch stackC
Read-onlyIdempotent

Switch stack detail for a single stack.

NameRequiredDescriptionDefault
idYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that — no mention of what is returned, whether the stack must exist, or what happens on an unknown id.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with no waste, but it is terse to the point of under-specification rather than efficient communication. Nothing is front-loaded because there is nothing to front-load.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and zero parameter documentation, the description would need to carry the burden of explaining both the identifier semantics and the returned shape of a switch stack. It does neither, so an agent knows the tool's name but not how to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single required parameter "id," so the description must compensate and does not. It never states that "id" is the switch stack identifier (nor whether it accepts a name or a MAC-like value), leaving the one parameter essentially undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Switch stack detail for a single stack" implies a single-item fetch and so contrasts implicitly with unifi_net_list_switch_stacks, but the phrasing largely restates the tool name and title rather than stating a verb like "retrieve." An agent can guess the intent but gets no explicit sibling 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 call this versus unifi_net_list_switch_stacks or the raw request tool. There are no stated prerequisites, no exclusions, and no indication of what an agent should already know before fetching a stack.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_get_traffic_listGet traffic matching listC
Read-onlyIdempotent

Detail for one traffic matching list.

NameRequiredDescriptionDefault
idYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds nothing on top: no mention of what happens with an unknown id, whether the id is a UUID or a name, or what a traffic matching list contains. With annotations present the bar is lower, but zero added context still only earns a 2.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is short and front-loaded with no waste, but the brevity comes from under-specification rather than efficiency — a six-word fragment that lacks a verb. It could easily carry one more clause (identifier source, return shape) without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (one required param, no output schema), which limits how much is needed, but the description still leaves the identifier semantics and the returned record's nature unaddressed. For a getter reachable from a large sibling set, this is thinner than an agent needs to call it confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single `id` parameter, so the description carries the full burden — and it says nothing about which identifier is expected. An agent cannot tell from either source whether `id` is the internal UUID from the list endpoint or a human-readable list name.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Detail for one traffic matching list" names the resource and implies a single-record fetch, so an agent can guess it returns one list rather than a collection. But it is a noun phrase with no verb, and it never names its sibling list_traffic_lists/update_traffic_list to sharpen the distinction. Purpose is inferable, not stated.

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 when-to-use guidance, no prerequisites (e.g. needing an id from unifi_net_list_traffic_lists first), and no alternatives named. The agent must infer that this is the follow-up call to the list tool for a single item.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_get_voucherGet voucherC
Read-onlyIdempotent

Hotspot voucher detail for a single voucher.

NameRequiredDescriptionDefault
idYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is fully covered without the description. The only added context is the word 'hotspot'; nothing is said about lookup failure behavior, whether the voucher must exist, or what scope/permissions are needed.

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?

One short sentence with no filler, front-loading the resource and scope. It is efficient but borders on under-specification rather than trimming redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read tool with rich annotations, the description still omits the meaning of the id and, with no output schema present, gives no hint about what detail fields are returned. An agent could call it but could not predict the response shape.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single required 'id' parameter, so the description carries the burden of explaining it. It only says 'a single voucher', leaving ambiguous whether id is the voucher code, a UUID, or an internal identifier.

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 phrase 'Hotspot voucher detail for a single voucher' clearly identifies the resource (hotspot voucher) and scope (exactly one), which implicitly distinguishes it from the list/create/delete voucher siblings. It lacks an explicit verb and never names an alternative, so it falls short of a 5.

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?

There is no statement of when to use this versus unifi_net_list_vouchers or unifi_gen_get_voucher, and no prerequisites or exclusions. The agent must infer usage from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_get_wifiGet WiFi broadcastD
Read-onlyIdempotent

Detail for a WLAN.

NameRequiredDescriptionDefault
idYes

TDQS

D1.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, open-world semantics, so the safety profile is covered. The description adds no behavioral context of its own — not what fields the 'detail' includes, not what happens when the id is unknown or invalid.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four words is concise but under-specified rather than efficient; there is no front-loaded statement of object or identifier format. It reads as a placeholder rather than a deliberate minimum.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, zero parameter documentation, and no hint of the returned payload. For a get-by-id tool whose only required argument is unexplained, the description leaves the agent unable to call it correctly with confidence.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single required parameter 'id' is completely undocumented in both schema and description. The agent cannot tell whether 'id' is a WLAN id, a network id, an SSID name, or a UUID — the description must compensate here and does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Detail for a WLAN" gestures at retrieval of a single WLAN object, but 'Detail' is a noun phrase with no explicit verb and 'WLAN' is never tied to 'WiFi broadcast' from the title. It does not distinguish this from the many sibling list/get tools such as unifi_net_list_wifi or unifi_gen_getwifibroadcastdetails.

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?

There is no statement of when to use this versus unifi_net_list_wifi (list) or other get-by-id siblings. The only faint signal is the word 'Detail', which implies a single-record fetch, but nothing is explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_list_acl_rulesList ACL rulesB
Read-onlyIdempotent

Lists all ACL rules on the current site.

NameRequiredDescriptionDefault
limitNoItems per page, at most 200 (vendor default applies when unset)
filterNoVendor filter expression
offsetNoNumber of items to skip (vendor default 0)

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered structurally. The description adds only the site scoping ('current site'); it says nothing about pagination defaults, result ordering, or whether the list is truncated at the vendor limit of 200.

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?

A single tight sentence with no filler and the resource front-loaded. Its brevity is mostly appropriate, though it leaves no room for the pagination caveat an agent would want.

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?

There is no output schema, so the description is the only place to learn what a returned ACL rule looks like or that results are paged – neither is covered. For a simple read-only list tool this is borderline adequate but leaves real 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 description coverage is 100%, so limit, filter and offset are already documented in the schema. The description does not describe pagination or filtering behavior at all, which is acceptable only because the schema carries that load.

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?

States a specific verb and resource ('Lists all ACL rules') with a scope ('on the current site'), so an agent can tell it apart from mutations like create_acl_rule. It does not explicitly distinguish itself from unifi_net_get_acl_rule (single fetch) or the page-oriented getaclrulepage sibling.

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 versus unifi_net_get_acl_rule for a single rule, or versus reorder/get_acl_rule_ordering when ordering matters. The only implied cue is the plural 'all' in the name and description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_list_clientsList connected clientsC
Read-onlyIdempotent

Currently connected clients on the site.

NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo

TDQS

C2.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The one piece of added value is the "currently connected" scoping statement — it tells the agent that offline or historical clients are excluded, a real behavioral fact. It says nothing about pagination behavior, default result size, or permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence fragment with zero padding, so there is no waste and the scope qualifier is front-loaded. However, this is under-specification rather than conciseness — the brevity comes at the cost of all the information the six-character schema and 0% parameter coverage leave missing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With three undocumented parameters, no output schema, and no pagination or filter semantics anywhere in the structured fields, this description is not complete enough for an agent to call the tool correctly. The tool's own schema is richer in what it constrains (limit max 200, offset minimum 0) than the description is in what it explains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across three parameters, so the description must carry the burden and it carries none. The opaque `filter` string has no documented syntax, and `limit`/`offset` have no stated defaults, caps, or interaction — an agent cannot construct a filtered or paginated call from this.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Currently connected clients on the site" names the resource and adds a scope qualifier (only currently connected, not historical/offline), which is genuinely useful. But it is a noun fragment with no verb (list/retrieve) and it never distinguishes itself from siblings such as unifi_net_get_client (single-client lookup) or unifi_gen_getconnectedclientoverviewpage.

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?

There is no guidance on when to use this versus unifi_net_get_client or the connected-client overview page tool. The only implicit hint is the "currently connected" scope, from which an agent must infer the when-to-use condition itself; no exclusions or prerequisites are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_list_countriesList countriesB
Read-onlyIdempotent

List of countries available in the UniFi Network API (console-level, no siteId required).

NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered structurally. The description adds the one genuinely new behavioral fact — that it is console-level and needs no siteId. It says nothing about pagination despite limit/offset being exposed, which is a meaningful omission for a list endpoint.

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?

A single tight sentence with the scope qualifier folded into a parenthetical rather than a trailing paragraph. Nothing is wasted, though there is very little content to structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, three undocumented parameters, no statement of what a 'country' record contains (code? name? id?) and no pagination semantics. For a paginated list endpoint with zero parameter documentation, the description leaves an agent guessing on nearly every call decision.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for all three parameters (limit, filter, offset), and the description does not compensate at all — it never explains what 'filter' matches on, what the page size default is, or how offset interacts with limit. Below the 3 baseline because low schema coverage puts the burden on the description and it is not met.

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?

States a specific verb and resource ('List of countries') and adds a useful scope qualifier: console-level, no siteId required. It does not, however, distinguish itself from the near-identical sibling unifi_gen_getcountries, which an agent could equally well pick.

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 parenthetical implies when the tool applies (console-scoped calls where no site is selected), but it gives no explicit when-to-use guidance and never mentions the overlapping getcountries sibling as an alternative. Usage is inferable rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_list_devicesList adopted devicesC
Read-onlyIdempotent

Adopted UniFi devices on the current site.

NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo

TDQS

C2.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the bar is low. The description adds one useful behavioral fact: results are scoped to the current site and limited to adopted devices. It says nothing about pagination behavior or result volume, which matters given limit/offset parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely short with no waste, but it is under-specified rather than concise: a single noun fragment that leaves the core operating information unsaid. Efficient packaging of insufficient content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, no annotations gap, and three undocumented parameters — an agent cannot tell how to page or filter results, or what shape of device records to expect. For a list tool with paging parameters this is materially incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for all three parameters (limit, filter, offset), so the description carries the full burden and fails to meet it. It never explains filter syntax or semantics, or that limit caps at 200 and offset drives paging.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The fragment 'Adopted UniFi devices on the current site' identifies the resource and narrows it to adopted devices on the current site, which distinguishes it from unifi_net_list_pending_devices. However, it is a noun phrase with no verb, and it does not mark the read/list intent that the name implies, so an agent still has to infer the action.

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 when-to-use statement and no alternatives named. Given siblings such as unifi_net_get_device, unifi_net_list_pending_devices, unifi_gen_listdevices and unifi_sm_list_devices, the description gives no basis for choosing this tool over them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_list_device_tagsList device tagsC
Read-onlyIdempotent

Device tags configured on the current site.

NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo

TDQS

C2.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered without the description. The only added fact is the 'current site' scoping, which is thin; nothing is said about pagination defaults, maximum page size, or whether the list is complete or a page.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short fragment with no wasted words and the site-scope qualifier front-loaded, but the brevity comes from under-specification rather than efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Even for a simple read-only list with no output schema, the definition leaves the pagination model and the filter syntax entirely undocumented, and gives no clue about the shape of a device tag. An agent cannot reliably page through or filter results using only this definition.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All three parameters (limit, filter, offset) have 0% schema description coverage, and the description mentions none of them. Critically, the 'filter' string's syntax is completely undefined in both places, so an agent has no way to use it correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description adds the scope 'on the current site' to the title's 'List device tags', so a reader knows the resource is site-scoped device tags in list form. However, it is a noun-phrase fragment with no verb and no mention of the listing behavior (pagination, filtering), so it is mostly a restatement of the name/title rather than a distinct statement of what the call does.

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?

There is no guidance on when to call this versus anything else. The large sibling set includes unifi_gen_getdevicetagpage and many other list_* tools, and nothing here explains the relationship or any prerequisite (e.g., that it operates against the currently selected site).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_list_dns_policiesList DNS policiesB
Read-onlyIdempotent

Lists all DNS policies configured on the current site.

NameRequiredDescriptionDefault
limitNoItems per page, at most 200 (vendor default applies when unset)
filterNoVendor filter expression
offsetNoNumber of items to skip (vendor default 0)

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and openWorld behavior, so the description's only added context is site scoping. It says nothing about pagination limits, result ordering, or whether the list is truncated by the limit parameter despite exposing limit/offset.

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?

One short sentence with the scope front-loaded and no wasted words. It is appropriately sized, though it is arguably under-specified rather than genuinely well-structured.

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?

For a simple paginated list tool with full annotation coverage and complete parameter docs, the description is minimally sufficient. It still omits paging mechanics and any note on what a DNS policy record contains, and there is no output schema to fall back on.

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 limit, filter and offset are fully documented in the schema (including a max of 200 and vendor defaults). The description adds no extra meaning about filter expression syntax or how paging interacts with the site scope, so baseline 3 applies.

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?

States a specific verb and resource ("Lists all DNS policies") and scopes it to the current site, which distinguishes it from unifi_net_get_dns_policy by plurality implied through the name. It never explicitly contrasts with the singular getter, so it stops short of 5.

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?

There is no guidance on when to use this versus unifi_net_get_dns_policy or the generated unifi_gen_getdnspolicypage alternative, and nothing about prerequisites or paging strategy. The single sentence gives implied usage from the name only.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_list_dpi_application_categoriesList DPI application categoriesC
Read-onlyIdempotent

DPI application categories known to the UniFi Network API (console-level, no siteId required).

NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety is covered by structured data. The description's added value is the 'console-level, no siteId required' note, which tells the agent this call is not site-scoped — genuinely useful context not in the annotations. It stops there, saying nothing about paging behavior or result size.

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?

A single short sentence with the scoping caveat up front and no filler. It is efficient, though the brevity borders on under-specification given the undocumented parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a paginated list tool with no output schema and 0% parameter documentation, the description should say at least what the result set contains and how limit/offset behave. Neither is present, so the agent must guess at pagination and filtering semantics.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for three parameters (limit, filter, offset), so the description carries the full burden — yet it explains none of them. The 'no siteId required' remark indirectly confirms site scoping is absent, but the agent gets no clue about what 'filter' accepts or how limit/offset paginate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource ('DPI application categories') and its API scope, so the object being listed is clear. However it never uses a verb, and it does not distinguish this from the close sibling unifi_net_list_dpi_applications (categories vs. applications), leaving the agent to infer the difference from the name alone.

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?

There is no guidance on when to call this instead of unifi_net_list_dpi_applications, nor any mention of prerequisites or typical workflow (e.g., look up a category before creating a firewall policy or traffic rule). The only usage signal is the parenthetical noting it is console-level.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_list_dpi_applicationsList DPI applicationsC
Read-onlyIdempotent

DPI applications known to the UniFi Network API (console-level, no siteId required).

NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive and openWorld, so safety behavior needs no restating. The description does contribute one non-obvious behavioral fact, that the call is console-level and requires no siteId, but says nothing about result volume, pagination behavior, or whether this is a static reference catalog.

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?

A single short sentence with no filler, and the useful scope qualifier is placed immediately after the resource. It is a noun fragment rather than a full statement of action, which slightly weakens front-loading of intent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with no output schema, the agent gets no picture of what a DPI application record contains or how to page/filter through the collection. The annotations cover safety but the description leaves the practical usage of limit/filter/offset entirely unexplored.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and three parameters (limit, filter, offset) are completely undocumented. The description adds only the implicit hint that no siteId parameter exists; it says nothing about the paging parameters, the 200 max limit, or what 'filter' accepts, so it fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The name and title already say 'List DPI applications'; the description restates the resource as 'DPI applications known to the UniFi Network API' without an explicit verb such as list/retrieve. It does add scope ('console-level, no siteId required'), which helps separate it from site-scoped list tools, but it never explicitly contrasts with the closely named sibling unifi_net_list_dpi_application_categories.

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?

There is no statement of when to use this tool, when not to, or which alternative to pick. The near-identical siblings (unifi_net_list_dpi_application_categories, unifi_gen_getdpiapplications) go unmentioned, leaving the agent to infer the difference from names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_list_firewall_policiesList firewall policiesC
Read-onlyIdempotent

Lists all firewall policies on the current site.

NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds the site-scoping context ('current site'), which is useful, but says nothing about pagination behavior despite the limit/offset parameters, so no real depth 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with zero filler. It is efficient, though the brevity is under-specification rather than disciplined economy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list tool with no output schema, zero parameter documentation, and a near-identical sibling, one bare sentence is not enough. An agent cannot tell how to page results, what filter syntax is accepted, or why to pick this over the generated counterpart.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for three undocumented parameters (limit, filter, offset) and it does not mention any of them. Worse, 'Lists all' arguably contradicts the existence of a 'filter' parameter, implying no server-side filtering is possible.

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 states a specific verb and resource ('Lists all firewall policies') plus a scope ('on the current site'), which is enough to know what the tool does. However, it does not distinguish itself from siblings such as unifi_gen_getfirewallpolicies, which appears to expose the same resource, leaving ambiguity.

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?

There is no guidance on when to use this tool versus the apparent duplicate unifi_gen_getfirewallpolicies, nor versus unifi_net_list_firewall_zones or unifi_net_get_firewall_policy. The only implicit signal is 'all' vs the singular get tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_list_firewall_zonesList firewall zonesC
Read-onlyIdempotent

Lists all firewall zones on the current site.

NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered externally. The description adds only the site-scoping detail; it says nothing about pagination defaults, whether results are truncated at the limit, or the result shape, which matters for a list endpoint.

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?

A single front-loaded sentence with no filler or redundancy. It is efficient, but the brevity is achieved by omitting information rather than by selecting only the important information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description should describe the returned collection or at least pagination semantics, and it does neither. For a paginated list tool with three undocumented parameters, the definition leaves the agent guessing at how to page through or narrow results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%: limit, offset and filter carry no documentation at all, and the description does not compensate. It never explains that limit caps at 200, that offset enables paging, or what filter syntax/fields are supported, leaving three parameters effectively opaque.

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?

States a specific verb and resource (lists firewall zones) and scopes it to the current site, which separates it from the singular unifi_net_get_firewall_zone. It does not acknowledge the parallel gen-style sibling (unifi_gen_getfirewallzones), so differentiation is implied rather than explicit.

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?

There is no guidance on when to use this versus the get/create/update/delete zone siblings or the gen-prefixed equivalents. The word "all" and the site scope hint at a bulk read, but the agent must infer everything else from the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_list_lagsList LAGsC
Read-onlyIdempotent

Link Aggregation Groups (LAGs) configured on the current site.

NameRequiredDescriptionDefault
limitNoItems per page, at most 200 (vendor default applies when unset)
filterNoVendor filter expression
offsetNoNumber of items to skip (vendor default 0)

TDQS

C2.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and open-world, so the safety profile is covered. The only added behavior is the implicit 'current site' scoping; nothing is said about pagination behavior, result ordering, or what happens when no LAGs exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is short and front-loaded, but it is a sentence fragment without a verb rather than a tight description. Brevity here comes from under-specification rather than from editing out waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a paginated list tool with no output schema, the description should say what a LAG record contains or at least how paging behaves. Neither is present, and the sibling relationship to get_lag is left unresolved.

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%: limit, offset and filter are fully documented in the schema including defaults and bounds. The description adds no parameter meaning, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The fragment names the resource (LAGs) and its scope ('configured on the current site'), which is slightly more than the title 'List LAGs'. But it never states a verb and does not distinguish itself from unifi_net_get_lag (singular fetch) or unifi_net_list_mclag_domains, both of which sit right beside it.

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?

There is no statement of when to use this versus unifi_net_get_lag for a single LAG or unifi_net_list_mclag_domains for MC-LAG domains. An agent must infer the difference from tool names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_list_mclag_domainsList MCLAG domainsC
Read-onlyIdempotent

MCLAG domains configured on the current site.

NameRequiredDescriptionDefault
limitNoItems per page, at most 200 (vendor default applies when unset)
filterNoVendor filter expression
offsetNoNumber of items to skip (vendor default 0)

TDQS

C2.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is fully covered elsewhere. The description's only added behavioral fact is site scoping ('current site'); it says nothing about result volume, pagination defaults, or what the vendor filter expression applies to.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence fragment with nothing wasted, but it is under-specified rather than well-compressed. It is front-loaded and easy to parse, yet the absence of a verb and any usage framing makes it feel like a title echo.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should convey at least the shape or scope of returned data (e.g., that each entry has an ID usable with the get tool). It also omits any note on paging through large MCLAG domain lists, leaving meaningful gaps for a 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?

All three parameters (limit, filter, offset) are fully documented in the schema at 100% coverage, so the schema does the heavy lifting. The description adds no additional meaning about how filter interacts with the list or how pagination behaves, which is the baseline case for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the resource (MCLAG domains) and adds a scope qualifier ('configured on the current site'), which is more than a bare restatement of the title. However, the verb is only implied by the tool name rather than stated ('list all' / 'retrieve'), and it does not distinguish itself from unifi_net_get_mclag_domain or unifi_gen_getmclagdomainpage.

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?

There is no guidance on when to pick this list tool over the single-domain sibling unifi_net_get_mclag_domain, nor any mention of pagination or filtering strategy. The only implicit cue is that this is a collection-level read, which an agent could infer from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_list_networksList networksC
Read-onlyIdempotent

Networks configured on the current site.

NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo

TDQS

C2.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and non-destructive, so the safety profile is covered without description help. The description contributes only the site scoping, saying nothing about pagination defaults, result ordering, or whether a filter is required for large sites — modest added value given paged list semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single short sentence with no padding, but it is under-specified rather than genuinely concise — brevity is achieved by omitting needed information, not by tight writing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and zero-documented pagination/filter parameters, the description needed to explain result shape, paging behavior, and filter syntax. It instead supplies only a scope phrase, leaving the agent guessing how to page through or narrow a large network list.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for three parameters (limit, filter, offset), and the description mentions none of them. The 'filter' parameter in particular needs expression syntax guidance, and limit/offset bounds (max 200) are only machine-readable. The description does not compensate at all for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description is a noun phrase ('Networks configured on the current site') rather than a verb+resource statement, so the listing action only comes from the name and title. It does add one real fact — the scope is the current site — but it does not distinguish this from siblings such as unifi_net_get_network, unifi_gen_getnetworksoverviewpage, or unifi_net_get_network_references.

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?

There is no guidance on when to call this versus the many alternatives: no mention of using get_network for a single network, list_networks for enumeration, or the gen_* overview tools. An agent must infer the choice from names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_list_pending_devicesList pending devicesB
Read-onlyIdempotent

Devices waiting to be adopted (console-level, no siteId required).

NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=true, idempotent=true, destructive=false, openWorld=true, so the safety profile is fully covered. The description adds one genuinely useful behavioral fact — it is console-level and needs no siteId — but says nothing about result size, whether unadopted devices from all sites appear, or pagination behavior.

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?

One front-loaded sentence with zero filler; the scope qualifier immediately follows the resource. It is appropriately sized, though leaning toward under-specification rather than optimal density.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a paginated list tool with no output schema and three undocumented parameters, the definition leaves the agent without guidance on filtering syntax, page size caps, or result shape. The console-level note helps routing but does not complete the picture.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for three parameters (limit, filter, offset), and the description does not mention any of them. It neither explains what 'filter' accepts nor that limit/offset imply pagination, so the agent must guess at formats — a real gap the description should have filled.

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?

States a specific resource — devices waiting to be adopted — and disambiguates it from the adopted-device siblings (unifi_net_list_devices / unifi_gen_listdevices) via the 'waiting to be adopted' qualifier. The verb 'list' is only implied by the name/title, but the scope 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 Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'console-level, no siteId required' gives real invocation context, but there is no explicit guidance on when to use this versus list_devices or the natural follow-up adopt_devices. The agent must infer that these are pre-adoption candidates and that unifi_net_adopt_devices is the next step.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_list_radius_profilesList RADIUS profilesC
Read-onlyIdempotent

RADIUS profiles configured on the current site.

NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the useful scoping detail that results are limited to the current site, but it does not describe pagination or filtering behavior.

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 wasted words. Its brevity is appropriate structurally, though the content is too thin to fully specify behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list tool with three parameters, no output schema, and 0% schema description coverage, the description is incomplete. It says what the resource is but does not explain filtering, pagination, or expected return structure, which an agent needs to invoke it reliably.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description provides no explanation of limit, filter, or offset. With three undocumented parameters and no compensating information in the description, an agent gets almost no semantic guidance beyond parameter names.

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 identifies the resource (RADIUS profiles) and scope (configured on the current site), which is clear enough for an agent to know what it returns. However, it does not explicitly use a listing verb or differentiate itself from related list/get tools, leaving sibling distinction to the tool name.

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?

There is no guidance on when to use this tool, when not to use it, or which sibling tool to choose instead. The only implied usage is that it lists RADIUS profiles for the current site.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_list_sitesList Network sitesA
Read-onlyIdempotent

Lists the local sites that the Network application exposes (NOT the same as Site Manager sites).

NameRequiredDescriptionDefault
limitNoItems per page, at most 200 (vendor default applies when unset)
filterNoVendor filter expression
offsetNoNumber of items to skip (vendor default 0)

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds the useful scope caveat about which sites are returned, but says nothing about pagination behavior (relevant given limit/offset) or how results are ordered/truncated.

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?

A single front-loaded sentence with no filler; the parenthetical caveat is the highest-value piece of information and is given immediately.

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 zero-required-parameter read-only list tool with no output schema and full schema documentation, the description covers purpose, scope and the key ambiguity. Only the shape of returned site records is unaddressed, which is a minor gap.

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 limit, filter and offset all documented in the schema, so the baseline is 3. The description contributes nothing about the 'vendor filter expression' parameter or pagination semantics beyond what the schema states.

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?

States a specific verb (lists) and resource (local sites exposed by the Network application), and adds a parenthetical excluding Site Manager sites, which disambiguates from close siblings such as unifi_sm_list_sites. It stops short of distinguishing itself from unifi_gen_listsites, so it is clear but not fully sibling-differentiated.

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 'NOT the same as Site Manager sites' note implies when to prefer this over the Site Manager variant, but no explicit when-to-use or when-not-to-use guidance is given, and the relationship to unifi_gen_listsites / unifi_gen_listsites is left unstated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_list_site_to_site_vpnList site-to-site VPN tunnelsC
Read-onlyIdempotent

Site-to-site VPN tunnels configured on the current site.

NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is fully covered. The description adds only the site-scoping note, and says nothing about pagination defaults, result volume, or what happens with the limit/offset parameters. Minimal value beyond the structured data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with no padding, so nothing is wasted. However, the brevity comes at the cost of substance — it is under-specified rather than concise, and there is no structure to front-load.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and full annotation coverage, the description still needs to carry pagination behavior, filter syntax and result shape expectations for a list endpoint — and it carries none of them. Incomplete for an agent to invoke confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across three parameters, and the description supplies no parameter information at all. The filter parameter in particular uses a non-obvious syntax that goes unexplained, leaving the agent to guess. This falls well short of compensating for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the resource (site-to-site VPN tunnels) and its scope ("configured on the current site"), which is somewhat informative. But it is a noun phrase with no verb, and it does nothing to distinguish this list tool from near-siblings such as unifi_net_list_vpn_servers or the SD-WAN config tools. Vague rather than clear.

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?

There is no statement of when to use this tool, when to use an alternative, or any prerequisite. An agent must infer usage entirely from the name. The only implicit cue is the "current site" scoping, which is not framed as guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_list_switch_stacksList switch stacksC
Read-onlyIdempotent

Switch stacks configured on the current site.

NameRequiredDescriptionDefault
limitNoItems per page, at most 200 (vendor default applies when unset)
filterNoVendor filter expression
offsetNoNumber of items to skip (vendor default 0)

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds only the site-scoping fact ('current site'); it says nothing about pagination behavior, empty-result behavior, or result ordering, which is the remaining behavioral burden not covered by 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?

A single short sentence fragment with zero waste and the scope constraint present. It is efficient, though its terseness is under-specification rather than precision.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list endpoint with three optional paging/filter parameters, no output schema, and no annotation detail on returns, the description should explain paging semantics or the filter expression format an agent must supply. Neither is present, leaving the agent to guess how to page through stacks.

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 limit, offset and filter are already documented in the schema. The description adds no extra meaning about paging defaults or the 'vendor filter expression' syntax, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The fragment 'Switch stacks configured on the current site' identifies the resource and the scope, so an agent can infer a listing operation. But it omits the verb and never distinguishes itself from the sibling unifi_net_get_switch_stack, which returns a single stack. Purpose is recognizable but not sharp.

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 when-to-use guidance at all: nothing says to call this to discover stack IDs before calling unifi_net_get_switch_stack, and no exclusions or alternatives are named. The agent must infer usage from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_list_traffic_listsList traffic matching listsB
Read-onlyIdempotent

Lists all traffic matching lists configured on the current site.

NameRequiredDescriptionDefault
limitNoItems per page, at most 200 (vendor default applies when unset)
filterNoVendor filter expression
offsetNoNumber of items to skip (vendor default 0)

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered. The description only adds the site scoping, and says nothing about pagination behavior despite three paging/filter parameters.

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?

One front-loaded sentence with no wasted words. Efficient, though at this size there was room to add routing or paging information without bloat.

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?

For a simple read-only list with fully documented optional params and no output schema, the description is minimally adequate. It does not mention that results are paginated or what a traffic matching list shape looks like, which would help an agent plan calls.

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% – limit, filter and offset each carry their own descriptions including the 200 cap and vendor defaults. The description adds nothing beyond the schema, so the baseline 3 applies.

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?

States a specific verb+resource ('Lists all traffic matching lists') and scopes it to the current site. Distinguishes itself reasonably from the sibling get_traffic_list by being the collection form, though it never says so explicitly.

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 indication of when to use this versus unifi_net_get_traffic_list, unifi_gen_gettrafficmatchinglists, or the create/update/delete traffic-list siblings. The agent has to infer that this is the read-only enumeration path.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_list_vouchersList vouchersC
Read-onlyIdempotent

Hotspot vouchers configured on the current site.

NameRequiredDescriptionDefault
limitNoItems per page, at most 1000 (vendor default applies when unset)
filterNoVendor filter expression
offsetNoNumber of items to skip (vendor default 0)

TDQS

C2.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so safety is covered. The description adds only the site-scoping fact; it says nothing about pagination behaviour, result ordering, or the practical consequence of the limit/offset defaults despite being a paginated list endpoint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single fragment with no wasted words, but it is so terse that it omits the action verb and reads as a label rather than instructions. Brevity here costs information rather than demonstrating economy of expression.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With three optional parameters, no output schema, and no return-value documentation anywhere else, the description should say what a voucher record contains or how results are paged. Instead it leaves the agent to infer everything beyond the resource name and site 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 description coverage is 100% and all three parameters (limit, filter, offset) are documented with their vendor defaults in the schema itself. The description adds no additional meaning about filter expression syntax or paging strategy, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description is a noun phrase naming the resource and its scope ('Hotspot vouchers configured on the current site'), but supplies no verb of its own — the 'list' action comes only from the title. It also does not distinguish itself from voucher-reading siblings such as unifi_net_get_voucher or unifi_gen_getvouchers.

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?

There is no statement of when to use this tool versus the singular get_voucher or the gen_* voucher list equivalents, and no prerequisites or exclusions are given. The agent must infer that this enumerates all vouchers on the active site.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_list_vpn_serversList VPN serversC
Read-onlyIdempotent

VPN servers configured on the current site.

NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is covered. The description adds the useful constraint that results are limited to the current site, but says nothing about pagination, result volume, or what a VPN server record contains. With annotations carrying the behavioral burden, this is adequate but thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single front-loaded sentence with no wasted words, but that brevity is under-specification rather than economy. Nothing is padded, yet nothing is elaborated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list tool with three undocumented parameters and no output schema, the description should explain paging and filter behavior and what fields a VPN server record exposes. Only the site scoping is conveyed, leaving the agent guessing about how to page through or narrow results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All three parameters (limit, filter, offset) have zero schema description coverage, and the description adds nothing — no filter syntax, no default or maximum page size, no offset meaning. The description does not compensate for a 0% coverage gap at all.

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 names a specific resource (VPN servers) and scopes it to the current site, which implicitly separates it from the sibling unifi_net_list_site_to_site_vpn tunnels. It lacks an explicit verb and does not explicitly call out the sibling, keeping it short of a 5.

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?

There is no statement of when to use this tool versus alternatives; the nearest sibling, unifi_net_list_site_to_site_vpn, is never named. The only guidance is the implicit site scope, which the agent must infer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_list_wansList WANsB
Read-onlyIdempotent

WAN interfaces configured on the current site.

NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered by structured data. The description's one contribution is that results are site-scoped rather than global, which is genuinely useful context; it says nothing about pagination defaults, result ordering, or what a WAN record contains.

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?

A single front-loaded sentence fragment with no filler or repetition. It is efficient, though its brevity is partly under-specification rather than disciplined compression.

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?

For a read-only list tool with full annotation coverage and no output schema, the minimal contract is met, but the description omits the pagination model and the filter language that the undocumented schema leaves entirely unexplained. An agent can call it blindly but cannot call it precisely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All three parameters (limit, filter, offset) have zero schema description coverage, and the description does not mention any of them. The UniFi filter string syntax and the default/maximum page size behavior are non-obvious, and neither the schema nor the description explains them, so the agent is left to guess.

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 names a specific resource (WAN interfaces) and a scope (configured on the current site), which tells an agent exactly what the call enumerates. It does not contrast itself with the near-duplicate sibling unifi_gen_getwansoverviewpage or with unifi_net_list_networks, so the listing verb is only implied by the tool name rather than stated.

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?

There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as the WAN overview page sibling or the raw request escape hatch. The agent must infer that this is for reading WAN configs and not for editing them, which is only recoverable from the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_list_wifiList WiFi broadcastsD
Read-onlyIdempotent

WLAN broadcasts.

NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo

TDQS

D1.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and open-world behavior. The description adds no behavioral context beyond that, such as pagination behavior, filtering semantics, or what a WLAN broadcast record represents.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The fragment is short, but it is under-specified rather than economical. It lacks a verb, scope, and any structural cues that would help an agent front-load the tool's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list endpoint with pagination and filtering parameters, no output schema, and no parameter descriptions, the definition leaves out purpose scope, filtering behavior, and result shape. The annotations cover safety, but the description does not compensate for the schema gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All three parameters (limit, filter, offset) have 0% schema description coverage, and the description mentions none of them. It provides no help on pagination limits, filter syntax, or offset behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description is a two-word noun phrase, 'WLAN broadcasts,' that essentially restates the resource in the title without stating the list operation or scope. It does not distinguish this tool from siblings such as unifi_net_get_wifi or unifi_gen_getwifibroadcastpage.

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?

There is no guidance on when to use this tool, when not to use it, or which sibling to choose for single Wi-Fi lookups, page views, or management operations. The agent must infer everything from the name and title.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_patch_firewall_policyPatch firewall policyB
DestructiveIdempotent

Partially updates an existing firewall policy (PATCH semantics).

NameRequiredDescriptionDefault
idYes
bodyNo
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered. The description adds genuine context by stating PATCH semantics, meaning unspecified fields are preserved rather than reset. However it omits the critical fact that without confirm="YES" the call is only a preview — that behavior is discoverable only from the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single well-formed sentence with the key distinction front-loaded. The '(PATCH semantics)' parenthetical is mildly redundant with 'partially updates' but still helps an agent reason about partial payloads.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a destructive mutation with no output schema and only 50% schema coverage, yet the description omits the two-stage preview/apply behavior (confirm="YES" required to actually write) and says nothing about what a patch returns. As written, an agent could believe a bare call applies changes when it only produces a preview.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50% and the two most important parameters (id, body) have no schema descriptions at all. 'Partially updates' weakly implies body need only contain changed fields, but the description never explains the id, what body accepts, or the interaction between confirm and dry_run.

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?

States a specific verb phrase ('partially updates') and resource ('existing firewall policy'), and the PATCH parenthetical implies the difference from a full update. It does not name the sibling tool unifi_net_update_firewall_policy explicitly, but the partial-vs-full distinction is clear enough to separate them.

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 word 'partially' implies when this tool is appropriate (only some fields change), but there is no explicit when-to-use or when-not guidance versus unifi_net_update_firewall_policy, and no mention of the confirmation/preview workflow that governs whether anything is actually applied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_port_actionExecute switch port actionC
Destructive

Action on a switch port. Vendor value: POWER_CYCLE (PoE power-cycle; "power-cycle" is mapped).

NameRequiredDescriptionDefault
bodyNoExtra action payload; its `action` key is ignored, `action` above wins
actionYese.g. "POWER_CYCLE"
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.
portIdxYes
deviceIdYes

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true, idempotentHint=false and openWorldHint=true, so the risk profile is covered. The description adds the useful vendor literal mapping (POWER_CYCLE, with "power-cycle" accepted as an alias), but says nothing about the confirm/preview gate or what state change the port ends up in, which is the key behavioral context for a destructive port action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two terse fragments with no padding, so it is efficient. But the phrasing "power-cycle is mapped" is cryptic and the brevity comes at the cost of missing essentials rather than from tight editing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a destructive, non-idempotent port mutation with no output schema, and the description never mentions that omitting confirm="YES" yields only a preview. For a tool that power-cycles hardware, that safety-relevant behavior should appear in prose, not be discoverable only by reading the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%, and the schema itself documents confirm, dry_run, and body precedence well. The description only enriches the action parameter by naming POWER_CYCLE and its alias; deviceId and portIdx remain undocumented in both places despite being required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Action on a switch port" is essentially the tool name restated, with the only concrete content being the POWER_CYCLE vendor literal. It does not distinguish this tool from close siblings like unifi_gen_executeportaction, unifi_net_device_action, or unifi_net_reboot_device, leaving the agent to infer that this one is port-scoped PoE control.

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 when-to-use guidance, no prerequisites (e.g. that the device must be an adopted switch with a PoE port), and no pointer to alternatives. The only actionable hint is the accepted action value, which is invocation detail rather than selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_reboot_deviceReboot deviceC
Destructive

Convenience wrapper over device_action with action=RESTART.

NameRequiredDescriptionDefault
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.
deviceIdYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is known. The description adds nothing beyond a pointer to the underlying tool: it doesn't mention that the device goes offline, that confirmation is required to actually apply, or that the tool is disruptive to connected clients.

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?

A single short sentence with no filler, and the key fact (the underlying action) is front-loaded. It is efficient, though arguably too terse given what is omitted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a destructive, non-idempotent, open-world mutation with no output schema and an undocumented required deviceId. The description does nothing to fill those gaps — no preview semantics, no consequence disclosure, no identifier sourcing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%; the confirm and dry_run parameters are documented in the schema, but deviceId has no description anywhere and the description adds no parameter meaning. It could have clarified that deviceId comes from list_devices or get_device, but adds nothing beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the tool as a wrapper over device_action with action=RESTART, which pins down the operation and its relationship to the sibling. However, it never says in its own words that it reboots a device or what 'device' scope means, relying on the tool name and sibling knowledge to complete the picture.

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?

By naming device_action with action=RESTART, it implies 'use this instead of device_action when you want a restart,' which is implicit routing rather than stated guidance. There is no statement about when not to use it, prerequisites, or what the preview/dry-run path means for choosing this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_remove_deviceRemove (unadopt) deviceC
DestructiveIdempotent

Removes an adopted device from the site.

NameRequiredDescriptionDefault
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.
deviceIdYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered structurally. The description adds nothing beyond that — it does not explain the confirm/preview gate, that dry_run exists, or what happens to the device's configuration and history after removal.

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?

A single front-loaded sentence with zero waste — well structured, though the brevity crosses into under-specification for a destructive operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation with no output schema and a required confirm token plus dry_run preview mode, the description explains almost none of the workflow. An agent would not know from the description that omitting confirm yields a preview rather than performing the removal.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%: confirm and dry_run are documented in the schema, but deviceId carries no description, and the tool description does nothing to clarify what identifier form is expected (MAC, ID, etc.). The description adds no parameter meaning at all.

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 states a specific verb and resource ("Removes an adopted device") and the title adds the crucial framing "unadopt", which separates it from device_action or reboot_device. However, the description body itself offers no explicit differentiation from the many sibling device 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?

There is no guidance on when to use this versus unifi_net_device_action, unifi_gen_removedevice, or unifi_net_adopt_devices, and no mention of prerequisites such as the device needing to be offline or unadopted first. The agent must infer everything from the verb.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_reorder_acl_rulesReorder ACL rulesC
DestructiveIdempotent

Sets the ordering of ACL rules on the current site.

NameRequiredDescriptionDefault
bodyNoACL rule ordering payload
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered structurally. The description adds only the site scoping; it does not disclose the confirm="YES" / dry_run preview gate (left entirely to the schema) or whether omitted rules lose their position. With annotations doing the heavy lifting, this is a minimal contribution rather than a 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?

One front-loaded sentence with no filler and no repetition of the title. It is efficient, though the brevity borders on under-specification for a destructive mutation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, open-world mutation with no output schema, the description says nothing about what the ordering payload must contain (all rule IDs? partial?), what happens to rules not listed, or that a preview is returned unless confirm is supplied. The schema covers the two flags, but the core mutation semantics remain unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both confirm and dry_run are documented inline, including the preview fallback. The description contributes nothing beyond that, so the baseline of 3 applies; the opaque `body` payload is undocumented in both places, which is a real gap but not a description-specific failure.

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?

Specific verb+resource+scope: "Sets the ordering of ACL rules on the current site." The resource (ACL rules) distinguishes it from the sibling reorder tools (unifi_net_reorder_firewall_policies) and from the read counterpart unifi_net_get_acl_rule_ordering. It stops short of saying what the ordering payload is or that the whole ordering is replaced.

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 when-to-use guidance and no alternatives named — an agent must infer on its own that unifi_net_get_acl_rule_ordering should be called first to learn the current order, and that unifi_net_reorder_firewall_policies is a different resource. Nothing in the description hints at the preview-vs-apply workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_reorder_firewall_policiesReorder firewall policiesC
DestructiveIdempotent

Sets the ordering of firewall policies on the current site.

NameRequiredDescriptionDefault
bodyNoPolicy ordering payload
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations flag destructiveHint=true and idempotentHint=true, but the description says nothing about what reordering affects (policy evaluation precedence) or that a preview is returned unless confirm='YES'. The safety-critical preview behavior lives only in the schema, so the description adds no behavioral context for a destructive mutation.

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?

A single front-loaded sentence with no filler. It is well-formed but so short that it omits information the tool's destructive nature warrants.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, open-world mutation with no output schema, the description should mention the preview/confirm gate and the operational impact of ordering. As written it leaves the agent to discover both from the schema alone.

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 confirm and dry_run are already documented in the schema. The description does not elaborate on the shape of the 'body' ordering payload, so it neither helps nor hurts beyond baseline.

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?

States a specific verb ('Sets the ordering'), resource ('firewall policies'), and scope ('current site'), which is enough for an agent to identify it. It does not differentiate from the read-side sibling unifi_net_get_firewall_policy_ordering or from the generic updatefirewallpolicyordering counterpart.

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 rather than update_firewall_policy or get_firewall_policy_ordering, and no mention of the required confirm/preview workflow. The agent must infer usage entirely from the schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_unblock_clientUnblock clientA
DestructiveIdempotent

Not supported: the UniFi Network API defines no unblock action for clients, so this tool returns an error and sends nothing. Kept for compatibility.

NameRequiredDescriptionDefault
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.
clientIdYes

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description usefully discloses that nothing is sent and that the call fails, which is real behavioral context. However, this directly conflicts with the annotations (destructiveHint: true, readOnlyHint: false), so an agent cannot reconcile whether the call mutates state or is a no-op, which is precisely the kind of conflict that causes wrong tool selection.

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?

A single front-loaded sentence beginning with 'Not supported' plus the consequence and the reason it still exists. Nothing is wasted and the critical warning comes first.

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 three-parameter stub with no output schema, the description covers the essentials: no API action, error result, no side effects, kept for compatibility. It could state what the error response looks like so an agent can recognize the expected failure, but otherwise it is 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 description coverage is 67%: confirm and dry_run are documented in the schema, clientId is not. The description adds the meaningful point that no parameter has any effect because nothing is sent, which neutralizes the undocumented clientId, but it never references any parameter by name.

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, unambiguous purpose: this tool exists but performs no unblock action, returns an error, and sends nothing. That instantly distinguishes it from real mutation siblings such as unifi_net_block_client or unifi_net_client_action, which is exactly the differentiator an agent needs.

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 effectively tells the agent never to use this tool for a real unblock because the API has no such action, which is a clear usage exclusion. It stops short of naming the correct alternative (e.g. unifi_net_block_client or unifi_net_client_action) for reverting a block, leaving that inference to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_update_acl_ruleUpdate ACL ruleC
DestructiveIdempotent

Updates an existing ACL rule on the current site (full replacement).

NameRequiredDescriptionDefault
idYes
bodyNo
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is known. The description adds one genuinely useful trait beyond them: '(full replacement)', warning that omitted fields are overwritten rather than preserved. It does not explain what gets reset, or that without confirm=YES the call only previews.

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?

A single front-loaded sentence with no filler. It is efficient, but its brevity is achieved by omitting rather than by compression.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation with no output schema, an untyped body parameter, and a confirm/dry-run gate, the description is too thin. It never covers payload shape, the two-step preview-then-apply flow, or the effect of a full replacement on existing rule fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%, and the uncovered half is the critical one: 'body' is an untyped object with no description anywhere, so the agent has no idea what fields an ACL rule body requires. The description only indirectly implies 'id' is the ACL rule identifier and says nothing about body.

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?

Specific verb ('Updates') plus resource ('an existing ACL rule') and scope ('current site'). The '(full replacement)' qualifier is a meaningful distinction from a partial/patch update, though no sibling is named explicitly.

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?

There is no statement of when to use this versus unifi_net_create_acl_rule, unifi_net_delete_acl_rule, or the reorder tool, and no prerequisites (rule must already exist, id required). The preview/confirm workflow that gates the mutation is never mentioned in the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_update_dns_policyUpdate DNS policyC
DestructiveIdempotent

Updates an existing DNS policy.

NameRequiredDescriptionDefault
idYes
bodyNo
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is known. The description adds nothing beyond that — it never mentions the confirm gate, dry_run behavior, or what gets overwritten when a policy is replaced. The `body` payload, which carries the actual mutation, is entirely unexplained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence that is front-loaded and free of padding, so there is nothing wasteful. The problem is compression at the cost of content rather than verbosity — the space saved is not spent on the confirm/dry_run/body information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation tool with no output schema, an optional dry_run, a required confirm token, and a completely untyped `body` object, the description delivers nothing an agent needs to invoke it correctly. A caller cannot learn what fields to supply or how to preview safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50% and the `body` property is declared as an untyped empty object, so the description should name at least some of the updatable policy fields. It says nothing about any of the four parameters. It does avoid contradicting the schema, but adds no meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the verb (updates) and the resource (an existing DNS policy), so the agent can distinguish it from create/list/delete/get siblings. However, the sentence is essentially a restatement of the tool name and title, adding no scope detail such as which policy fields can be changed.

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 when-to-use guidance, no prerequisites, and no mention of the sibling tools (create_dns_policy, get_dns_policy, delete_dns_policy) or when to prefer one. It also omits the crucial workflow fact that a mutation requires confirm="YES" and otherwise returns a preview.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_update_firewall_policyUpdate firewall policyC
DestructiveIdempotent

Updates an existing firewall policy (full replacement).

NameRequiredDescriptionDefault
idYes
bodyNo
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered structurally. The description's '(full replacement)' is a genuinely useful behavioral addition — it warns that omitted fields will be overwritten — but it says nothing about the confirmation/preview gate (confirm='YES', dry_run) that governs whether anything is actually applied.

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?

A single front-loaded sentence with no filler, and the most decision-relevant qualifier ('full replacement') is placed where it will be read. It is, however, arguably too terse for a destructive 4-parameter mutation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, open-world mutation with an empty object schema for 'body', the description omits what the payload must contain, what happens to unmentioned fields, and how the preview mode works. The gap left by the unstructured body parameter is not compensated anywhere in the description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50%: 'id' and a completely empty 'body' object are undocumented, while only 'confirm' and 'dry_run' carry schema descriptions. With the payload shape for a firewall policy entirely unspecified, the description should at minimum state that 'body' must contain the complete policy, but it does not.

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?

States a specific verb (Updates) and resource (firewall policy) scoped to an existing policy, and the parenthetical '(full replacement)' meaningfully separates it from the patch sibling. It does not name unifi_net_patch_firewall_policy explicitly, so an agent must infer which to pick.

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 statement of when to prefer this over unifi_net_patch_firewall_policy or unifi_gen_updatefirewallpolicy, and no mention of prerequisites such as needing the full policy body or the confirmation workflow. The only guidance is the implicit '(full replacement)' hint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_update_firewall_zoneUpdate firewall zoneC
DestructiveIdempotent

Updates an existing firewall zone.

NameRequiredDescriptionDefault
idYes
bodyNo
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

C2.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is known. The description adds zero context — notably it never mentions that the call is destructive, that a 'confirm: YES' is required to actually apply changes, or that omitting it returns a preview. This is a mutation tool where that behavioral note would be most valuable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single clean sentence with the verb front-loaded and no filler, but its brevity comes from omission rather than economy — there is nothing to be concise about.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation with an undocumented free-form body, no output schema, and a preview/confirm mechanism, the description is far too thin. An agent cannot determine what payload to send or how to safely stage the change from this text alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50% and the 'body' parameter is an untyped empty object with no documentation anywhere. The description does not explain what the body should contain (which zone properties are updatable) or what 'id' refers to, so it fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description merely restates the tool name and title ('Update firewall zone' → 'Updates an existing firewall zone') with no additional specificity about what a zone is, which fields can change, or how it differs from the near-identical sibling unifi_gen_updatefirewallzone. An agent learns nothing it could not infer from the identifier alone.

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 versus unifi_gen_updatefirewallzone, unifi_net_create_firewall_zone, or unifi_net_patch_firewall_policy. No prerequisites, no mention of the preview/confirm workflow that the schema exposes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_update_networkUpdate networkC
DestructiveIdempotent

Updates an existing network.

NameRequiredDescriptionDefault
idYes
bodyNo
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

C2.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that: it never mentions that changes are destructive, that a network object is replaced vs patched, or that a confirmation token gates the write.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single grammatical sentence with no filler, but it is under-specified rather than truly concise — there is essentially nothing to front-load or trim.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A destructive mutation with an undocumented free-form body, no output schema, and no stated response behavior. The description leaves too much of the calling contract unresolved for an agent to act safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50% and the uncovered piece is the critical one: 'body' is an untyped free-form object with no description anywhere. The description does not say what fields the body accepts, so an agent cannot construct an update payload from this definition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description restates the title almost verbatim ('Updates an existing network'), giving the verb and resource but no scope, fields, or differentiation from the many sibling network/wifi/firewall update tools, notably unifi_gen_updatenetwork. An agent learns nothing beyond what the name already conveys.

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 when-to-use or when-not-to-use guidance, no mention of the alternative unifi_gen_updatenetwork sibling, and no prerequisites. The only routing hint in the whole definition comes from the schema's confirm/dry_run descriptions, not the description itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_update_traffic_listUpdate traffic matching listC
DestructiveIdempotent

Updates an existing traffic matching list.

NameRequiredDescriptionDefault
idYes
bodyNo
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=true and openWorldHint=true, so the description carries a lower burden. It still adds nothing: no mention that this overwrites existing list configuration, no permission/auth requirements, and no indication of what happens to fields omitted from the body.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single short sentence with no waste, but the brevity comes from under-specification rather than efficiency. There is no front-loaded scope or constraint to anchor the call.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, open-world mutation with an undocumented free-form body and no output schema, the description is far too thin. An agent cannot know what payload shape to construct, whether the update replaces or merges, or how the preview/confirm flow relates to the actual write (that detail lives only in the schema).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50%, and the description contributes no parameter information at all. The opaque, untyped `body` parameter is the most consequential gap for an update tool — nothing tells the agent what fields it can or must contain — and the required `id` is likewise unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The single sentence names a verb and resource ("Updates an existing traffic matching list"), so an agent can tell it apart from create/delete/list siblings by verb alone. However, it adds nothing beyond the title and gives no indication of which list aspects are updatable or what the update semantics are.

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?

There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as create_traffic_list or the get/list counterparts. The only routing signal is the word "existing", which implies the list must already exist but is not stated as a requirement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_net_update_wifiUpdate WiFi broadcastC
DestructiveIdempotent

Updates an existing WLAN.

NameRequiredDescriptionDefault
idYes
bodyNo
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered structurally. The description adds nothing beyond that — it never says what a WLAN update can overwrite, that changes are destructive to live broadcast settings, or that a preview is returned unless confirmed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short, front-loaded sentence with no filler — nothing to trim. But the brevity is under-specification rather than efficiency, since a single sentence cannot carry the mutation semantics this tool needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a destructive mutation with an opaque 'body' object, a confirm/dry-run preview mechanism, and no output schema. The description should explain the payload shape and preview behavior but covers none of it, leaving the agent unable to call the tool correctly from the description alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only 50% of parameters are documented in the schema: 'confirm' and 'dry_run' have descriptions, but 'id' and especially 'body' (an empty, unconstrained schema) are undocumented. The description provides zero parameter information to compensate, so the agent has no idea what fields belong in 'body' for a WiFi update.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The sentence gives a specific verb (updates) and resource (an existing WLAN), so the basic operation is clear. However, it offers no differentiation from closely related siblings such as unifi_gen_updatewifibroadcast, unifi_net_create_wifi, or unifi_net_delete_wifi, and it uses 'WLAN' where the title says 'WiFi broadcast', leaving the agent to infer they are the same object.

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?

There is no guidance on when to use this tool versus the generic unifi_gen_updatewifibroadcast or unifi_raw_request. Nothing tells the agent that an existing WLAN id is required or that a preview/confirm flow exists; the only hints live in the schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_raw_requestUniFi raw requestA
Destructive

Generic escape hatch: executes ANY HTTP method against api.ui.com{path}. Use when no dedicated tool exists. Auth, retry, error parsing and pagination hints are handled automatically.

NameRequiredDescriptionDefault
bodyNoJSON body for POST/PUT/PATCH
pathYesRelative path beginning with "/v1/…" against the configured API base (api.ui.com). Example: "/v1/hosts".
queryNoQuery parameters as flat string map
methodYesHTTP method
confirmNo"YES" to apply; without it the tool returns a preview.
dry_runNotrue: preview only, nothing is sent.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and openWorldHint=true, so the safety profile is known. The description adds genuinely useful behavior beyond that: auth, retry, error parsing, and pagination hints are handled automatically, which tells the agent it need not manage tokens or backoff. It does not mention the preview/confirm gate or rate limits, though the schema documents confirm and dry_run.

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 short sentences, zero padding, with the escape-hatch framing and the target endpoint front-loaded. Each clause carries distinct information: what it does, when to use it, and what is automated.

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 an open-world, destructive, arbitrary-method tool with six rich parameters and no output schema, the definition covers purpose, routing, and automated plumbing. Gaps are minor: it does not say how unknown paths or API errors surface, nor does it flag that the destructive hint means real mutations when confirm is supplied.

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%, including the path pattern, method enum, confirm constant, and dry_run preview semantics, so the schema carries the parameter burden. The description only adds the '{path}' composition hint. Baseline 3 applies where structured data does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: executes any HTTP method against api.ui.com{path}. It also positions itself against the dedicated siblings with 'Use when no dedicated tool exists', so an agent can distinguish it from the ~140 purpose-built tools immediately.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when no dedicated tool exists' is a clear routing rule that covers the main decision an agent faces with this tool family. It stops short of guidance on verifying a path, choosing preview versus apply, or cautioning that the escape hatch bypasses validation, so the when-not side is thinner than the when.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_sm_get_hostGet host detailB
Read-onlyIdempotent

Account-level: detail for a single host (console).

NameRequiredDescriptionDefault
idYesHost id (consoleId from list_hosts)

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so safety behavior is covered. The description adds the account-level scope and console semantics, but does not explain authentication needs, return shape, or whether missing IDs error.

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?

It is a single compact fragment with the resource and scope front-loaded and no wasted words. The terseness borders on under-specification, but it is structurally efficient.

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?

For a simple one-parameter read tool, annotations and schema carry most of the burden, and the description gives the essential purpose. However, with a nearly identical sibling like unifi_gen_gethostbyid present, the definition is not complete enough to prevent wrong-tool 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 coverage is 100%, and the id parameter already documents that it is the consoleId from list_hosts. The description adds no parameter syntax or validation detail beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource and scope: detail for a single host at account level, with 'console' clarifying what a host is. It does not, however, distinguish this tool from the very similar sibling unifi_gen_gethostbyid.

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?

There is no explicit guidance on when to use this tool instead of unifi_gen_gethostbyid or after unifi_sm_list_hosts. The 'Account-level' note gives context but does not state prerequisites, alternatives, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_sm_get_isp_metricsGet ISP metricsC
Read-onlyIdempotent

ISP metrics for a granularity bucket.

NameRequiredDescriptionDefault
typeYesGranularity
durationNoTime range ending now: 24h, 7d or 30d (vendor values). Do not combine with beginTimestamp or endTimestamp; the API decides how it treats both.
endTimestampNoISO timestamp (end)
beginTimestampNoISO timestamp (begin)

TDQS

C2.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds nothing beyond that: no indication of what the returned metrics contain, no cardinality or volume expectations for a time-series call, and no note that this is a read-only observation endpoint. Since annotations do the heavy lifting, a low-mid score reflects that the description contributes essentially zero additional behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

At four words it is technically concise, but it is under-specified rather than economical: it is a fragment with no front-loaded statement of what the tool returns. Brevity here costs clarity rather than gaining it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With four parameters, no output schema, and a time-series subject matter, the description should at minimum say what metrics are returned and how granularity/time-range interact. It says nothing about return values and does not resolve the duration-versus-timestamp tension beyond what the schema already spells out.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema itself documents each parameter, including the important warning not to combine duration with beginTimestamp/endTimestamp. The description only echoes the 'granularity bucket' idea tied to the type parameter, adding nothing the schema lacks, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description is a noun phrase fragment that essentially restates the title 'Get ISP metrics' with the addition of 'for a granularity bucket'. It never names a verb or the resource scope, and it does nothing to distinguish this tool from the near-identical siblings unifi_sm_query_isp_metrics, unifi_gen_getispmetrics and unifi_gen_queryispmetrics, which an agent cannot differentiate from this text.

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?

There is no when-to-use guidance and no mention of the extremely close sibling unifi_sm_query_isp_metrics, so an agent has no basis for choosing among them. Only the vaguest implied context ('metrics for a bucket') suggests this retrieves bucketed metrics.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_sm_get_sdwan_configGet SD-WAN configurationC
Read-onlyIdempotent

Get a single SD-WAN configuration.

NameRequiredDescriptionDefault
idYesSD-WAN config id

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered. The description adds nothing further — no note on what is returned when the id is unknown, no caching or error behavior.

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?

One short, front-loaded sentence with zero filler. It is efficient, though the terseness means the sentence carries almost no information beyond the tool name.

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?

For a simple single-resource read with one required, schema-documented parameter, the minimum is met. But with no output schema, the description could have described the returned configuration shape or error behavior and does not.

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?

With a single parameter at 100% schema description coverage ("SD-WAN config id"), the schema carries the semantics. The description adds no format hints or sourcing guidance for the id, so this sits at the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The verb+resource ("Get a single SD-WAN configuration") is clear, and "single" distinguishes it from the list variant. However, it does not distinguish this from close siblings such as unifi_sm_get_sdwan_config_status or unifi_gen_getsdwanconfigbyid, so an agent gets only partial routing signal.

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?

There is no statement of when to use this tool versus unifi_sm_list_sdwan_configs or the status sibling, nor any hint that the id typically comes from the list call. Nothing beyond the name implies usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_sm_get_sdwan_config_statusGet SD-WAN configuration statusC
Read-onlyIdempotent

Status of a SD-WAN configuration.

NameRequiredDescriptionDefault
idYes

TDQS

C2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false. The description adds no behavioral detail beyond the word "status", such as what status is returned, whether it is live or desired configuration state, or any auth/call constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely short, but this is under-specification rather than useful conciseness. It is a sentence fragment and does not front-load any actionable context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with one required parameter and no output schema, the description is still too thin. It leaves unclear what status information is returned and how the configuration id is obtained, so an agent must infer too much.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must explain the single required `id` parameter. It only implies the id refers to a SD-WAN configuration and gives no format, source, or example, leaving the parameter under-specified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description "Status of a SD-WAN configuration" essentially restates the title without a clear verb or scope. It does not distinguish this tool from siblings such as unifi_sm_get_sdwan_config, unifi_sm_list_sdwan_configs, or unifi_gen_getsdwanconfigstatus.

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?

There is no guidance on when to use this tool versus alternatives. No prerequisites, exclusions, or sibling routing are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_sm_identityResolved identityB
Read-onlyIdempotent

Returns consoleId, networkSiteId, siteManagerSiteId: useful for sanity checks.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds the concrete return fields, which matters because there is no output schema, but it says nothing about failure modes (unauthenticated, no site selected) or whether IDs are stable across consoles.

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?

A single front-loaded sentence with the returned fields listed immediately; no padding. The colon-fragment phrasing and the trailing "useful for sanity checks" are the only rough edges.

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?

The tool is trivial to invoke (no args), and listing the three returned IDs partly compensates for the absent output schema. However, an agent gets no explanation of what these IDs are for, how they differ between the network and site-manager APIs, or what an empty/error response would look like.

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?

Zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. The schema is empty and fully consistent with the description.

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?

States a specific output (consoleId, networkSiteId, siteManagerSiteId) that effectively defines the tool as resolving the current console/site identity triple. It is clear what it returns, but it never distinguishes itself from identity-adjacent siblings such as unifi_net_get_info or unifi_gen_getinfo.

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?

"Useful for sanity checks" is the only usage hint and it is vague. No when-to-use condition, no prerequisites (e.g. requires an authenticated console/site context), and no alternative named among the many get_info-style siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_sm_list_devicesList devices (account)A
Read-onlyIdempotent

Account-level devices view (not the deep Network-API per-site list).

NameRequiredDescriptionDefault
timeNoLast processed timestamp of devices (RFC 3339), as in the vendor docs
hostIdsNoOnly devices of these host (console) ids
pageSizeNoNumber of items per page
nextTokenNoToken from the previous page (`nextToken` of the response) for the next page

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds the account-level scope and contrast, but does not disclose pagination behavior, authentication needs, or return characteristics.

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?

It is a single short sentence with the scope and contrast front-loaded. There is no wasted text, and the parenthetical efficiently disambiguates the tool from the per-site alternative.

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?

For a list tool with no required parameters, complete schema descriptions, and rich annotations, the description covers its scope and disambiguation. However, with no output schema, it omits any indication of return content or pagination behavior, leaving a modest gap.

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 descriptions for time, hostIds, pageSize, and nextToken. The description adds no parameter-level meaning beyond what the schema already provides, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies an account-level devices view and explicitly contrasts it with the deep Network-API per-site device list. The verb is implied by 'view' rather than stated as 'list', but the resource and scope are clear enough to distinguish it from the per-site sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit exclusion ('not the deep Network-API per-site list'), which signals when the per-site sibling is more appropriate. It does not name that sibling directly or state positive usage conditions, so it falls short of full when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_sm_list_hostsList hostsB
Read-onlyIdempotent

Account-level: list all UniFi consoles linked to this Site Manager account.

NameRequiredDescriptionDefault
pageSizeNoNumber of items per page
nextTokenNoToken from the previous page (`nextToken` of the response) for the next page

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, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered structurally. The description adds the account-level scope, but says nothing about pagination behavior or result ordering beyond what the schema implies.

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?

A single short sentence with the scope front-loaded and no wasted words. It is efficient, though it is too thin to structure as anything more than one scope clause.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only paginated list with annotations covering safety and a fully documented schema, the description supplies the essential account-level scope and the object being listed. No output schema exists, but the description does indicate the return subject (consoles), which is adequate here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters (pageSize, nextToken) are documented in the schema, so the baseline is 3. The description contributes no additional parameter meaning, such as default page size or token lifetime.

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?

States a specific verb (list) and resource (all UniFi consoles) scoped to a Site Manager account, which meaningfully separates it from site-level siblings like unifi_gen_listhosts. It does not name an alternative outright, so it stops short of a 5.

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 only usage signal is the implicit 'Account-level' scoping; there is no explicit when-to-use, when-not-to-use, or direction to a sibling such as unifi_sm_get_host for a single console. An agent must infer the selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_sm_list_sdwan_configsList SD-WAN configurationsC
Read-onlyIdempotent

Account-level SD-WAN configurations.

NameRequiredDescriptionDefault

No parameters

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered elsewhere. The description adds only the 'account-level' scope and says nothing about pagination, result size, or whether an empty result is possible for accounts without SD-WAN — for an open-world read that is the kind of context worth adding.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is extremely short and front-loaded, but it is a noun-phrase fragment rather than a sentence, and its brevity comes from under-specification rather than tight editing. Nothing is wasted, yet nothing is earned either.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, no parameters, and heavy sibling overlap (unifi_gen_listsdwanconfigs, unifi_sm_get_sdwan_config, unifi_sm_get_sdwan_config_status), the description should at minimum say what is returned and how it differs from those siblings. Annotations cover safety, but the selection-critical context is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters and the schema is empty at 100% coverage, so there is nothing for the description to disambiguate. Baseline 4 applies: no parameter semantics are needed here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The fragment "Account-level SD-WAN configurations" names the resource and adds a scope qualifier (account-level) that the title lacks, implying a list. But it omits a verb entirely, so the agent must infer 'list' from the tool name, and it does not distinguish itself from close siblings like unifi_sm_get_sdwan_config or unifi_gen_listsdwanconfigs.

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?

There is no guidance on when to use this versus unifi_sm_get_sdwan_config (single config), unifi_sm_get_sdwan_config_status, or unifi_gen_listsdwanconfigs, despite multiple near-identical siblings. The only hint is the implicit 'account-level' scope, which is left for the agent to interpret.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_sm_list_sitesList Site Manager sitesC
Read-onlyIdempotent

Account-level sites.

NameRequiredDescriptionDefault
pageSizeNoNumber of items per page
nextTokenNoToken from the previous page (`nextToken` of the response) for the next page
includeStatisticsNotrue: keep the `statistics` object of each site (device and client counts, WAN issue lists; can be very large). Default: omitted.

TDQS

C2.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is fully covered. The description adds nothing beyond that: it does not mention that results are paginated, that nextToken must be followed, or that statistics can be very large (both only in the schema). No context beyond structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single three-word fragment with no waste, but that is terseness rather than disciplined conciseness — there is no verb and no front-loaded statement of what the call returns. Nothing needs cutting; something needs adding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a paginated list tool with no output schema and a crowded family of similarly named site/host listing tools, the description leaves the agent without the pagination model or the layer distinction needed to choose and page correctly. The annotations cover safety, but the operational context is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and all three parameters (pageSize, nextToken, includeStatistics) carry rich descriptions, including the size caveat for statistics. The description contributes no parameter meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The fragment 'Account-level sites' does identify the resource and adds a scope qualifier (account-level) that hints at the Site Manager layer rather than a per-network-application layer. But it omits the verb and never names the sibling list tools (unifi_net_list_sites, unifi_gen_listsites) it must be told apart from, so the purpose is only vaguely conveyed.

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?

There is no when-to-use guidance at all: nothing says to prefer this over unifi_net_list_sites or unifi_gen_listsites, and nothing states prerequisites or exclusions. The agent must infer usage purely from the tool name and the words 'account-level'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unifi_sm_query_isp_metricsQuery ISP metricsC
Read-onlyIdempotent

POST a time-window query for ISP metrics.

NameRequiredDescriptionDefault
bodyNoQuery body: see UniFi Site Manager docs for shape.
typeYes

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so safety and idempotency are covered. The description adds only the time-window query framing and does not explain response behavior, rate limits, or body requirements; 'POST' is consistent with a read-only query using a request body.

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?

It is a single front-loaded sentence with no wasted wording. Its brevity is appropriate structurally, though it leaves important usage and parameter context unstated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, a partially documented body parameter, and several sibling ISP metrics tools, the description is too sparse. It does not explain body shape, expected return values, or how this differs from get/query variants.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50%. The enum for type is documented in the schema, and 'time-window' loosely relates to it, but the description does not explain the required body parameter or compensate for the vague 'see docs for shape' schema note.

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 states a specific action and resource: querying ISP metrics over a time window. It is clearer than a tautology, but it does not distinguish this tool from siblings such as unifi_sm_get_isp_metrics or unifi_gen_queryispmetrics.

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?

It implies the tool is used for time-window ISP metric queries, but gives no explicit when-to-use guidance, prerequisites, or alternatives. The agent must infer selection versus the related ISP metrics tools.

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. 169 tool updatesv0.4.0
    • First observedunifi_gen_adoptdevice
    • First observedunifi_gen_createaclrule
    • First observedunifi_gen_creatednspolicy
    • First observedunifi_gen_createfirewallpolicy
    • First observedunifi_gen_createfirewallzone
    • First observedunifi_gen_createnetwork
    • First observedunifi_gen_createtrafficmatchinglist
    • First observedunifi_gen_createvouchers
    • First observedunifi_gen_createwifibroadcast
    • First observedunifi_gen_deleteaclrule
    • First observedunifi_gen_deletednspolicy
    • First observedunifi_gen_deletefirewallpolicy
    • First observedunifi_gen_deletefirewallzone
    • First observedunifi_gen_deletenetwork
    • First observedunifi_gen_deletetrafficmatchinglist
    • First observedunifi_gen_deletevoucher
    • First observedunifi_gen_deletevouchers
    • First observedunifi_gen_deletewifibroadcast
    • First observedunifi_gen_executeadopteddeviceaction
    • First observedunifi_gen_executeconnectedclientaction
    • First observedunifi_gen_executeportaction
    • First observedunifi_gen_getaclrule
    • First observedunifi_gen_getaclruleordering
    • First observedunifi_gen_getaclrulepage
    • First observedunifi_gen_getadopteddevicedetails
    • First observedunifi_gen_getadopteddevicelateststatistics
    • First observedunifi_gen_getadopteddeviceoverviewpage
    • First observedunifi_gen_getconnectedclientdetails
    • First observedunifi_gen_getconnectedclientoverviewpage
    • First observedunifi_gen_getcountries
    • First observedunifi_gen_getdevicetagpage
    • First observedunifi_gen_getdnspolicy
    • First observedunifi_gen_getdnspolicypage
    • First observedunifi_gen_getdpiapplicationcategories
    • First observedunifi_gen_getdpiapplications
    • First observedunifi_gen_getfirewallpolicies
    • First observedunifi_gen_getfirewallpolicy
    • First observedunifi_gen_getfirewallpolicyordering
    • First observedunifi_gen_getfirewallzone
    • First observedunifi_gen_getfirewallzones
    • First observedunifi_gen_gethostbyid
    • First observedunifi_gen_getinfo
    • First observedunifi_gen_getispmetrics
    • First observedunifi_gen_getlag
    • First observedunifi_gen_getlagpage
    • First observedunifi_gen_getmclagdomain
    • First observedunifi_gen_getmclagdomainpage
    • First observedunifi_gen_getnetworkdetails
    • First observedunifi_gen_getnetworkreferences
    • First observedunifi_gen_getnetworksoverviewpage
    • First observedunifi_gen_getpendingdevicepage
    • First observedunifi_gen_getradiusprofileoverviewpage
    • First observedunifi_gen_getsdwanconfigbyid
    • First observedunifi_gen_getsdwanconfigstatus
    • First observedunifi_gen_getsiteoverviewpage
    • First observedunifi_gen_getsitetositevpntunnelpage
    • First observedunifi_gen_getswitchstack
    • First observedunifi_gen_getswitchstackpage
    • First observedunifi_gen_gettrafficmatchinglist
    • First observedunifi_gen_gettrafficmatchinglists
    • First observedunifi_gen_getvoucher
    • First observedunifi_gen_getvouchers
    • First observedunifi_gen_getvpnserverpage
    • First observedunifi_gen_getwansoverviewpage
    • First observedunifi_gen_getwifibroadcastdetails
    • First observedunifi_gen_getwifibroadcastpage
    • First observedunifi_gen_listdevices
    • First observedunifi_gen_listhosts
    • First observedunifi_gen_listsdwanconfigs
    • First observedunifi_gen_listsites
    • First observedunifi_gen_patchfirewallpolicy
    • First observedunifi_gen_queryispmetrics
    • First observedunifi_gen_removedevice
    • First observedunifi_gen_updateaclrule
    • First observedunifi_gen_updateaclruleordering
    • First observedunifi_gen_updatednspolicy
    • First observedunifi_gen_updatefirewallpolicy
    • First observedunifi_gen_updatefirewallpolicyordering
    • First observedunifi_gen_updatefirewallzone
    • First observedunifi_gen_updatenetwork
    • First observedunifi_gen_updatetrafficmatchinglist
    • First observedunifi_gen_updatewifibroadcast
    • First observedunifi_net_adopt_devices
    • First observedunifi_net_block_client
    • First observedunifi_net_client_action
    • First observedunifi_net_create_acl_rule
    • First observedunifi_net_create_dns_policy
    • First observedunifi_net_create_firewall_policy
    • First observedunifi_net_create_firewall_zone
    • First observedunifi_net_create_network
    • First observedunifi_net_create_traffic_list
    • First observedunifi_net_create_vouchers
    • First observedunifi_net_create_wifi
    • First observedunifi_net_delete_acl_rule
    • First observedunifi_net_delete_dns_policy
    • First observedunifi_net_delete_firewall_policy
    • First observedunifi_net_delete_firewall_zone
    • First observedunifi_net_delete_network
    • First observedunifi_net_delete_traffic_list
    • First observedunifi_net_delete_voucher
    • First observedunifi_net_delete_vouchers
    • First observedunifi_net_delete_wifi
    • First observedunifi_net_device_action
    • First observedunifi_net_get_acl_rule
    • First observedunifi_net_get_acl_rule_ordering
    • First observedunifi_net_get_client
    • First observedunifi_net_get_device
    • First observedunifi_net_get_device_stats
    • First observedunifi_net_get_dns_policy
    • First observedunifi_net_get_firewall_policy
    • First observedunifi_net_get_firewall_policy_ordering
    • First observedunifi_net_get_firewall_zone
    • First observedunifi_net_get_info
    • First observedunifi_net_get_lag
    • First observedunifi_net_get_mclag_domain
    • First observedunifi_net_get_network
    • First observedunifi_net_get_network_references
    • First observedunifi_net_get_switch_stack
    • First observedunifi_net_get_traffic_list
    • First observedunifi_net_get_voucher
    • First observedunifi_net_get_wifi
    • First observedunifi_net_list_acl_rules
    • First observedunifi_net_list_clients
    • First observedunifi_net_list_countries
    • First observedunifi_net_list_device_tags
    • First observedunifi_net_list_devices
    • First observedunifi_net_list_dns_policies
    • First observedunifi_net_list_dpi_application_categories
    • First observedunifi_net_list_dpi_applications
    • First observedunifi_net_list_firewall_policies
    • First observedunifi_net_list_firewall_zones
    • First observedunifi_net_list_lags
    • First observedunifi_net_list_mclag_domains
    • First observedunifi_net_list_networks
    • First observedunifi_net_list_pending_devices
    • First observedunifi_net_list_radius_profiles
    • First observedunifi_net_list_site_to_site_vpn
    • First observedunifi_net_list_sites
    • First observedunifi_net_list_switch_stacks
    • First observedunifi_net_list_traffic_lists
    • First observedunifi_net_list_vouchers
    • First observedunifi_net_list_vpn_servers
    • First observedunifi_net_list_wans
    • First observedunifi_net_list_wifi
    • First observedunifi_net_patch_firewall_policy
    • First observedunifi_net_port_action
    • First observedunifi_net_reboot_device
    • First observedunifi_net_remove_device
    • First observedunifi_net_reorder_acl_rules
    • First observedunifi_net_reorder_firewall_policies
    • First observedunifi_net_unblock_client
    • First observedunifi_net_update_acl_rule
    • First observedunifi_net_update_dns_policy
    • First observedunifi_net_update_firewall_policy
    • First observedunifi_net_update_firewall_zone
    • First observedunifi_net_update_network
    • First observedunifi_net_update_traffic_list
    • First observedunifi_net_update_wifi
    • First observedunifi_raw_request
    • First observedunifi_sm_get_host
    • First observedunifi_sm_get_isp_metrics
    • First observedunifi_sm_get_sdwan_config
    • First observedunifi_sm_get_sdwan_config_status
    • First observedunifi_sm_identity
    • First observedunifi_sm_list_devices
    • First observedunifi_sm_list_hosts
    • First observedunifi_sm_list_sdwan_configs
    • First observedunifi_sm_list_sites
    • First observedunifi_sm_query_isp_metrics

TDQS

C2.2/5.0

Scored across 169 tools

Disambiguation2/5

The set contains extensive duplication between curated tools and generated tools, e.g. unifi_net_list_networks vs unifi_gen_getnetworksoverviewpage, unifi_net_get_voucher vs unifi_gen_getvoucher, and multiple voucher/firewall/traffic-list variants. Some tools are also near-overlapping actions, such as unifi_net_device_action, unifi_net_reboot_device, and unifi_gen_executeadopteddeviceaction. An agent can often distinguish by prefix, but many boundaries are confusing.

Naming Consistency2/5

Names mix three families: unifi_net_* snake_case, unifi_sm_* snake_case, and unifi_gen_* concatenated generated endpoint names like unifi_gen_getadopteddeviceoverviewpage. Even within the generated family, verb+resource casing is inconsistent and hard to parse. The surface is not predictable enough for reliable tool selection.

Tool Count1/5

169 tools is far beyond a well-scoped MCP surface and includes many duplicate generated/curated pairs. This volume creates selection noise and maintenance burden rather than a coherent toolkit. The count is an extreme mismatch for practical agent use.

Completeness4/5

Coverage is broad across networks, Wi-Fi, firewall zones/policies, ACL rules, DNS policies, traffic lists, vouchers, devices, clients, SD-WAN, VPN, and ISP metrics, with many CRUD operations. There are notable dead-end compatibility tools such as unifi_net_block_client and unifi_net_unblock_client that intentionally error, and some resources are read-only, but the overall surface is extensive.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Turns your UniFi Network Controller into programmable tools for querying and modifying network settings via MCP.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    A safety-first MCP server for managing UniFi networks, exposing 17 tools for telemetry, diagnostics, and guarded mutations with dry-run previews and confirm requirements.
    16
    MIT