Skip to main content
Glama

UISP MCP Server

MCP server for Ubiquiti UISP's REST API (/nms/api/v2.1) - sites, devices, outages (the alerting surface), the event/audit log, data links, gateways, background tasks, available firmware, and speed tests across a UISP network/ISP-management instance - for AI assistants and the WYRE Conduit gateway.

Authentication

UISP authenticates with a static account token, generated in the UISP console under Settings -> Users -> API tokens (tokens can be issued in read-only or read/write mode - issue a read-only token for this connector). UISP has no shared multi-tenant endpoint: every deployment, including Ubiquiti's own hosted-cloud tier, runs at its own instance FQDN, so this connector requires both a token and a base URL. The token is sent as the x-auth-token header to <base URL>/nms/api/v2.1/.... In gateway mode both arrive per-request via the X-UISP-Api-Key and X-UISP-Base-URL headers; in local/stdio mode they're read once from UISP_API_KEY and UISP_BASE_URL.

Credential scope

Vendor-documented, not independently verified against a live instance (see Verification below): UISP's own console lets a token be issued in "Read Only" or "Read/Write" mode at creation time - a genuine, vendor-supported way to scope a token to reads before it's ever handed to this connector, unlike some vendors in this fleet whose keys always inherit their creating user's full permission set. This connector's own code only ever issues GET requests (see Scope below), but the enforcement of "no writes" for a Read/Write-mode token is UISP's, not this connector's - issuing a Read Only token is the customer's guarantee, not something this connector can force from the outside.

A closely-related finding worth stating plainly: UISP is simultaneously a network-management platform and a lightweight ISP CRM (UCRM) - a Site in this API can carry a linked ucrm.client reference that includes the real customer's name, and uisp_list_site_clients returns customer records. Several tools are classified isAdmin: true specifically for this reason even though they read like plain infrastructure inventory - see Scope below and this connector's entry in Conduit's vendor-config.ts for the full accounting.

Verification

This connector was built directly against UISP's own generated OpenAPI/Swagger specification (title UISP API, swagger: "2.0", basePath: /nms/api/v2.1, securityDefinitions.UserSecurity = the x-auth-token header) - every UISP installation publishes a live Swagger UI at https://<instance>/nms/api-docs/, and this connector's tools were verified one-by-one against that spec's 180 documented GET operations, not against secondary documentation or a naming convention. What it is not is independently verified against a live UISP instance: UISP is deployed per-ISP (self-hosted, or Ubiquiti's hosted-cloud tier requires an active ISP/network-operator account) and no such instance was available in this build environment to exercise a real token end-to-end. This is an environment limitation of the build, not a vendor-side approval gate - the hosted-cloud tier's own signup is genuinely self-serve for an ISP operator.

Related MCP server: UniFi MCP Server

Configuration

Env var

Description

UISP_API_KEY

Account token issued by the UISP console.

UISP_BASE_URL

Base URL of the UISP instance, e.g. https://uisp.example.com.

MCP_TRANSPORT

stdio (default) or http.

AUTH_MODE

env (default, reads the vars above) or gateway (credentials arrive per-request via the X-UISP-Api-Key / X-UISP-Base-URL headers, injected by the Conduit gateway).

CONDUIT_S2S_SECRET

When set, the HTTP transport requires a valid X-Gateway-S2S header (Conduit sidecar auth) on every /mcp request.

LOG_LEVEL

debug | info (default) | warn | error.

Tools

Sites

  • uisp_list_sites - list sites (network locations - sites, endpoints, and clients - each optionally tied to a UCRM client/service record).

  • uisp_get_site - get a single site's detail.

  • uisp_search_sites - search sites/endpoints/clients by name, address, MAC address, or IP address.

  • uisp_list_site_clients - list all client sites belonging to a given (parent) site.

  • uisp_get_site_statistics - get upload/download traffic between a site and its parent site.

  • uisp_get_site_traffic_summary - get a site's total upload/download for a given interval up to now.

Devices

  • uisp_list_devices - list devices (hostname/IP/MAC, status, parent site).

  • uisp_get_device - get a single device's status overview.

  • uisp_get_device_detail - get a device's detail, optionally including interfaces and/or connected stations.

  • uisp_get_device_statistics - get device telemetry (CPU/RAM/signal/temperature/throughput).

  • uisp_list_device_interfaces - list a device's network interfaces, including configured IP addresses.

  • uisp_get_device_by_mac - look up a device by its MAC address.

  • uisp_list_discovered_devices - list devices discovered on the network but not yet added.

Outages

  • uisp_list_outages - list network outages - UISP's alerting surface - filterable by device, type, and in-progress state.

Logs

  • uisp_list_logs - list the UISP event/audit log (logins, device state changes, backups, upgrades).

  • uisp_list_data_links - list data links (the wireless/wired links UISP has mapped between devices and sites).

  • uisp_get_data_link - get a single data link's detail.

  • uisp_list_site_data_links - list data links attached to a given site.

Gateways

  • uisp_list_gateways - list gateways (routers configured as network gateways) and their NetFlow/QoS/suspend configuration.

  • uisp_get_gateway - get a single gateway's detail.

Tasks

  • uisp_list_tasks - list background tasks (firmware upgrades, backups, mass operations) and their status.

  • uisp_get_tasks_in_progress - get the number of tasks currently in progress.

Firmware

  • uisp_list_firmwares - get the firmware versions available to UISP for its supported device models.

Speed Test

  • uisp_get_speed_tests - get detail about running and recent speed tests.

System

  • uisp_get_version - get the UISP version, deployment type, and build info. Useful as a credential/connectivity sanity check.

  • uisp_get_network_statistics - get network-wide statistics (client/site counts, network health, signal/link/ISP scores, outage counts).

  • uisp_get_summary - get badge-count-like values across the instance (unread logs/outages/firmwares, active client/site counts).

Scope

This is a deliberately narrow, read-only v1 surface covering exactly the core NOC/MSP monitoring workflow - site and device inventory, status, telemetry, outages, and the audit log - nothing else. UISP's own OpenAPI spec documents 325 paths (180 of them GET) across a much larger surface: full network/device configuration and provisioning, CRM/billing, user and API-token administration, device credential storage, backups, server administration, and a planning/simulation tool. This connector implements 27 GET operations from that spec, verified one-by-one, and excludes everything else by design, not by oversight.

Hard-excluded (device credential vault) - never implemented: GET /vault/credentials, /vault/credentials/devices, /vault/{deviceId}/credentials - this is literally a store of device login credentials; excluded outright regardless of verb.

Hard-excluded (API token / user / access-group administration - identity and credential management, not network data) - never implemented: GET /token, /token/{tokenId}, /users, /user, /user/totpauth, /access-groups/sites, /access-groups/sites/{groupId}, /nms/keep-alive, /nms/account/login/ubiquiti.

Hard-excluded (backups, restore, and support-bundle downloads - binary/sensitive, and restore is a write-adjacent maintenance action even where the read that feeds it is GET) - never implemented: GET /nms/backups, /nms/backups/{backupId}, /nms/backups/{backupId}/download-token, /nms/downloads/{token}, /nms/maintenance/backup, /nms/maintenance/backup/restore, /nms/maintenance/supportinfo, /devices/{deviceId}/backups, /devices/{deviceId}/backups/{backupId}, /devices/{id}/supportfile.

Hard-excluded (server administration and settings - can include mail-server/SMTP credentials and server-level config, not network/device data) - never implemented: GET /nms/settings, /nms/server-config, /nms/setup, /nms/mailserver, /nms/connection (returns the UISP server's own connection key), /nms/log-verbosity, /nms/update, /nms/update/log, /nms/traffic/blacklist, /nms/traffic/subnets, /nms/address, /nms/search, /nms/news, /nms/blog/posts, /nms/questionnaires/active, /nms/changed, /nms/server-time, /nms/heartbeat (unauthenticated liveness only - uisp_get_version is this connector's authenticated sanity check instead).

Hard-excluded (CRM/billing - a separate subsystem with its own customer-billing data model, out of a network-monitoring connector's scope) - never implemented: GET /crm/roles, /crm/service-plans.

Hard-excluded (GDPR/customer data export) - never implemented: GET /gdpr/clients/{id} - a formatted export of one customer's personal data.

Hard-excluded (raw device pass-through / UDAPI proxy) - never implemented: GET /devices/{deviceId}/udapi/{version}/{udapiUrl*} - a generic reverse-proxy into a device's own local API; UISP's own spec does not constrain this to GET semantics on the far side, so it is excluded as a category regardless of the outer verb, the same treatment unifi-mcp gives its analogous per-console connector-proxy path.

Hard-excluded (network discovery control-plane) - never implemented: GET /discovery/scan-status, /discovery/status/{deviceId} - status of an active network scan, which is triggered/controlled elsewhere in the API; excluded as part of that same discovery workflow rather than picked apart.

Hard-excluded (deep per-device configuration: DHCP, firewall, routing, VLANs, NetFlow, wireless/AirCube/AirMax/OLT/ONU config) - never implemented: every GET under /devices/erouters/*, /devices/uisprs/* (DHCP leases/servers, firewall filters/mangles/NATs/sets/settings, OSPF, routes, NetFlow), /devices/{id}/router/*, /devices/{id}/netflow, /devices/{id}/vlans, /devices/{id}/services, /devices/{id}/system, /devices/{id}/system/unms, /devices/{deviceId}/mac-table*, /devices/{deviceId}/interfaces/{interfaceName}, /devices/{deviceId}/interfaces/data-link/available, /devices/{deviceId}/location, and the entire family of per-device-model detail/config/station endpoints (/devices/aircubes/*, /airfibers/*, /airmaxes/*, /blackboxes/*, /epowers/*, /eswitches/*, /olts/*, /onus/*, /solarbeams/*, /toughswitches/*, /uispss/*, /waves/*, plus /devices/aps/profiles, /devices/ssids, /devices/models, /devices/macs, /devices/ips, /devices/unknown, /devices/import/status) - this connector's device surface is deliberately limited to identity/status/telemetry/interfaces (uisp_list_devices, uisp_get_device, uisp_get_device_detail, uisp_get_device_statistics, uisp_list_device_interfaces, uisp_get_device_by_mac, uisp_list_discovered_devices), not per-vendor-model configuration.

Hard-excluded (site sub-resources beyond the core six) - never implemented: GET /sites/{id}/images, /sites/{siteId}/images/{imageId} (binary), /sites/{siteId}/qos, /sites/{siteId}/slastats (UISP's own summary describes this as "for ISP and SLA score debugging"), /sites/{siteId}/traffic, /sites/{siteId}/traffic/interval, /sites/traffic (superseded for this connector's purposes by the implemented uisp_get_site_traffic_summary).

Hard-excluded (planning/simulation and field-installation tooling - not live network state) - never implemented: GET /simulation, /simulation/devices, /simulation/links, /installations/devices, /installations/{id}, /installations/{id}/{mac}/configuration.

Hard-excluded (misc) - never implemented: GET /devices/{id}/router/* (see above), /tasks/{batchId} (per-task item detail beyond the implemented list/in-progress-count), /airlink/proxy/* (RF link-planning map/elevation data files, unrelated to live network state), /nms/version/latest (checks for a newer UISP release; administrative, not monitoring data).

They can be added as a follow-up if there's demand, after a deliberate scope decision - not by default.

Development

npm install
npm run build
npm test
npm run lint   # tsc --noEmit

Docker

docker build -t uisp-mcp .
docker run -p 8080:8080 -e UISP_API_KEY=... -e UISP_BASE_URL=https://uisp.example.com uisp-mcp

Available Tools

27 tools
uisp_get_deviceB

Get a single device's status overview by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDevice ID (from uisp_list_devices).

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the burden of behavioral disclosure. It conveys a read operation and a 'status overview' but does not mention what fields are included, how errors are handled if the ID is invalid, or any authentication or rate-limit considerations.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler or redundant information. It communicates the operation, the scope, and the identifier type efficiently.

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-ID getter, the description is minimally sufficient, but with no output schema and no annotations, the agent is left without information about the return shape or failure behavior. The tool is straightforward enough that this is a gap rather than a fatal flaw.

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

Parameters3/5

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

The schema has 100% coverage for the single required parameter, including a helpful provenance note ('from uisp_list_devices'). The description adds only the phrase 'by ID,' which does not materially enrich what the schema already states, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description states a specific verb ('Get'), a clear resource ('a single device's status overview'), and the lookup key ('by ID'). It distinguishes itself from list-style siblings and from get_device_detail through the 'status overview' scope, though it does not explicitly name the difference.

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 alternatives such as uisp_get_device_detail, uisp_get_device_statistics, or uisp_get_device_by_mac. The intended context is only implied by the phrase 'status overview,' with no explicit exclusions or sibling comparisons.

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

uisp_get_device_by_macA

Look up a device by its MAC address.

ParametersJSON Schema
NameRequiredDescriptionDefault
macYesDevice MAC address, e.g. 78:8a:20:5f:2a:ff.

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden of behavioral disclosure. 'Look up' signals a read-only, non-destructive operation, which is the key behavioral trait for this tool. However, it does not mention what is returned, how missing devices are handled, or whether special 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.

Conciseness5/5

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

The description is a single direct sentence with no filler or redundancy. It is front-loaded and appropriately sized for a tool with one required parameter.

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-parameter lookup, the description is minimally viable. However, with no annotations and no output schema, it would benefit from clarifying what the tool returns and how it differs from uisp_get_device when selecting the appropriate 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 schema already documents the mac parameter with an example. The description only restates that this is a MAC-address lookup and adds no additional syntax, formatting, or edge-case semantics 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 verb ('look up'), a resource ('device'), and the exact lookup key ('by its MAC address'). This distinguishes it from sibling tools like uisp_get_device or uisp_get_device_detail, which are likely keyed on other identifiers.

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

Usage Guidelines2/5

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

No guidance is provided for when to use this tool versus sibling alternatives such as uisp_get_device or uisp_list_devices. The MAC-address qualifier gives some implicit context, but there are no explicit conditions, exclusions, or alternative tool recommendations.

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

uisp_get_device_detailC

Get a single device's detail, optionally including its interfaces and/or connected stations.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDevice ID (from uisp_list_devices).
withStationsNoInclude the device's connected wireless stations.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state whether the tool is read-only, what the response contains, how interfaces are included, or why the schema only exposes withStations despite the description mentioning interfaces.

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 one efficient sentence that leads with the core action and resource. It is not bloated, though the unsupported 'interfaces' clause slightly reduces 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?

With no output schema and no annotations, the description should explain what 'detail' includes and how the optional parameters affect the result. It does not, and the interface/stations ambiguity leaves an agent uncertain about the tool's actual return shape and default behavior.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents both parameters. The description adds little beyond restating the withStations parameter's purpose and introduces an 'interfaces' concept not represented in the schema, so it does not meaningfully improve parameter understanding.

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

Purpose4/5

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

The description clearly identifies the action ('Get') and the resource ('a single device's detail'), which distinguishes it from list-style tools. However, it does not differentiate from the closely named sibling uisp_get_device, and the mention of 'interfaces' is not backed by a schema parameter, introducing slight 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?

No guidance is given on when to use this tool versus alternatives like uisp_get_device or uisp_list_device_interfaces. The optional inclusion of stations/interfaces implies a use case, but there is no explicit when-or-when-not guidance.

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

uisp_get_device_statisticsA

Get device telemetry (CPU/RAM/signal/temperature/throughput) bucketed by interval.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDevice ID (from uisp_list_devices).
intervalYesTime bucket for the statistics.

TDQS

A3.5/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden of behavioral disclosure. It conveys a read-only telemetry operation and bucket granularity, but does not explain aggregation semantics (e.g., averages vs. raw samples), units, data availability windows, or edge-case behavior. This is a thin disclosure beyond the obvious 'Get' semantics.

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, efficient sentence that front-loads the action and resource, with the metric list parenthetically. No filler or redundant 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?

The parameters are well documented and enough to construct a valid call, but with no output schema the description leaves the response contract unclear: units, aggregation method, time range, and result shape for the bucketed telemetry are unspecified. For a statistics endpoint, this is a moderate completeness 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 100%, with the id and interval parameters already described in the input schema. The description adds context about telemetry categories but does not meaningfully extend parameter semantics beyond what the schema 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.

Purpose5/5

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

The description uses a specific verb ('Get'), identifies the resource ('device telemetry'), enumerates the metric categories (CPU/RAM/signal/temperature/throughput), and notes interval bucketing. This clearly distinguishes it from sibling tools like site/network statistics or device detail endpoints, even without naming 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 description implies usage for per-device telemetry with time bucketing, but it never states when to choose this over alternatives such as uisp_get_site_statistics or uisp_get_network_statistics. No exclusions or selection criteria are provided.

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

uisp_get_gatewayA

Get a single gateway's detail by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesGateway ID (from uisp_list_gateways).

TDQS

A3.5/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden of behavioral disclosure. It only restates the operation ('Get') and does not disclose what 'detail' includes, error behavior, authentication requirements, or whether the operation is read-only. The agent is left without information beyond the tool's purpose.

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

Conciseness5/5

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

One short sentence that is front-loaded with the action and resource. No empty words or redundancy. It effectively communicates the core purpose in the minimal space needed.

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 a simple get-by-ID with a single well-described parameter, so the description plus schema might be sufficient for calling it. However, there is no output schema, and the description's vague 'detail' does not tell the agent what fields to expect in the response. This is a notable gap given the absence of structured output metadata.

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%, as the single parameter 'id' includes a description indicating the ID comes from uisp_list_gateways. The description adds no additional parameter 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.

Purpose5/5

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

States a specific verb 'Get', a specific resource 'gateway's detail', and the selection mechanism 'by ID'. This clearly distinguishes it from sibling list/search tools like uisp_list_gateways and uisp_search_sites.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives. However, the parameter schema hints at the intended workflow with 'Gateway ID (from uisp_list_gateways)', implying the tool should be used after listing gateways. No exclusions or alternatives are mentioned.

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

uisp_get_network_statisticsA

Get network-wide statistics: client/site counts, network health, signal/link/ISP scores, data-link and uplink/downlink utilization, and outage counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
siriNoInclude the SIRI (Signal Interference Ratio Index) score. Defaults to false.
intervalYesTime bucket for the statistics.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden; 'Get' and the listed statistics signal a non-mutating read, which is important. However, it does not mention aggregation semantics, the exact scope of 'network' (all sites vs managed network), or any limitations such as data retention or latency. The description is not misleading, but it discloses only basic read 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?

Single sentence with an inline list; the verb and resource are front-loaded. Every listed item earns its place with concrete domain terms, and there is no filler or duplication of schema content.

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 simple read-only statistics call with two parameters and no output schema, the description tells the agent what it will receive (the aggregate categories), and the schema covers invocation details. It is slightly under-specified only in the overlap with the ambiguous uisp_get_summary sibling, but the listed contents are sufficient for correct invocation.

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

Parameters3/5

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

The input schema covers both parameters with descriptions (100% coverage), including the interval enum values and the siri default of false. The tool description adds no further parameter-level detail beyond naming the statistics themselves. Baseline 3 is appropriate because the schema does the heavy lifting.

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 opens with 'Get network-wide statistics' — a specific verb and resource whose scope is explicitly network-wide, setting it apart from sibling stats tools like uisp_get_site_statistics and uisp_get_device_statistics. The colon-list enumerates concrete return categories (client/site counts, health, scores, utilization, outages). It doesn't explicitly name a sibling, but 'network-wide' is sufficient directional differentiation.

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

Usage Guidelines3/5

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

No explicit when-to-use or when-not-to-use guidance is given, and no sibling alternatives are named. Use case is implied by the resource name and the phrase 'network-wide', but an agent gets no help deciding between this tool and uisp_get_summary or the per-site statistics tool. That makes the guidance implied rather than explicit.

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

uisp_get_siteB

Get a single site's detail, including its status and (if linked) UCRM client/service reference.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSite ID (from uisp_list_sites).
ucrmDetailsNoInclude the linked UCRM client/service detail.

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure and does state that the response includes status and, conditionally, a UCRM reference. However, it does not describe behavior for invalid or missing IDs, the read-only nature explicitly, or how the optional ucrmDetails flag changes the returned structure.

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. It conveys the operation, resource granularity, and the notable returned data efficiently without repeating the tool name or schema verbatim.

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 simple two-parameter GET tool with no output schema, the description covers the primary purpose and key return fields. It is slightly incomplete because it does not specify the default behavior of ucrmDetails or the response when the site ID is not found, but these are minor for a basic single-record retrieval.

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 both parameters are already documented. The description adds mild value by clarifying that status is part of the detail and that the UCRM reference appears only when linked, but it does not substantially go beyond the schema definitions.

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 uses a specific verb ('Get') and a specific resource ('a single site's detail'), and names key returned content (status and UCRM client/service reference). It is clearly distinct from list-style siblings, though it does not explicitly contrast with tools like uisp_get_site_statistics or uisp_get_site_traffic_summary.

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 explicit when-to-use or when-not-to-use guidance relative to sibling tools such as uisp_list_sites or uisp_get_site_statistics. The phrase 'single site' implies retrieving one specific record, but alternatives, prerequisites, and exclusion conditions are left to inference. The schema's note that the id comes from uisp_list_sites is helpful but not part of the description itself.

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

uisp_get_site_statisticsA

Get upload/download traffic between a site and its parent site, bucketed by interval.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID (from uisp_list_sites).
intervalYesTime bucket for the traffic figures.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden. It discloses that the tool retrieves upload/download traffic in buckets and that it is a read-style operation, but it does not describe response contents, units, or any limitations such as time ranges. This is adequate but not rich.

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

Conciseness5/5

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

A single sentence that front-loads the action and the key constraints (parent site, interval bucketing). Every word earns its place; there is no fluff.

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 two-parameter read, this is close to complete, but the lack of an output schema and annotations means the description should say more about return units or response shape. It also does not disambiguate against the sibling summary tool, leaving some selection ambiguity.

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 schema already fully documents both parameters, but the description adds value by clarifying that siteId denotes the site whose traffic to its parent site is being measured. The interval bucketing is also implicitly tied to the interval parameter, slightly enriching 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?

The description uses a specific verb and resource ('Get upload/download traffic between a site and its parent site') and states the key detail of interval bucketing. It is clear, but it does not explicitly differentiate itself from the closely named sibling uisp_get_site_traffic_summary.

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 it clear when this tool is relevant (when interval-bucketed traffic between a site and its parent is needed), but it provides no explicit guidance on when to choose it over uisp_get_site_traffic_summary or other statistics tools. Usage is implied by the purpose rather than stated.

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

uisp_get_site_traffic_summaryB

Get a site's total upload/download for the given interval up to now.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesSite ID (from uisp_list_sites).
intervalYesTime bucket for the traffic figures.

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses that the result is current interval-to-date upload/download totals, which is useful, but it does not describe units, return shape, timezone handling, or how 'now' is determined. The description is reasonably transparent for a simple read operation but leaves room for ambiguity.

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

Conciseness5/5

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

The description is a single focused sentence with no filler. It front-loads the action and resource, then appends the interval constraint. Every word contributes to understanding the tool's purpose.

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 two-parameter tool, the description gives a fair overall picture, but there is no output schema and no mention of units, exact return format, or whether the totals are cumulative for the current interval. Given the sibling tools and lack of annotations, an agent would benefit from more explicit return-value context.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already explains both parameters. The description adds 'total upload/download' context and 'up to now' meaning for the interval, but it does not add meaningful details beyond the schema's field descriptions and enum values.

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

Purpose4/5

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

The description clearly states an action ('Get'), a resource ('a site's total upload/download'), and a scoping condition ('for the given interval up to now'). It is specific enough about what the tool does, though it does not explicitly differentiate it from similar sibling tools like uisp_get_site_statistics.

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 about when to use this tool versus alternatives such as uisp_get_site_statistics, uisp_get_summary, or uisp_get_network_statistics. The phrase 'up to now' implies current-interval behavior, but no explicit when-to-use or when-not-to-use information is provided.

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

uisp_get_speed_testsA

Get detail about running and recent speed tests.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral disclosure burden. 'Get detail' implies a read operation and 'running and recent' signals scope, but the description does not state whether results include historical data, whether it is purely read-only, or what a 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.

Conciseness5/5

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

A single nine-word sentence with no filler. The key qualifiers ('running', 'recent') are front-loaded and every word contributes to the meaning.

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 parameterless getter, the description conveys enough to select it: the resource is speed tests and the scope is running/recent. It could be more complete by hinting at the returned data shape, but the low complexity and absence of parameters reduce the need.

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 and the schema covers 100% of them, so the baseline is 4. The description does not need to add parameter details and does not attempt to.

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 concrete resource (speed tests) and a verb (get detail), and the 'running and recent' qualifier narrows the scope. It is clear enough to distinguish this from the sibling site/device/network tools, though 'get detail' is less precise than an action like 'list' or 'return results.'

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 or when to prefer a sibling. The phrase 'running and recent' implies a temporal filter, but no use cases, exclusions, or alternatives are mentioned.

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

uisp_get_summaryA

Get badge-count-like values across the instance: unread logs/outages/firmwares, active/all client and site counts, devices needing authorization, firmware up-to-dateness. Each *Timestamp param scopes that count to items newer than the given epoch-ms timestamp — pass 0 for the instance's current totals.

ParametersJSON Schema
NameRequiredDescriptionDefault
logsLevelYesWhich log severities to count toward logsUnreadCount.
logsTimestampNoEpoch-ms timestamp; only logs newer than this count toward logsUnreadCount.
outagesTimestampNoEpoch-ms timestamp; only outages newer than this count toward outagesUnreadCount.
firmwaresTimestampNoEpoch-ms timestamp; only firmwares newer than this count toward firmwaresUnreadCount.

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It adds helpful semantics: counts are badge-like, timestamps filter to newer items, and 0 returns current totals. It also clarifies the tool is a read-only aggregate by describing retrieval of counts, not mutations.

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 dense sentences with no filler; the main purpose is front-loaded. The long internal list of counts is necessary context and is ordered logically. It could be slightly easier to parse, but every clause earns its place.

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?

Despite lacking an output schema and annotations, the description names the key return categories and explains timestamp semantics, including the 0 default behavior. It is adequate for an agent to understand what this summary tool returns and how to scope it.

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%, so the baseline is 3. The description adds value beyond the schema by introducing the 'pass 0 for current totals' convention and tying the timestamps to named unread-count outputs, making the optional timestamp behavior more actionable.

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?

Names a specific verb and resource: 'Get badge-count-like values across the instance.' It enumerates the exact output categories (unread logs/outages/firmwares, client/site counts, devices needing authorization) and clearly differs from sibling list/get tools that operate on individual resources.

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 use for instance-wide summary counts rather than detailed per-resource data, and it explains timestamp scoping. However, it never explicitly says when to choose this tool over list_sites, list_logs, or list_outages, nor does it name alternatives or exclusion conditions.

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

uisp_get_tasks_in_progressA

Get the number of tasks currently in progress.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the full behavioral burden; 'Get' signals a read-only operation and 'currently' signals a point-in-time snapshot. However, it does not disclose scope, authentication expectations, or failure behavior, leaving a moderate transparency gap.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no filler or redundant restatement. Every word earns its place: 'number' clarifies the return type and 'currently in progress' defines the filter.

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-parameter, read-only count tool, the description is largely complete: it states the operation, the object, and the return type. It would be stronger if it clarified the scope of 'tasks' (global vs. site-specific), but the absence of a site parameter makes the global interpretation reasonable.

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 input schema has zero parameters, so the description has no parameter-documentation burden; the baseline of 4 applies. The description correctly avoids inventing parameters the schema does not define.

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 ('Get'), resource ('tasks'), and output type ('number ... currently in progress'), making the function immediately clear. It does not explicitly contrast with sibling uisp_list_tasks, but the count-vs-list distinction is apparent from the wording.

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 phrasing implies the tool is appropriate when a count of in-progress tasks is needed rather than a detailed task list, but no explicit when-to-use or when-not-to-use guidance is provided. Sibling tools such as uisp_list_tasks are not mentioned, so the agent must infer the distinction.

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

uisp_get_versionA

Get the UISP version, deployment type and build info. Useful as a credential/connectivity sanity check.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It communicates that this is a read-style operation ('Get') and specifies the returned categories (version, deployment type, build info), plus the diagnostic use case. It stops short of stating error behavior or explicitly confirming no side effects, but these are low risk for a version query.

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

Conciseness5/5

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

The description is a single, front-loaded sentence. Every clause adds information: what is returned and why you would call it. There is no padding or repetition.

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-parameter endpoint with no output schema, the description adequately covers return values and purpose. It could mention exact field names or potential failure modes, but the tool is simple enough that an agent can select and invoke it confidently.

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 the schema fully covers parameter semantics by default. The baseline of 4 applies, and the description appropriately adds no redundant parameter detail.

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 names a specific verb and resource ('Get the UISP version') and adds the exact data returned: deployment type and build info. This distinguishes it from all sibling tools, none of which target version information.

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

Usage Guidelines4/5

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

The phrase 'Useful as a credential/connectivity sanity check' gives a clear context for when to invoke the tool. It does not explicitly name alternatives or exclusions, but for a version endpoint no competing sibling is apparent.

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

uisp_list_device_interfacesA

List a device's network interfaces, including their configured IP addresses and status.

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceIdYesDevice ID (from uisp_list_devices).

TDQS

A3.8/5.0
Behavior3/5

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

There are no annotations, so the description carries the behavioral burden. 'List' implies a read-only operation, and the description discloses what data is included. However, it does not mention whether all interfaces are returned, how failures with invalid device IDs behave, or any additional behavioral constraints.

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

Conciseness5/5

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

The description is a single, well-structured sentence that front-loads the action and resource, then adds the key return-value detail. There is no redundant or filler wording.

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 simple one-parameter list operation, the description is nearly complete: it states the resource and what is included in the result. The lack of an output schema is partially compensated by naming the returned content. Minor gaps like return shape for empty results or error behavior keep it from a perfect score.

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

Parameters3/5

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

The schema already fully documents the single parameter with 100% coverage: 'Device ID (from uisp_list_devices).' The description adds little beyond 'device's interfaces,' which is sufficient given the schema's completeness, but it does not independently enrich parameter meaning.

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 names a specific verb ('List'), a specific resource ('a device's network interfaces'), and the key data returned ('configured IP addresses and status'). This clearly separates it from the many device-related sibling tools, such as uisp_get_device or uisp_list_devices.

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 tool's purpose is clear enough that an agent can infer it should be used when interface-level detail is needed for a device. However, the description gives no explicit guidance about when to prefer it over alternatives like uisp_get_device_detail or uisp_get_device, nor any exclusion criteria.

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

uisp_list_devicesA

List devices (hostname/IP/MAC, status, parent site), optionally filtered by site/type/role/authorization. Each device's id chains into uisp_get_device, uisp_get_device_detail, uisp_get_device_statistics, and uisp_list_device_interfaces.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNoFilter by device role.
typeNoFilter by device type.
siteIdNoFilter to devices at this site (from uisp_list_sites).
authorizedNoFilter to authorized (true) or pending-authorization (false) devices.
withInterfacesNoInclude each device's interfaces in the response.

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral burden. It discloses the returned device attributes and the chaining behavior, and 'List' implies a read-only operation. However, it does not mention pagination, response shape, or the behavior of the withInterfaces option, which can significantly change the response.

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

Conciseness5/5

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

The description is two sentences with no filler. The first sentence front-loads the core purpose and filters, and the second provides valuable downstream workflow context by connecting to related tools.

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 filterable list tool with no annotations and no output schema, the description gives enough to call it correctly: what it returns and how the results chain into later tools. It is slightly incomplete in not addressing pagination or the withInterfaces effect, but the schema and simple list semantics keep it adequate.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all five parameters. The description adds little beyond naming site/type/role/authorization filters and omits withInterfaces, but the schema fills that gap adequately.

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

Purpose5/5

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

The description uses a specific verb and resource ('List devices') and states the returned fields (hostname/IP/MAC, status, parent site). It also clarifies that it is the entry point for later device-level lookups by chaining the device 'id' into related tools, which distinguishes it from get_device and list_discovered_devices.

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 usage context is implied: this is for enumerating devices, optionally filtered, and for obtaining device IDs to use in related device tools. However, it does not explicitly say when to prefer this over alternatives such as uisp_get_device_by_mac or uisp_list_discovered_devices.

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

uisp_list_discovered_devicesA

List devices UISP has discovered on the network but which have not yet been added.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are present, so the description carries the burden of indicating the operation is a read-only list. 'List' clearly implies no mutation, but the description does not mention pagination, response details, or any access/scope limitations. For a zero-parameter read-only tool, this is acceptable but not rich.

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

Conciseness5/5

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

A single, well-structured sentence that front-loads the action and key distinction, with no filler or repetition.

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 simple zero-parameter discovery list, the description is sufficiently complete: the purpose, scope, and differentiation from added devices are all clear. The lack of an output schema is not a critical gap for a list endpoint, though some return field hints could add value.

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 schema coverage is 100%, so there are no parameter semantics for the description to clarify. Baseline 4 applies because no parameter information is needed.

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

Purpose5/5

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

The description uses the specific verb 'List' with a clear resource: devices UISP has discovered but not yet added. It distinguishes this from sibling tools like uisp_list_devices by explicitly scoping to unadded devices.

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

Usage Guidelines4/5

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

The intended use case is clear: call when you need devices discovered on the network that are not yet added. It does not explicitly point to alternatives or exclusions, but the scope is unambiguous enough for an agent to select it.

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

uisp_list_firmwaresA

Get the firmware versions available to UISP for its supported device models.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral burden. The verb 'Get' implies a read-only operation and 'firmware versions available' indicates what is returned, but there is no explicit statement about side effects, permissions, or response format. For a zero-parameter read tool this is minimally acceptable, though not comprehensive.

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

Conciseness5/5

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

The description is a single, information-dense sentence with no filler or repetition of schema information. It front-loads the action and resource clearly.

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

Completeness4/5

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

Given the tool's simplicity—zero parameters, no output schema, and no annotations—the description states the essential purpose without leaving critical gaps. Minor ambiguity remains about the exact return contents and its relationship to uisp_get_version, but these do not impede correct invocation.

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 no parameters, so the baseline for this dimension is 4. The schema already shows an empty object, and there are no parameter details for the description to clarify or augment.

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 uses a specific verb ('Get') and resource ('firmware versions available to UISP for its supported device models'), making the tool's function clear. It does not explicitly contrast with sibling tools like uisp_get_version, but the 'firmware versions' wording provides a reasonable implicit distinction.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as uisp_get_version or other list tools. It lacks any context about intended use cases, prerequisites, or when another tool would be more appropriate.

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

uisp_list_gatewaysA

List gateways - routers configured as network gateways - and their NetFlow/QoS/suspend configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It indicates a read/list operation and the returned scope (gateways with NetFlow/QoS/suspend config), but does not mention authorization, pagination, or whether the list is system-wide or scoped to a site. Adequate but not richly transparent.

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 sentence that front-loads the verb and resource, uses a parenthetical to define gateways, and ends with a compact list of configuration categories. No filler or repetition.

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-parameter list tool, the description states what is returned and which configuration areas are included. It does not describe the output shape or call out the sibling uisp_get_gateway for single-gateway needs, but those are minor gaps for such a simple tool.

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

Parameters4/5

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

The input schema has zero parameters, so schema coverage is trivially 100% and the description has no parameter semantics to add. The zero-parameter baseline of 4 applies.

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

Purpose5/5

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

Uses the specific verb 'List' with a clearly defined resource ('gateways - routers configured as network gateways') and adds concrete scope: NetFlow/QoS/suspend configuration. This distinguishes it from broader tools like uisp_list_devices and from the single-item uisp_get_gateway.

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 intended use is implied by 'List gateways' and the configuration focus, but there is no explicit guidance about when to choose this over uisp_get_gateway or uisp_list_devices, nor any exclusions. It earns a middle score for implied rather than clearly stated usage guidance.

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

uisp_list_logsB

List the UISP event/audit log (e.g. logins, device state changes, backups, upgrades). Log messages can embed device MAC/IP addresses. Filter by site, device, severity level, event tag, or a text query.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoFilter by event tag/category.
pageYesPage number (1-indexed).
countYesNumber of results per page.
levelNoFilter by severity level.
queryNoText search across log messages.
periodNoRestrict to log items within the last N days.
siteIdNoFilter to log items for this site.
deviceIdNoFilter to log items for these device IDs.

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a read operation ('List') but does not explicitly state read-only behavior, pagination semantics, rate limits, or any side effects. The note about MAC/IP addresses in log messages is a data-content detail, not a behavioral trait. The description is silent on response format, ordering, or limits, which is a significant gap for a tool with pagination parameters.

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

Conciseness5/5

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

The description is two sentences long, front-loads the primary action, and includes a concise list of filters. Every clause contributes to understanding the tool's scope. It avoids redundancy and is efficiently 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?

Given 8 parameters, no output schema, and no annotations, the description is somewhat minimal. It does not explain pagination behavior (page/count semantics are only in the schema), ordering, or the shape of the returned data. The note about MAC/IP addresses is useful but does not compensate for missing behavioral context. However, the schema covers parameter details, and the description provides a reasonable overview, making it adequate but not comprehensive.

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

Parameters3/5

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

Schema description coverage is 100% (all 8 parameters have descriptions). The description's mention of filtering by 'site, device, severity level, event tag, or a text query' maps to the parameters but adds no new meaning beyond what the schema already provides. It does not elaborate on parameter interactions, defaults, or edge cases, but the baseline of 3 applies because the schema handles the semantics.

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

Purpose5/5

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

The description clearly states the tool lists the UISP event/audit log and provides examples of log content (logins, device state changes, backups, upgrades). It also enumerates the filtering dimensions (site, device, severity, tag, query), making the purpose specific and unambiguous. It does not explicitly distinguish from siblings like uisp_list_outages, but the resource ('event/audit log') is distinct enough that an agent can infer its 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?

The description does not mention when to use this tool versus alternatives, nor does it state any exclusions or prerequisites. It only describes what the tool does and the available filters. With no sibling differentiation or explicit usage context, an agent has no guidance on when to choose this over other log-related tools (e.g., uisp_list_tasks, uisp_list_outages).

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

uisp_list_outagesA

List network outages - UISP's alerting surface - each tied to a site and device. Filter by device, type (outage/unreachable), a text query, or in-progress state.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageYesPage number (1-indexed).
typeNoFilter by outage type.
countYesNumber of results per page.
queryNoText search across outage records.
periodNoRestrict to outages within the last N days.
deviceIdNoFilter to outages for this device ID.
inProgressNoFilter to outages that are still ongoing.

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It clarifies that this is a list/read operation and gives domain context about outages being tied to a site and device. However, it does not disclose pagination behavior, default time ranges, ordering, or whether only current or also historical outages 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.

Conciseness5/5

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

A single well-structured sentence that front-loads the core operation, provides contextual framing, and enumerates key filters without waste. Every phrase earns its place.

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 7-parameter tool with no annotations and no output schema, the description gives useful context but omits important operational details such as pagination defaults, the meaning of an optional 'period', and what fields an outage record contains. The schema covers parameter semantics, but the description leaves some gaps an agent might need when invoking the 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?

While schema coverage is 100% and the description does not add new syntax, it usefully highlights the main filter dimensions (deviceId, type, query, inProgress) and explicitly spells out the enum values 'outage/unreachable'. This adds modest value beyond the schema descriptions but leaves page, count, and period to the schema.

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

Purpose5/5

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

The description clearly states the verb 'List' and resource 'network outages', and adds meaningful context by identifying UISP's alerting surface and tying outages to a site and device. This makes it unambiguously distinct from all sibling tools, none of which target outages.

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

Usage Guidelines3/5

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

The description implies usage by listing filter dimensions (device, type, text query, in-progress) and framing outages as an alerting surface, but it never explicitly states when to use this tool versus alternatives or when not to use it. There is no mention of sibling tools for broader network status, so usage guidance remains implicit.

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

uisp_list_site_clientsA

List all client sites belonging to a given (parent) site.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesParent site ID (from uisp_list_sites).

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose that this is a read-only 'list' operation and adds the parent-site scoping detail. It does not mention pagination, recursion through child levels, auth requirements, or response shape, but those are less critical for a simple 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.

Conciseness5/5

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

One clean, front-loaded sentence with no filler. Every word earns its place and the core scoping information is immediately visible.

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 tool with one required parameter and no nested objects, the description plus schema is enough for an agent to invoke it correctly. The main gaps are the lack of explicit alternative routing and behavioral caveats, but 'list all client sites' adequately implies the return value even without an output 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?

The schema already covers the only parameter at 100% with 'Parent site ID (from uisp_list_sites).' The description restates the parent-site relationship but adds no format, source, or additional semantics beyond the schema, so the baseline 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb-resource pair, 'List all client sites belonging to a given (parent) site,' and clearly scopes the operation to a parent-child relationship. This distinguishes it from siblings like uisp_list_sites (all sites) and uisp_get_site (single site).

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 use case is implied: use this when you have a parent site ID and need its client sites. However, it never explicitly says when not to use it or points to alternatives such as uisp_list_sites for listing top-level sites, so the guidance is minimal.

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

uisp_list_sitesA

List sites (network locations - sites, endpoints, and clients - each optionally tied to a UCRM client/service record). Each site's id chains into uisp_get_site, uisp_list_site_clients, uisp_list_devices (siteId filter), and uisp_get_site_statistics.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoFilter to specific site IDs.
ipNoFilter to the site whose endpoint has this IP address.
typeNoFilter by site type.
ucrmNoOnly return sites linked to a UCRM client/service record.
deviceIdNoFilter to the site containing this device ID.
ucrmDetailsNoInclude the linked UCRM client/service detail.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden. It usefully clarifies that 'sites' includes endpoints and clients and that UCRM linkage is optional, but it does not mention pagination, default return behavior, or explicitly confirm read-only semantics beyond the verb 'List'.

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

Conciseness5/5

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

The description is compact and front-loaded, with the core action and scope in the first sentence. The second sentence earns its place by explaining how returned IDs integrate with related tools, with no wasted words.

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

Completeness4/5

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

For a read-style list operation with fully documented parameters, the description covers the core semantics and downstream usage well. The lack of an output schema and annotations means return shape and default pagination behavior are not addressed, but this is a minor gap given the tool's simple nature.

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 six parameters are already fully documented. The description adds no parameter-level detail beyond mentioning that site IDs chain into other tools, which is consistent with the baseline score of 3.

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

Purpose4/5

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

The description clearly states the operation ('List sites') and defines the resource scope as network locations including sites, endpoints, and clients, with optional UCRM linkage. It does not explicitly distinguish itself from uisp_search_sites, so it stops short of full 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 Guidelines3/5

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

The chaining sentence implies this tool is used to obtain site IDs for downstream tools like uisp_get_site and uisp_list_devices. However, there is no explicit guidance about when to use this list endpoint versus alternatives such as uisp_search_sites, leaving the usage context only implied.

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

uisp_list_tasksB

List background tasks (e.g. firmware upgrades, backups, mass operations) and their status.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageYesPage number (1-indexed).
countYesNumber of results per page.
periodNoRestrict to tasks within the last N days.
statusNoFilter by task status.

TDQS

B3.3/5.0
Behavior2/5

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

The description is essentially restating that it lists tasks and their status, which is already implied by the tool name and the 'status' parameter. With no annotations provided, the description carries the full burden, but it fails to disclose key behavioral details such as whether it only returns completed tasks or includes in-progress ones, the ordering of results, or any rate limits. It also does not contradict annotations since none are present.

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

Conciseness5/5

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

The description is a single, concise sentence that is front-loaded with the primary purpose. It is efficient and free of unnecessary jargon or filler, earning top marks for conciseness and structure.

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

Completeness3/5

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

Given the tool's moderate complexity (4 parameters, 2 required) and no annotations or output schema, the description is adequate but incomplete. It doesn't indicate what the response structure looks like, how pagination works, or any default behaviors. Since the parameter schema already covers parameters well, the description covers the core use but leaves gaps in operational expectations.

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

Parameters3/5

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

The schema covers all 100% of parameters with descriptions, so the baseline is 3. The description mentions 'status' as a filter and 'background tasks' but doesn't add much beyond what the schema already says for parameters like 'period' or 'page'. It adds marginal context by listing task types, but not enough to raise the score.

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 verb 'List', the resource 'background tasks', and examples of what those tasks include (firmware upgrades, backups, mass operations), making the purpose clear. However, it does not explicitly differentiate from the sibling tool uisp_get_tasks_in_progress, which could be confused as a filtered subset.

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 that this tool lists background tasks and provides a 'status' filter, suggesting it's used for viewing task history. However, it does not explicitly state when to use this over uisp_get_tasks_in_progress (e.g., for historical tasks versus currently running), nor does it mention any exclusions or alternatives.

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

uisp_search_sitesC

Search sites, endpoints, and clients by name, address, MAC address, or IP address.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageYesPage number (1-indexed).
typeNoRestrict results to this site type.
ucrmNoOnly return results linked to a UCRM client/service record.
countYesNumber of results per page.
queryNoSearch text.
latitudeNoLatitude to bias/scope the search geographically.
longitudeNoLongitude to bias/scope the search geographically.

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description must carry the full behavioral burden. It doesn't disclose that the search supports geographic bias (latitude/longitude), whether results are paginated (though schema implies it), or that it returns a list of matches. No side effects or safety information is provided for a search operation that is presumably read-only.

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

Conciseness5/5

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

A single, concise sentence that front-loads the action and resource. No wasted words, and the essential search dimensions are stated. This is efficient and well-structured.

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 description is too thin for a 7-parameter search tool with no output schema. It omits the geographic search feature (lat/long), doesn't explain result structure or pagination behavior, and provides no context on typical use cases. An agent would need to infer too much 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 all parameters are already documented. The description adds no extra meaning beyond what the schema provides; it mentions search criteria that map to the 'query' parameter but doesn't elaborate on interactions (e.g., how type filters or lat/long bias work). Baseline 3 is appropriate when the schema is complete.

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

Purpose4/5

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

The description clearly states the verb 'Search' and the resource (sites, endpoints, clients) along with search criteria (name, address, MAC, IP). It is specific enough to distinguish from list/get tools, though it doesn't explicitly contrast with siblings like uisp_list_sites. The purpose is evident but could be more explicit about being the search 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 tool versus listing tools or when to avoid it. The description doesn't mention that uisp_list_sites is for unfiltered listing or that this search is for targeted lookups. An agent gets no decision support for tool selection.

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. 27 tool updatesv0.1.0
    • First observeduisp_get_data_link
    • First observeduisp_get_device
    • First observeduisp_get_device_by_mac
    • First observeduisp_get_device_detail
    • First observeduisp_get_device_statistics
    • First observeduisp_get_gateway
    • First observeduisp_get_network_statistics
    • First observeduisp_get_site
    • First observeduisp_get_site_statistics
    • First observeduisp_get_site_traffic_summary
    • First observeduisp_get_speed_tests
    • First observeduisp_get_summary
    • First observeduisp_get_tasks_in_progress
    • First observeduisp_get_version
    • First observeduisp_list_data_links
    • First observeduisp_list_device_interfaces
    • First observeduisp_list_devices
    • First observeduisp_list_discovered_devices
    • First observeduisp_list_firmwares
    • First observeduisp_list_gateways
    • First observeduisp_list_logs
    • First observeduisp_list_outages
    • First observeduisp_list_site_clients
    • First observeduisp_list_site_data_links
    • First observeduisp_list_sites
    • First observeduisp_list_tasks
    • First observeduisp_search_sites

TDQS

A3.5/5.0

Scored across 27 tools

Disambiguation4/5

Most tools are clearly separated by resource type (sites, devices, data links, gateways, tasks, logs, outages) and action (list/get/search). Minor overlap exists between uisp_list_sites and uisp_search_sites, and between uisp_get_site_statistics and uisp_get_site_traffic_summary, but descriptions clarify the distinction.

Naming Consistency4/5

The uisp_ prefix is consistent and most tools follow a verb_noun pattern (list_sites, get_site, search_sites). Minor deviations include uisp_get_summary, uisp_get_tasks_in_progress, and uisp_get_speed_tests, which use different noun phrasing but remain readable and predictable.

Tool Count4/5

27 tools is on the higher end but appropriate for a network management platform covering sites, devices, data links, gateways, logs, outages, tasks, and firmware. The count is justified by the breadth of the domain, though it approaches the upper bound of a well-scoped server.

Completeness4/5

The surface covers the main read-only monitoring and inventory workflows for UISP: sites, devices, data links, gateways, logs, outages, tasks, and network statistics. Missing write operations (e.g., authorize devices, create sites, manage tasks) are notable but the server appears intentionally read-only, so the gap is acceptable for its apparent purpose.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to interact with Ubiquiti UniFi network infrastructure for monitoring devices, managing clients, and performing configuration tasks like blocking/unblocking devices and viewing network health.
    10
    1
    GPL 3.0
  • A
    license
    B
    quality
    D
    maintenance
    Enables AI assistants to manage and monitor UniFi Network Controllers through natural language. Provides 25 read-only tools for discovering devices and clients, viewing security configurations, analyzing network statistics, and exporting configuration data.
    41
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Enables AI assistants to manage UniFi network infrastructure through 50+ tools covering devices, clients, networks, WiFi, firewall rules, and guest access using the official UniFi Network API.
    52
    43 npm
    5
    MIT