unifi-access-setup
Configure the UniFi Access MCP server for a supported MCP client — set controller host, credentials, API key, and permissions.…
Investigate one UniFi Network device incident (a switch, AP or gateway going offline, disconnecting or misbehaving) over an explicit, bounded time window, with Protect camera context, using only the local read-only evidence tools. Produces a cited report that states its
$ npx -y skills add sirkirby/unifi-mcp --skill incident-investigation --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/incident-investigationContext preview
The summary Claude sees to decide when to auto-load this skill.
Investigate one UniFi Network device incident (a switch, AP or gateway going offline, disconnecting or misbehaving) over an explicit, bounded time window, with Protect camera context, using only the local read-only evidence tools. Produces a cited report that states its
name: incident-investigation description: Investigate one UniFi Network device incident (a switch, AP or gateway going offline, disconnecting or misbehaving) over an explicit, bounded time window, with Protect camera context, using only the local read-only evidence tools. Produces a cited report that states its coverage. Use when the user asks what happened to a Network device at a given time.
Investigate one Network device incident over one explicit window. Every claim in the report cites **evidence**: records and per-source **coverage** returned by the two incident evidence tools. Each tool returns a bounded **view** of its evidence document (`schema: "unifi-incident-evidence-view"`) that fits in one tool result: every source's outcome, failure and coverage, plus the record citations that fit (at most `max_records_returned`), with omitted records counted and a cursor to read the rest. The local product servers are the whole transport; nothing here needs the cloud worker or the relay.
Requires: network, protect Optional: worker
The investigation needs `unifi_get_incident_evidence` (Network) and `protect_get_incident_evidence` (Protect). Discovery shows a tool is listed, not that its controller is reachable or authorized; the evidence documents report that per source.
unavailable. Offer a Network-only investigation; with the user's consent, run the same workflow without the Protect call and label the report "Network-only: Protect unavailable, no camera context". A Network-only report never reaches complete coverage of the incident.
device evidence to investigate.
connected relay, collects the same evidence through these two tools and returns one combined document; this workflow calls the tools directly so each product's document and budgets stay separate. When you reach the product servers through the cloud worker, call the same two evidence tools.
Use the product setup skills for connection help; never ask for secrets.
Every report has a Coverage and Limitations section built from the evidence documents, never from memory or from record counts alone:
omitted from the view.
queried window, filters, pagination, truncation, retention and counts (formats under [Report](#report)).
Claims are bounded by coverage:
document in the investigation has `coverage_complete: true` and `overall` is `complete` or `empty`.
source." — only when every document has `overall: "empty"` and `coverage_complete: true`, and Protect was read. Otherwise write "No concerning activity found in the retrieved records" with the coverage gap beside it.
source's `coverage.retention_coverage` is `unknown`. Whenever any source is `empty`, including beside the all-clear, write this sentence: "Neither controller reports how long it keeps events (retention `unknown`), so events older than its retention may have been discarded without a trace."
source is complete.
presentation limit, not a coverage gap: coverage and counts still describe every collected record. Make no claim about omitted records beyond their counts. Records counted in `too_large` have identifiers too long to cite in a view, or a citation too large to fit beside its sources; only `detail="full"` shows them.
`event_type`, `original_value`, `source_tool`) with its full length; a source's `truncated` names its labels cut the same way (`source_tool`, `controller_id`, `site`, `location_id`). Quote only the prefix, mark it as cut, and claim nothing about the text that was cut off.
`timeout`, `unsupported`, `parse_failed`, `not_attempted`) is missing evidence, never an empty result.
The investigation reads; it never changes anything.
directly by its own name; the lazy-mode `*_execute` and `*_batch` dispatchers are not read-only and are not part of this workflow.
other mutation, even when the cause looks obvious. Recommend actions in words for the user to decide.
subscriptions are outside this workflow.
incident evidence tools for exact identifiers, `protect_get_camera` by camera ID and `unifi_get_client_details` by MAC. Never offer to list devices, cameras, access points or doors, and never reach for `*_load_tools`, `*_execute` or `*_batch`.
UniFi app, or by running the product's own list tool in eager mode.
`detail="full"` without the user's yes to that follow-up. Offer it, end you
Leverage agents and agentic AI workflows to manage your UniFi deployment.
Configure the UniFi Access MCP server for a supported MCP client — set controller host, credentials, API key, and permissions.…
Generate a sanitized UniFi Access support bundle, help the user review it locally, and prepare it for a bug report without…
How to manage UniFi Access door control — locks, credentials, visitors, access policies, and events. Use this skill when the user…
Review retrieved activity at one area in a given time window from the cloud worker's merged Network and Protect timeline, with…
Audit visitor activity by reading Access door events and setting them beside Network evidence from the cloud worker's timeline…
Audit UniFi firewall policies for conflicts, redundancies, security gaps, and best practices. Use when asked to review firewall…