account-hygiene
Periodic hygiene review of a client's 1Password account for QBRs and license true-ups: reconciling active and suspended seats…
Axcient x360Recover clients: the health_status model, client_code, the three-way protected-system counter breakdown (appliance_based, d2c, cloud_archive), and minting direct-to-cloud agent enrollment tokens.
Claude Code
$ npx -y skills add wyre-ai/msp-claude-plugins --skill clients --agent claude-code
Codex
$ npx skills add wyre-ai/msp-claude-plugins --skill clients -a codex -y
Cursor
$ npx skills add wyre-ai/msp-claude-plugins --skill clients -a cursor -y
Gemini CLI
$ npx skills add wyre-ai/msp-claude-plugins --skill clients -a gemini-cli -y
GitHub Copilot
$ npx skills add wyre-ai/msp-claude-plugins --skill clients -a github-copilot -y
OpenCode
$ npx skills add wyre-ai/msp-claude-plugins --skill clients -a opencode -y
Windsurf
$ npx skills add wyre-ai/msp-claude-plugins --skill clients -a windsurf -y
name: "Axcient Clients" description: > Axcient x360Recover clients: the health_status model, client_code, the three-way protected-system counter breakdown (appliance_based, d2c, cloud_archive), and minting direct-to-cloud agent enrollment tokens. when_to_use: >- When looking up, listing, or auditing Axcient clients, or enrolling a new direct-to-cloud (D2C) backup agent. Use when: axcient client, client health, protected systems, d2c agent, d2c token, client code, or x360recover client.
A "client" in x360Recover is the tenant/customer boundary — roughly equivalent to a PSA company. Every device, job, vault, and appliance belongs to exactly one client. Client health is a rollup Axcient computes from the devices underneath it, not a value you set.
| Tool | Description | Arguments | |------|-------------|-----------| | `axcient_list_clients` | Every client visible to this credential | `include_appliances?` | | `axcient_get_client` | One client's detail | `client_id`, `include_appliances?` | | `axcient_get_d2c_agent_token` | Mint a D2C agent enrollment token | `client_id`, `vault_id` |
axcient_list_clients
**Example response (one client):**
{
"id": 26,
"name": "Acme Corp",
"client_code": "ACME",
"active": true,
"health_status": "NORMAL",
"devices_counters": {
"appliance_based": [
{ "type": "SERVER", "count": 0 },
{ "type": "WORKSTATION", "count": 4 }
],
"d2c": [
{ "type": "SERVER", "count": 2 },
{ "type": "WORKSTATION", "count": 7 }
],
"cloud_archive": [
{ "type": "SERVER", "count": 2 },
{ "type": "WORKSTATION", "count": 0 }
]
}
}`devices_counters` breaks the client's protected systems into three independent buckets, each split by `SERVER`/`WORKSTATION`:
| Bucket | Meaning | |--------|---------| | `appliance_based` | Backed up to a local Axcient appliance | | `d2c` | Direct-to-cloud — no local appliance, agent replicates straight to Axcient's cloud | | `cloud_archive` | Long-term cloud archive copies |
A device can appear in more than one bucket (e.g. appliance-based **and** cloud-archived via vault replication). Sum the buckets to get a client's total protected-system count; do not assume they're mutually exclusive.
`health_status` is a client-level rollup (values observed: `NORMAL`, and presumably `WARNED`/`CRITICAL` mirroring the device-level status model — see the `devices` skill). It reflects the worst device under that client, not an independently-computed value. To find *which* device is dragging a client's health down, call `axcient_list_devices_by_client` and inspect each device's own `current_health_status`.
axcient_get_d2c_agent_token
Parameters:
Returns short-lived credential material for installing a **new** direct-to-cloud backup agent. This is a provisioning action, not a read — every call issues fresh token material. It does not affect any agent already enrolled, and it cannot be used to recover or inspect an existing agent's credentials.
1. `axcient_list_clients` — scan `health_status` across all clients 2. For any client not `NORMAL`, `axcient_list_devices_by_client` on that `client_id` to find the specific device(s) failing 3. `axcient_get_device` on the failing device(s) for `current_health_status.reason` and timestamps 4. Cross-reference with `axcient_list_jobs_by_device` / `axcient_get_job_history` — a device can be "healthy" by its own status while its most recent job run failed
1. Confirm the target client with `axcient_get_client` 2. Confirm the target vault exists and is reachable with `axcient_get_vault` (see the `vaults` skill — private vaults may have connectivity constraints a cloud vault doesn't) 3. `axcient_get_d2c_agent_token` with that `client_id`/`vault_id` 4. Hand the returned token to whoever is installing the agent — it is not something this tool surface can retrieve again after the fact
**Cause:** Invalid `client_id`, or the client belongs to a different organization than the API key's **Solution:** Verify against `axcient_list_clients`. A non-numeric `client_id` surfaces as a 401, not a 400 — see the `api-patterns` skill.
**Cause:** The API key's account lacks permission to provision new agents **Solution:** This is an admin-gated operation on Axcient's side; the key needs elevated permissions, not a retry.
answer — it tells you *which* client needs attention, not *why*.
UI and reports; surface it alongside `name` when presenting client lists to a technician who already knows the codes.
call provisions real enrollment material. Confirm the client and vault first.
One command to supercharge Claude Code for MSP workflows. Then restart Claude Code. That's it. Documentation: wyre-ai.github.io/msp-claude-plugins
Periodic hygiene review of a client's 1Password account for QBRs and license true-ups: reconciling active and suspended seats…
1Password MCP fundamentals through Conduit: the region plus two independent credential halves (Events Reporting token, Users API…
How to review a departing or departed user's 1Password footprint with the read-only tools: confirm the seat is suspended, find…
Triage of 1Password sign-in attempts for one client account: pulling the sign-in feed over a window, grouping failures by user,…
3CX's live-operations surface: read-only visibility into active calls, recordings, voicemail, department and queue membership,…
3CX's read-only directory surface: resolving a caller by email or by exact extension, searching the PBX's own phonebooks,…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.