api-patterns
3CX's native PBX MCP server: the per-PBX endpoint shape (every PBX is its own FQDN and its own OAuth authorization server — there is no shared mcp.3cx.com),…
Liongard's inspection pipeline: inspector templates and their credential and agent requirements, launchpoint configuration that binds inspector + environment + agent + credentials + cron schedule, on-demand inspection runs and their status lifecycle, and the failure modes behind
$ npx -y skills add wyre-technology/msp-claude-plugins --skill inspections --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/inspectionsContext preview
The summary Claude sees to decide when to auto-load this skill.
Liongard's inspection pipeline: inspector templates and their credential and agent requirements, launchpoint configuration that binds inspector + environment + agent + credentials + cron schedule, on-demand inspection runs and their status lifecycle, and the failure modes behind
name: "Liongard Inspections" description: > Liongard's inspection pipeline: inspector templates and their credential and agent requirements, launchpoint configuration that binds inspector + environment + agent + credentials + cron schedule, on-demand inspection runs and their status lifecycle, and the failure modes behind failed runs. when_to_use: >- When configuring or scheduling what Liongard inspects, triggering a run by hand, migrating inspections between agents, or diagnosing an inspection that failed. Use when: liongard inspection, liongard inspector, launchpoint, inspection schedule, run inspection, liongard launchpoint, trigger inspection, inspection template, or liongard cron.
Inspections are the core mechanism by which Liongard captures IT documentation. The system has three parts: **inspectors** (templates defining what to inspect), **launchpoints** (configured instances tying an inspector to an environment, agent, credentials, and schedule), and **inspections** (individual execution runs that produce system data and potentially trigger detections). The relationship flows: **Inspector** (template) -> **Launchpoint** (configuration) -> **Inspection** (execution) -> **System** (discovered data).
`liongard_inspections_run` collects configuration data. It runs no operator-supplied code and changes nothing on the target. Script execution is `immybot-script-execution`, `ncentral-monitoring-tasks`, `superops-runbooks`, `atera-agents`, `syncro-assets`, `connectwise-automate-scripts`, or `datto-rmm-jobs`.
data collection, not patching or reboots; use `immybot-maintenance-sessions` or `ncentral-monitoring-tasks`.
`liongard-detections` for the changes it surfaced.
Inspectors are pre-built templates provided by Liongard that define what technology platform to inspect and what data to collect. There are hundreds, spanning identity, email/collaboration, networking, virtualization, backup/DR, security, cloud, and core infrastructure.
Two inspector fields drive launchpoint design: `RequiresAgent` (whether a locally deployed agent must run it, or Liongard can reach the target directly — Active Directory needs an agent, Microsoft 365 does not) and `CredentialType` (what kind of authentication the target expects, e.g. Domain Admin vs App Registration). `DataPoints` — the list of what the inspector collects — is returned only on the single-inspector GET, not in the list response.
See [references/fields.md](references/fields.md) for the complete inspector and launchpoint field references, the full inspector category table, and the entity relationship map.
A launchpoint brings together everything needed to run an inspection:
| Component | Purpose | |-----------|---------| | **Inspector** | Which template to use | | **Environment** | Which customer this is for | | **Agent** | Which agent runs the inspection | | **Credentials** | How to authenticate to the target | | **Schedule** | When to run inspections | | **Configuration** | Inspector-specific settings |
`InspectorID`, `EnvironmentID`, and `Name` are required; `AgentID` is required only when the inspector's `RequiresAgent` is true. Inspector-specific settings and credentials go in a nested `Configuration` object whose keys vary per inspector. `LastInspection` and `NextInspection` are read-only and are the fastest way to spot a launchpoint that has silently stopped running.
| Status | Description | |--------|-------------| | `Queued` | Inspection is waiting to be picked up by agent | | `Running` | Inspection is currently executing | | `Completed` | Inspection finished successfully | | `Failed` | Inspection encountered an error | | `Timeout` | Inspection exceeded maximum runtime |
Launchpoints use standard cron expressions for scheduling:
┌───────── minute (0-59) │ ┌─────── hour (0-23) │ │ ┌───── day of month (1-31) │ │ │ ┌─── month (1-12) │ │ │ │ ┌─ day of week (0-6, Sun=0) │ │ │ │ │ * * * * *
| Cron Expression | Description | |-----------------|-------------| | `0 2 * * *` | Daily at 2:00 AM | | `0 */6 * * *` | Every 6 hours | | `0 0 * * 0` | Weekly on Sunday at midnight | | `0 8 1 * *` | Monthly on the 1st at 8:00 AM | | `*/30 * * * *` | Every 30 minutes | | `0 2 * * 1-5` | Weekdays at 2:00 AM |
1. **Stagger inspection times** - Avoid running all launchpoints at the same time 2. **Use off-peak hours** - Schedule during client off-hours (e.g., 2:00 AM) 3. **Match frequency to change rate** - Daily for AD/O365, weekly for static infrastructure 4. **Consider agent load** - Don't overload agents with concurrent inspections 5. **Account for time zones** - Schedule based on the client's local time
The full endpoint catalog with request/response bodies lives in [references/api.md](references/api.md). The non-obvious parts:
One command to supercharge Claude Code for MSP workflows. Then restart Claude Code. That's it. Documentation: mcp.wyre.ai
Repo: wyre-technology/msp-claude-plugins
3CX's native PBX MCP server: the per-PBX endpoint shape (every PBX is its own FQDN and its own OAuth authorization server — there is no shared mcp.3cx.com),…
3CX's live-operations surface: read-only visibility into active calls, recordings, voicemail, department and queue membership, and forwarding/presence…
3CX's read-only directory surface: resolving a caller by email or by exact extension, searching the PBX's own phonebooks, searching contacts synced from an…
3CX's system-and-configuration surface: server time, PBX event log and application log search, service status, database schema and the read-only SELECT-only…
Abnormal Security abuse mailbox cases: user-reported email submissions, case statuses and judgments, the case lifecycle, bulk and remediation actions, and…
Abnormal Security message analysis: message retrieval, email header inspection, attachments, sender reputation, delivery context, and SPF/DKIM/DMARC…