Borrowing it
Nothing to install: this file belongs to enuno/unifi-mcp-server. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/enuno/unifi-mcp-server/main/.agents/skills/unifi-cloud-fleet-tools/SKILL.mdgit clone --depth 1 https://github.com/enuno/unifi-mcp-serverWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/enuno/unifi-mcp-server/unifi-cloud-fleet-tools)<a href="https://agentmods.dev/skills/enuno/unifi-mcp-server/unifi-cloud-fleet-tools"><img src="https://agentmods.dev/badge/skills/enuno/unifi-mcp-server/unifi-cloud-fleet-tools/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/enuno/unifi-mcp-server/unifi-cloud-fleet-tools"><img src="https://agentmods.dev/badge/skills/enuno/unifi-mcp-server/unifi-cloud-fleet-tools.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00087 | $0.02591 |
| Opus 5.5 | $0.00035 | $0.01036 |
| Sonnet 5.5 | $0.00017 | $0.00518 |
| Haiku 4.5 | $0.00009 | $0.00259 |
Grade A, and why
unifi-cloud-fleet-tools scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 124 lines — stays where its author put it; the contents beside it link to each section on GitHub.
UniFi Cloud and Fleet Tools
Cloud tools call https://api.ui.com (Site Manager and the connector proxy). Fleet code lets one server serve many controllers. Read this before you change either. For the general add-a-tool workflow, see unifi-mcp-tool-builder.
Module map
| Module | Tools | Examples |
|---|---|---|
src/tools/site_manager.py |
16 | list_all_sites_aggregated, get_isp_metrics, list_hosts |
src/tools/connector.py |
10 | connector_network_get, connector_protect_post |
src/tools/integration_api.py |
14 | list_integration_sites, list_integration_wans |
src/tools/sites.py |
3 | list_sites, get_site_details, get_site_statistics |
src/tools/mobility.py |
8 | list_mobility_workspaces, update_mobility_device |
src/tools/innerspace.py |
6 | list_innerspace_floor_plans (reads only) |
src/tools/carrier.py |
11 | create_carrier_subscriber, suspend_carrier_subscriber |
Fleet tools are built inside functions, not defined at module level, so the "every public async function is a tool" rule does not apply to them:
| Source | Tools | Registered when |
|---|---|---|
register_fleet_tools() in src/fleet/tools.py |
list_controllers, select_controller, get_active_controller |
always |
register_admin_tools() in src/fleet/admin_tools.py |
11, such as register_controller, create_api_token, verify_audit_chain |
DATABASE_URL is set, and not read-only |
register_fleet_read_tools() in src/fleet/fleet_tools.py |
fleet_health, fleet_sites, fleet_inventory, fleet_fanout |
DATABASE_URL is set |
API modes and gating
APIType(src/config/config.py) islocal,cloud-v1orcloud-ea. The code default iscloud-ea.- Cloud modes register only
_CLOUD_TOOL_MODULES(src/main.py):sites,site_manager,connector,integration_api,carrier,innerspaceandmobility. Local mode registers these too. In cloud modeget_site_statisticsis left out, because its endpoints return 404 on the cloud API. That gives 71 tools, including the 4 fleet tools. - Local mode registers both lists, so the cloud tools are available there too.
- Site Manager tools need
UNIFI_SITE_MANAGER_ENABLED=true:site_managertools use therequire_site_managerdecorator;mobility,innerspaceandcarriercall their own_require_cloud_api(), which checkssite_manager_enabled;- the connector tools repeat the check inline.
- Paths:
SiteManagerClient(src/api/site_manager_client.py) uses the base URLhttps://api.ui.com/v1/and theX-API-KEYheader.- Connector calls go to
connector/consoles/{console_id}/proxy/{network|protect}/{path}. _validate_connector_params(src/tools/connector.py) checks both inputs before a client is built, and every connector tool uses the normalized values it returns.console_idgoes throughvalidate_path_segment(src/utils/validators.py): surrounding whitespace is stripped, then only[A-Za-z0-9._~:-]is allowed, up to 256 characters, and an all-dots value is refused.pathgoes throughvalidate_proxy_path: leading slashes are stripped, every segment must match the same character set and must not be empty,.or.., a single trailing slash is allowed, and the whole path is capped at 2048 characters.?,#,%and\are refused, so query strings belong inparams. This keeps a caller, including avieweron the read-tier GET tools, inside the proxy prefix.- InnerSpace goes through the connector proxy.
settings.get_integration_path()gives/v1/...for cloud-v1 and/integration/v1/...for cloud-ea.
- Profiles:
UNIFI_PROFILEhasmobility,innerspaceandcarriersets.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago Changed 8c9d7fa04794
- 9d ago First seen · 124 lines · 87 tokens per session scan A f8aa195daaa6
unifi-cloud-fleet-tools is a skill published in the GitHub repository enuno/unifi-mcp-server (308 stars, last pushed 4d ago), licensed Apache-2.0. It adds 87 tokens to every session and 2,591 once invoked, about $0.0003 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-10-15.
Other skills, from other repositories
gke-compute-classes
Configures, optimizes, and troubleshoots GKE ComputeClasses. Use when configuring Spot VMs with on-demand fallback, targeting specific accelerators (GPUs/TPUs) or machine families, restricting ComputeClass access, or debugging pending pods related to node pool auto-creation. Do not use for cluster-level Node Auto…
jetson-diagnostic
Read-only Jetson health snapshot for identity, memory, GPU, thermal, power, storage, services, and top processes.
holoscan-install-wheel
Install Holoscan SDK 5.x CUDA 13 Python wheels in an isolated environment, choosing the full stack or version-matched components.
offensive-z-wave
Z-Wave attack methodology — sniffing with Z-Force / EZ-Wave / RTL-SDR + ZniffMobile, S0 (legacy) network-key derivation flaw and key reuse, S2 (modern) ECDH commissioning analysis, replay/injection on unauthenticated nodes, default-key brute-force on test deployments, and home-automation hub pivots. Use when targeting…
doca-socket-relay
Use this skill when the operator is driving the DOCA Socket Relay to bridge a socket-oriented host application onto a BlueField DPU peer without rewriting it — picking the deployment shape (in-process, sidecar, or BlueField service container), configuring the host-side socket and the DPU-side forwarding endpoint…
hsb-flash
Flash the FPGA on an HSB board connected to an NVIDIA devkit. Supports HSB Lattice boards (FPGA versions 2407, 2412, 2507, 2510) and Leopard Imaging VB1940 "all-in-one" cameras (FPGA versions 2507, 2510). Uses release-specific YAML manifests and board-type-specific program commands. Lattice and VB1940 commands must…