account-hygiene
Periodic hygiene review of a client's 1Password account for QBRs and license true-ups: reconciling active and suspended seats…
Axcient x360Recover backup jobs: the BRC vs Replibit job-type split, per-job protection thresholds, and job run history with its starttime_begin pagination floor.
Claude Code
$ npx -y skills add wyre-ai/msp-claude-plugins --skill jobs --agent claude-code
Codex
$ npx skills add wyre-ai/msp-claude-plugins --skill jobs -a codex -y
Cursor
$ npx skills add wyre-ai/msp-claude-plugins --skill jobs -a cursor -y
Gemini CLI
$ npx skills add wyre-ai/msp-claude-plugins --skill jobs -a gemini-cli -y
GitHub Copilot
$ npx skills add wyre-ai/msp-claude-plugins --skill jobs -a github-copilot -y
OpenCode
$ npx skills add wyre-ai/msp-claude-plugins --skill jobs -a opencode -y
Windsurf
$ npx skills add wyre-ai/msp-claude-plugins --skill jobs -a windsurf -y
name: "Axcient Jobs" description: > Axcient x360Recover backup jobs: the BRC vs Replibit job-type split, per-job protection thresholds, and job run history with its starttime_begin pagination floor. when_to_use: >- When looking up backup job status or run history for an Axcient-protected device. Use when: axcient job, backup job, job history, job status, job thresholds, or x360recover job.
A job is one configured backup task running against a device — the thing that actually produces recovery points. Jobs always nest under a specific `client_id` and `device_id`; there is no organization-wide job list. Get a device's job IDs from `axcient_get_device` (the `jobs` array) or `axcient_list_devices_by_client` first.
| Tool | Description | Arguments | |------|-------------|-----------| | `axcient_list_jobs_by_device` | All jobs for a device | `client_id`, `device_id` | | `axcient_get_job` | One job's detail | `client_id`, `device_id`, `job_id` | | `axcient_get_job_history` | Run history for a job | `client_id`, `device_id`, `job_id`, `limit?`, `offset?`, `starttime_begin?` |
There is no job-level list at the organization or client level — jobs are always reached through a specific device.
The job schema is a tagged union — `org_level_jobs_response` is one of `org_level_brc_job` or `org_level_replibit_job`, mirroring the device-level `product` split (`BRC` vs `X360RECOVER`). Handle both shapes: a legacy appliance's jobs return the BRC shape, current-generation appliances and D2C devices return the Replibit shape. Don't assume one field set applies to every job in a fleet with mixed appliance generations.
Jobs carry the same threshold structure as devices — `vault_rp_threshold`, `cloud_rp_threshold`, `local_rp_threshold`, `protection_threshold` — each an object with `value`, `enabled`, and `overridden`. `overridden: true` means this job's threshold deviates from the client- or organization-level default; check it before assuming a device-level threshold applies uniformly across all its jobs.
axcient_get_job_history
Parameters:
or after this time
**Known upstream caveat:** community testing against Axcient's API found this endpoint unreliable in some environments — treat an empty or unexpected result here as worth double-checking against `axcient_get_device_restore_points` (which reflects what actually landed, regardless of what the history endpoint reports) before concluding a job has never run.
1. From `axcient_get_device`, note which `latest_*_rp` timestamp is stale and pull the relevant job ID from the device's `jobs` array 2. `axcient_get_job` for the job's current configuration and thresholds 3. `axcient_get_job_history` with a `starttime_begin` a few days back to see whether the job has been running and failing, or not running at all 4. A job that's running but failing points at a data/connectivity problem on the source system; a job that isn't running at all points at scheduling or agent-health on the appliance/agent side
1. `axcient_list_jobs_by_device` for the device in question 2. For each job, check `thresholds.*.overridden` — flag any job whose effective SLA differs from what the client or org default implies 3. Cross-reference with `axcient_get_vault_threshold` (see the `vaults` skill) for the vault-side connectivity threshold, which is separate from a job's own `vault_rp_threshold`
**Cause:** Invalid `job_id`, or a `job_id` that belongs to a different `client_id`/`device_id` pair than supplied **Solution:** Re-derive the job ID from `axcient_list_jobs_by_device` rather than guessing — job IDs are not guaranteed unique outside their parent device.
**Cause:** Either the job genuinely hasn't run in the queried window, or the known history-endpoint unreliability noted above **Solution:** Widen or drop `starttime_begin`; corroborate with `axcient_get_device_restore_points` before reporting "never ran."
construct job lookups from IDs seen in other contexts.
surfacing explicitly, not noise to filter out.
usable recovery point," given the history endpoint's known flakiness.
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.