Skip to main content
Glama
WYRE-AI
by WYRE-AI

UniFi MCP Server

MCP server for Ubiquiti UniFi's Cloud Site Manager API - sites, hosts, devices, WAN/ISP health metrics, and SD-WAN configuration/status, for AI assistants and the WYRE Conduit gateway.

Scope: Cloud Site Manager API only (deliberate)

UniFi exposes two distinct API surfaces:

  • Local per-controller API (Network Application API, developer.ui.com/network/...) - lives on each customer's own console/controller, requires a separate API key per site with no central integration point, and covers per-site configuration in depth: clients, networks/VLANs/DHCP, WLANs/SSIDs, firewall rules, port forwarding, etc.

  • Cloud Site Manager API (developer.ui.com/site-manager/..., base URL https://api.ui.com) - a single UI.com account key that aggregates data across every site adopted to that account, but exposes a much narrower read surface: sites, hosts, device inventory, WAN/ISP metrics, and SD-WAN config/status only.

This connector targets the Cloud Site Manager API only, per an explicit upstream scope decision - the local per-controller API is deferred, not implemented as a fallback.

Consequence for tool coverage: the Cloud Site Manager API does not expose several things a "typical" network-management connector would have - there is no client-listing/client-detail endpoint (only aggregate client counts inside a site's statistics), no VLAN/network/DHCP-config endpoint, no WLAN/SSID endpoint, and no firewall-rule endpoint as first-class operations. Those all live on the local per-controller API. This connector implements 9 of the 10 paths the Cloud Site Manager API's own published OpenAPI spec defines as dedicated, purpose-built read operations - see Tools below. The 10th path is the connector-proxy endpoint, covered in its own subsection below - it is excluded by design, not missed.

Related MCP server: UniFi MCP Server

Authentication

UniFi Site Manager authenticates with a single static X-API-Key header tied to a UI.com account - there is no OAuth flow, no token exchange, and no per-request expiry. Generate a key at unifi.ui.com under Settings > API Keys.

Two separate claims here, at deliberately different confidence levels - don't collapse them into one "read-only" statement:

  • Structurally verified (checked directly, stated with full confidence): this connector's own code makes zero mutating calls. Every function in client.ts calls one of the 9 dedicated read operations below; no POST/PUT/PATCH/DELETE call exists anywhere in src/, and the connector-proxy path (below) is never referenced under any name.

  • Vendor-documented, not independently verified (hedged deliberately): Ubiquiti's own Getting Started documentation describes Site Manager API keys generally as read-only ("currently read-only... cannot be used to make modifications to your UniFi infrastructure"). Whether that's actually enforced server-side against the connector-proxy path specifically - i.e. whether UI.com's backend rejects a write verb sent through /v1/connector/consoles/{id}/*path, versus the restriction being a documented policy rather than a hard technical block - has not been tested by WYRE. Nobody on this review sent a write verb against a live key to find out, correctly: that would be a destructive test against real customer infrastructure, not something to run without consent. Do not read this connector, or this README, as having established that the underlying API key cannot perform writes - only that this connector's own code never attempts one.

In gateway mode the key arrives per-request via the X-UniFi-Api-Key header; in local/stdio mode it's read once from UNIFI_API_KEY.

The connector-proxy endpoint (excluded by design)

The live spec (https://developer.ui.com/site-manager/v1.0.0/openapi.json - fetched directly with a plain curl/HTTP GET; this specific raw-JSON endpoint returns cleanly even though the interactive docs pages at developer.ui.com are a JS SPA that doesn't render via plain fetch) defines a 10th path beyond the 9 this connector implements: /v1/connector/consoles/{id}/*path, with all five HTTP methods - GET/POST/PUT/PATCH/DELETE (operationIds ConnectorGet/ConnectorPost/ConnectorPut/ConnectorPatch/ConnectorDelete). It is a generic reverse-proxy: api.ui.com forwards the request verbatim to the target console's local API at http://127.0.0.1/proxy/[path], reaching the console's full local Network/Protect/InnerSpace surface - the same local per-controller API this connector's Scope section defers, just reached through the cloud endpoint instead of the console directly. The spec documents it as genuinely mutating - its own example for DELETE removes hotspot vouchers - and available to a standard (non-organization) API key, scoped to consoles that key's owner controls; it is not gated behind an org-tier key. (WYRE has not sent a live write call against this path - see the hedge in Authentication above.)

This connector deliberately excludes the connector-proxy endpoint entirely, for the same reason the local per-controller API is out of scope: implementing it would mean re-exposing the whole local surface (clients, VLANs, WLANs, firewall rules, and genuine mutations) through one wildcard passthrough tool, defeating the purpose of scoping this connector to purpose-built cloud reads. No tool in this connector calls it, under any name.

Configuration

Env var

Description

UNIFI_API_KEY

UniFi Cloud Site Manager API key.

MCP_TRANSPORT

stdio (default) or http.

AUTH_MODE

env (default, reads the var above) or gateway (credential arrives per-request via the X-UniFi-Api-Key header, 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

9 read-only tools, one per dedicated read operation in the Cloud Site Manager API's published spec (10 paths total on the live spec; the 10th, a generic mutating connector-proxy endpoint, is excluded by design - see Authentication above).

Sites

  • unifi_list_sites - list every site visible to this API key's account, with metadata (name, timezone, gateway MAC) and aggregate statistics (device/client counts, network performance).

Hosts

  • unifi_list_hosts - list every host (console / network-server application) associated with this API key's account.

  • unifi_get_host - get detailed information about a single host by ID.

Devices

  • unifi_list_devices - list UniFi devices managed by hosts this account owns or super-admins, grouped by host. PII-bearing (MAC address, IP address, user-defined hostname/note per device) - admin-gated by default.

WAN / ISP Health

  • unifi_get_isp_metrics - WAN/ISP health and traffic metrics for every linked site, at 5-minute or 1-hour granularity.

  • unifi_query_isp_metrics - the same metrics, scoped to specific host/site pairs and time ranges. A POST on UniFi's API, but a filtered read, not a mutation.

SD-WAN

  • unifi_list_sdwan_configs - list every SD-WAN configuration (id/name/type only).

  • unifi_get_sdwan_config - full topology for one SD-WAN configuration: hub/spoke sites, attached networks, and routed subnets (CIDR). Network-topology data - admin-gated by default.

  • unifi_get_sdwan_config_status - deployment status for one SD-WAN configuration, including per-hub/spoke WAN IPs and latency. Network-topology data - admin-gated by default.

unifi_list_sites, unifi_list_hosts, unifi_get_host, unifi_get_isp_metrics, unifi_query_isp_metrics, and unifi_list_sdwan_configs are plain-read tier: sites/hosts are the navigational directory most other tools need site/host IDs from, and WAN metrics are aggregate performance data, not PII or topology.

Sensitivity

This connector's own 9 tools surface two categories of sensitive data even though every one of them is read-only: PII (device MAC addresses, IP addresses, user-defined hostnames on every device returned by unifi_list_devices) and network topology (SD-WAN hub/spoke routes and subnets in unifi_get_sdwan_config/unifi_get_sdwan_config_status). Those three tools default to isAdmin: true in the Conduit wiring; everything else is plain read. This is separate from, and does not account for, the connector-proxy endpoint described under Authentication - that endpoint isn't implemented here at all, so it isn't part of this connector's tier model.

Development

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

Docker

docker build -t unifi-mcp .
docker run -p 8080:8080 -e UNIFI_API_KEY=... unifi-mcp

License

Apache-2.0

Available Tools

9 tools
unifi_get_hostA

Get detailed information about a single host by ID (as returned by unifi_list_hosts).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesHost ID.

TDQS

A4/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 only says 'get detailed information,' which conveys read-only intent but does not disclose response shape, error behavior, permissions, or anything beyond the basic operation.

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

Conciseness5/5

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

A single, front-loaded sentence with no filler. Every word contributes to identifying the tool's purpose and the required input's source.

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 single-parameter read tool, the description is adequate: an agent knows what to call, what argument to pass, and where to obtain that argument. It could mention return details, but the tool's simplicity keeps this from being a major gap.

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

Parameters4/5

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

The schema already documents id as 'Host ID,' and the description adds practical meaning by specifying that the ID is the one returned by unifi_list_hosts. This provenance helps an agent construct the call correctly and is not present in the schema.

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

Purpose5/5

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

States a clear verb-resource pair: get detailed information about a single host. It explicitly distinguishes itself from unifi_list_hosts by scoping to one host by ID, so an agent can tell them apart immediately.

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

Usage Guidelines4/5

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

The description implies the correct workflow: call this after unifi_list_hosts and pass the host ID returned there. It does not explicitly state when not to use it or name alternatives, but the intended context is clear.

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

unifi_get_isp_metricsA

Get WAN/ISP health and traffic metrics for every site linked to this API key's account, at 5-minute or 1-hour granularity. 5-minute data is retained at least 24h; 1-hour data at least 30 days. Provide either duration alone, or beginTimestamp/endTimestamp (not both).

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesMetric interval.
durationNoTime range ending now. '24h' for 5m metrics; '7d' or '30d' for 1h metrics. Cannot be combined with beginTimestamp/endTimestamp.
endTimestampNoLatest timestamp to retrieve, RFC3339. Cannot be combined with duration.
beginTimestampNoEarliest timestamp to retrieve, RFC3339. Cannot be combined with duration.

TDQS

A3.7/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 discloses account-wide scope, granularity options, and retention windows ('5-minute data is retained at least 24h; 1-hour data at least 30 days'). It does not mention output format or rate limits, but the main behavioral traits are 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?

Three sentences with no filler. The action and scope are front-loaded, followed by retention details and the parameter constraint, making the most decision-relevant information easy to parse.

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 description covers input constraints and retention but does not clarify the difference from unifi_query_isp_metrics, and there is no output schema to describe the return shape. For an agent choosing among similar ISP-metric tools, the missing sibling differentiation is a real 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%, so the schema already documents every parameter and its constraints. The description restates the mutual-exclusion rule but adds little new semantic meaning beyond the schema's descriptions.

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

Purpose4/5

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

The description states a specific action and resource: 'Get WAN/ISP health and traffic metrics for every site linked to this API key's account'. This is clear and scoped, though it does not explicitly differentiate from the sibling unifi_query_isp_metrics.

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

Usage Guidelines3/5

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

The description implies when to use the tool by defining its scope and retention behavior, but it gives no explicit guidance about when not to use it or how it compares to siblings like unifi_query_isp_metrics. The parameter rule about duration vs timestamps is helpful, but tool-selection guidance is missing.

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

unifi_get_sdwan_configA

Get the full topology for one SD-WAN configuration: variant, advanced settings, and every hub/spoke including their site/host IDs, attached network IDs, and routed subnets (CIDR). Network-topology data - admin-gated.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSD-WAN config ID (as returned by unifi_list_sdwan_configs).

TDQS

A4/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 burden for behavioral disclosure. It notes the data is 'admin-gated' and indicates network-topology data, but does not mention security implications, potential side effects, or rate limits. Since it's a read operation, that's expected, but the description adds little beyond what the name implies.

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 that front-loads the main purpose and enumerates the key content. 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-only retrieval tool with one parameter and no output schema, the description is quite complete. It lists what the topology includes and notes the admin-gating. The only gap is not mentioning that the output format might have nesting, but that's minor given the low complexity.

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 schema already documents the id parameter. The description adds that the id is from unifi_list_sdwan_configs, which is useful context beyond the schema. This justifies a slightly above-baseline score.

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

Purpose5/5

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

The description clearly states the tool retrieves the full topology for one SD-WAN configuration, enumerating specific contents (variant, settings, hubs/spokes, site/host IDs, network IDs, routed subnets). This distinguishes it from sibling tools like unifi_get_sdwan_config_status and unifi_list_sdwan_configs.

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

Usage Guidelines3/5

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

It implies use for retrieving a specific configuration's topology, and the parameter description mentions id is as returned by unifi_list_sdwan_configs, which gives context. However, it does not explicitly state when not to use it or contrast with alternatives like unifi_get_sdwan_config_status.

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

unifi_get_sdwan_config_statusA

Get deployment status for one SD-WAN configuration: generation/apply status, and per-hub/spoke details including WAN IPs, latency, routes, and any errors or warnings. Network-topology data - admin-gated.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSD-WAN config ID (as returned by unifi_list_sdwan_configs).

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 of behavioral disclosure. It adds useful context that the data is network-topology and admin-gated, and it lists the type of data returned. Still, it does not explicitly state that the operation is read-only, mention error behavior, or address rate limits or permissions beyond 'admin-gated'.

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 primary action is front-loaded, the output details are compactly listed, and the access restriction is appended in a short clause. Every word contributes to the agent's understanding.

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 one-parameter tool with no output schema, the description covers the key return categories and the access requirement. It does not describe the exact status values or response format, and it omits an explicit read-only statement, but given the simplicity of the tool, the definition is nearly complete.

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

Parameters3/5

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

Schema description coverage is 100%: the single 'id' parameter is documented as 'SD-WAN config ID (as returned by unifi_list_sdwan_configs)', which already guides the agent on obtaining the value. The tool description adds no further parameter-level meaning beyond referencing 'one SD-WAN configuration', so it meets the baseline for full schema coverage without elevating it.

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 ('Get deployment status for one SD-WAN configuration') and enumerates exactly what the status includes (generation/apply status, per-hub/spoke details, WAN IPs, latency, routes, errors/warnings). This clearly distinguishes it from the sibling unifi_get_sdwan_config, which presumably returns the configuration itself rather than its deployment status.

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

Usage Guidelines3/5

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

The description implies the tool is for status retrieval, and the schema notes the ID comes from unifi_list_sdwan_configs, suggesting a workflow. However, it does not explicitly state when to use this tool over alternatives like unifi_get_sdwan_config, nor does it mention any exclusions or conditions. Usage context is implied rather than stated.

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

unifi_list_devicesA

List UniFi devices managed by hosts this API key's account owns or super-admins, grouped by host. Each device includes its MAC address, IP address, model, firmware status, and adoption/uptime info. PII-bearing (device MAC/hostname/IP) - admin-gated.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeNoOnly return devices last processed at or after this RFC3339 timestamp.
hostIdsNoRestrict results to devices managed by these host IDs.
pageSizeNoNumber of items to return per page.
nextTokenNoPagination token from a previous response, to fetch the next page.

TDQS

A4/5.0
Behavior4/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 adds genuine value by flagging PII, admin-gated access, and the output fields (MAC, IP, model, firmware status, adoption/uptime), plus the 'grouped by host' behavior. It does not mention rate limits, response envelope, or default filtering, but for a list operation the key behavior and data-sensitivity are disclosed.

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

Conciseness5/5

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

Two sentences: the first states action and scope, the second summarizes output fields and adds a concise PII warning. No filler or redundancy; 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?

With no output schema, the description compensates by enumerating the key returned device attributes and grouping behavior. It also conveys access-sensitivity, which matters for an admin-gated PII-bearing tool. Minor gaps like exact response pagination envelope are absent, but the schema covers pagination parameters and the description covers the essential 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 schema already documents all four parameters (time, hostIds, pageSize, nextToken). The description adds no parameter-level meaning beyond schema, which is consistent with the baseline 3 for a fully-covered 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 begins with a specific verb-resource pair ('List UniFi devices') and adds a precise scope ('managed by hosts this API key's account owns or super-admins') plus grouping behavior. This clearly distinguishes it from sibling tools like unifi_list_sites and unifi_list_hosts, which target different resources.

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

Usage Guidelines3/5

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

The description provides useful context about ownership scope and admin gating, which implicitly tells an agent this is the device-listing tool for host-owned UniFi devices. However, it never explicitly names alternatives or states when NOT to use it (e.g., versus unifi_get_host for a single device), leaving routing partially to inference.

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

unifi_list_hostsA

List every host (UniFi console or network-server application) associated with this API key's UI.com account. Includes hardware ID, current IP address, ownership/block status, and registration/backup timestamps.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageSizeNoNumber of items to return per page.
nextTokenNoPagination token from a previous response, to fetch the next page.

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full disclosure burden. It openly positions the operation as a list/read action and lists the included data: hardware ID, IP address, ownership/block status, and timestamps. It does not mention pagination details or data freshness, but the existing schema already covers 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 with no filler. The main action and scope are front-loaded in the first sentence, and the second sentence concisely lists the output categories. Every sentence 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?

For a simple list operation with two optional parameters and no required inputs, the description gives enough information for an agent to invoke it correctly. It clarifies scope and return content, though it could improve by explicitly addressing pagination behavior or contrasting with sibling list tools.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents pageSize and nextToken. The description adds no extra parameter-level meaning, but none is needed because the parameter descriptions are self-sufficient.

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 precise resource ('every host'), and clarifies what counts as a host ('UniFi console or network-server application'), which sets it apart from sibling tools like unifi_list_devices or unifi_list_sites. It also enumerates the returned fields, leaving no doubt about the tool's function.

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 clearly implies this is for listing all hosts under the account, but it does not explicitly say when to prefer it over alternatives such as unifi_get_host or unifi_list_devices. There is no 'use this when...' or 'not for...' guidance, so an agent must infer the scope from the wording.

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

unifi_list_sdwan_configsA

List every SD-WAN configuration associated with this API key's account (id, name, type only).

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 provided, the description carries the transparency burden. It does disclose the operation is read-only, tied to the API key's account, and only returns a subset of fields. It does not mention potential pagination, errors, or rate limits, but for a simple listing tool the core behavior is clearly disclosed.

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 that front-loads the action and resource, then adds the scope and field limitation. Every word contributes useful information with no redundancy.

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

Completeness4/5

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

Given that there is no output schema, the description adequately explains what will be returned (id, name, type only). It could mention pagination or point to get_sdwan_config for full data, but for a simple parameterless list operation the essential context is present.

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 0 parameters and the schema coverage is 100%, so there are no parameter semantics to clarify. The zero-parameter baseline of 4 applies; the description further clarifies the expected response fields, adding value 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 uses a specific verb ('List') with a clear resource ('SD-WAN configurations'), explicitly scopes it to the account's configurations, and specifies the returned fields ('id, name, type only'). This makes it easy to distinguish from sibling get_sdwan_config or list_devices tools.

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

Usage Guidelines3/5

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

The phrase 'List every' clearly conveys enumeration over all configurations, which implies use cases for browsing or overview rather than retrieving a specific config. However, it does not explicitly mention the sibling get_sdwan_config as the alternative when full details are needed, so guidance is adequate but not fully explicit.

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

unifi_list_sitesA

List every UniFi site (from hosts running the UniFi Network application) visible to this API key's UI.com account. Each entry includes the site and host IDs, site metadata (name, timezone, gateway MAC), aggregate statistics (device/client counts, network performance), and the caller's permission level on that site.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageSizeNoNumber of items to return per page.
nextTokenNoPagination token from a previous response, to fetch the next page.

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 of behavioral disclosure. It does add meaningful context: results are scoped to the API key's UI.com account and include the caller's permission level, which signals authorization-dependent output. However, it does not explicitly state that this is a read-only operation, nor does it mention pagination behavior or any other edge cases.

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

Conciseness5/5

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

The description is a single sentence that front-loads the action and scope, then lists the returned content fields. Every clause adds information; there is no filler or redundant 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?

Since there is no output schema, the description helpfully outlines what each returned entry contains (IDs, metadata, stats, permission level). It also clarifies the source (hosts running the UniFi Network application) and the account-scoping. The only missing context is pagination behavior and edge cases, which are minor for a straightforward list operation.

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

Parameters3/5

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

The input schema covers 100% of the parameters (pageSize and nextToken), each with its own description, so the baseline is 3. The tool description adds no parameter-specific guidance, but the schema already carries that weight, so no deduction is warranted.

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 begins with a specific verb and resource: 'List every UniFi site', further scoped by 'visible to this API key's UI.com account'. It enumerates exactly what each entry includes (IDs, metadata, stats, permission level), leaving no ambiguity about the tool's function. This clearly distinguishes it from sibling tools that list hosts, devices, or SDWAN configs.

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: if you need UniFi sites visible to the account, or site IDs/metadata/stats, this is the tool. However, it never explicitly names alternatives like unifi_list_hosts or unifi_list_devices, nor does it state when not to use this tool. The guidance is inferred from the resource name rather than stated.

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

unifi_query_isp_metricsA

Get WAN/ISP health and traffic metrics for specific host/site pairs and time ranges. A filtered read, not a mutation, despite being a POST on UniFi's API. If the API key lacks access to a requested site, the response reports status:partialSuccess for a mixed result or fails outright if none are accessible.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesMetric interval.
sitesYesHost/site pairs to query, each with an optional time range.

TDQS

A3.8/5.0
Behavior4/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 and handles it well: it discloses that the operation is 'a filtered read, not a mutation, despite being a POST' and details the partialSuccess/outright-failure auth semantics. This preempts two likely agent misjudgments — assuming POST implies a write and assuming failures are uniform.

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

Conciseness5/5

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

Two sentences with zero filler: the core purpose is front-loaded first, followed by the POST-method caveat, then the failure semantics. Every clause earns its place and nothing repeats what the schema already states.

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 2-parameter tool with a complete schema and no output schema, the description covers purpose, interface-safety context, and error behavior. The remaining gaps are minor: typical response contents and default behavior when beginTimestamp/endTimestamp are omitted.

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 interval enum and host/site pairs with optional time ranges are already documented in the schema. The description's 'host/site pairs and time ranges' phrasing reinforces the parameters but does not materially extend their meaning, placing it at the baseline 3 for fully-covered schemas.

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

Purpose4/5

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

The description states a specific verb and resource: 'Get WAN/ISP health and traffic metrics' scoped to 'specific host/site pairs and time ranges.' This clearly identifies what the tool does, but it does not explicitly distinguish itself from the near-twin sibling unifi_get_isp_metrics, so it falls just 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 scoping phrase 'for specific host/site pairs and time ranges' implies the usage context, and calling it a 'filtered read' hints at selection logic. However, no alternative tools are named and no explicit when-to-use versus when-not-to-use guidance is provided, so the agent must infer the routing decision among siblings.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 9 tool updatesv0.1.0
    • First observedunifi_get_host
    • First observedunifi_get_isp_metrics
    • First observedunifi_get_sdwan_config
    • First observedunifi_get_sdwan_config_status
    • First observedunifi_list_devices
    • First observedunifi_list_hosts
    • First observedunifi_list_sdwan_configs
    • First observedunifi_list_sites
    • First observedunifi_query_isp_metrics

TDQS

A3.9/5.0

Scored across 9 tools

Disambiguation4/5

Most tools are clearly distinct by resource type (sites, hosts, devices, SD-WAN configs, ISP metrics). The only potential confusion is between unifi_get_isp_metrics and unifi_query_isp_metrics, which both fetch WAN/ISP metrics—though one is account-wide and the other is a filtered query, the overlap could cause misselection.

Naming Consistency4/5

All tools follow a consistent unifi_<verb>_<noun> snake_case pattern, with list for plural collections and get for singular resources. The minor deviation is query_isp_metrics using 'query' instead of 'get' for a similar read operation, slightly breaking the otherwise predictable pattern.

Tool Count5/5

Nine tools is a well-scoped count for a UniFi network-management server. Each tool covers a distinct resource area (sites, hosts, devices, SD-WAN, ISP metrics) without unnecessary bloat or overlap.

Completeness4/5

The tool surface provides solid read-only coverage for the core UniFi resources, including listing and detail retrieval for hosts and SD-WAN configs, plus metrics for ISP health. Minor gaps exist—no singular site or device detail endpoints and no client-level information—but agents can work around these using the existing list operations.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to interact with Ubiquiti UniFi network infrastructure for monitoring devices, managing clients, and performing configuration tasks like blocking/unblocking devices and viewing network health.
    10
    1
    GPL 3.0
  • A
    license
    D
    quality
    D
    maintenance
    Enables comprehensive management of UniFi network infrastructure through the UniFi Cloud API, including device control, client management, camera settings, and access door control through natural language.
    39
    27 npm
    Apache 2.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
    26 npm
    5
    MIT