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 systems — the assets discovered by inspections — plus their detail data (raw configuration JSON with historical snapshots), dataprint extraction via JMESPath expressions, and the v2 Asset Inventory identity and device profiles that correlate one entity across multiple
$ npx -y skills add wyre-technology/msp-claude-plugins --skill systems --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/systemsContext preview
The summary Claude sees to decide when to auto-load this skill.
Liongard systems — the assets discovered by inspections — plus their detail data (raw configuration JSON with historical snapshots), dataprint extraction via JMESPath expressions, and the v2 Asset Inventory identity and device profiles that correlate one entity across multiple
name: "Liongard Systems" description: > Liongard systems — the assets discovered by inspections — plus their detail data (raw configuration JSON with historical snapshots), dataprint extraction via JMESPath expressions, and the v2 Asset Inventory identity and device profiles that correlate one entity across multiple inspectors. when_to_use: >- When listing or inspecting discovered assets, reading configuration data out of a system's detail record, writing JMESPath/dataprint expressions, or correlating identities and devices across platforms. Use when: liongard system, liongard device, system detail, dataprint, jmespath, liongard asset, liongard inventory, system data liongard, or liongard identity.
Systems are the entities discovered during Liongard inspections. When a launchpoint runs an inspection, it discovers systems such as servers, firewalls, cloud services, user accounts, domain controllers, and other infrastructure components. Each system carries detailed configuration data captured at the time of inspection, giving a historical record of the IT environment.
of something an inspection found. Rebooting it, patching it, or running a script needs the RMM that manages it: `ncentral-devices`, `atera-agents`, `syncro-assets`, `superops-assets`, or `immybot-endpoint-management`.
Hand-maintained documentation, passwords, and CIs live in `hudu-assets` or `itglue-configurations`.
problem; use `liongard-inspections`.
A system is identified by `ID` and always traces back to the `InspectorID` that found it, the `LaunchpointID` that produced it, and the parent `EnvironmentID`. `Status` is one of `Active`, `Inactive`, or `Error`; `LastInspection` tells you how fresh the data is. `DetailCount` and `DetectionCount` are only returned on the single-system GET, not in list responses.
See [references/fields.md](references/fields.md) for the complete field reference and the entity relationship map.
System details contain the raw configuration data captured during inspections — the actual IT documentation payload: user lists, firewall rules, backup statuses, license counts, security settings. Details are stored as structured JSON under a top-level `Data` key and can be queried with JMESPath via the dataprints API. Details are versioned: passing `?date=YYYY-MM-DD` returns the snapshot as of that date, which is what makes configuration diffing possible.
Dataprints evaluate a JMESPath expression server-side against a system's detail record, so you retrieve exactly the fields you need instead of pulling the whole detail document and parsing it client-side.
Asset Inventory aggregates identities and devices across *all* inspectors into single profiles. Each profile carries a `Sources` array showing every inspector that observed that entity — an AD account and its Microsoft 365 counterpart resolve to one identity, a physical host and its vSphere VM record to one device. This is the cross-platform view; per-inspector data stays on the systems themselves. Note that inventory IDs are UUID strings, not the integer IDs used elsewhere in the API.
| Expression | Description | |------------|-------------| | `Data.Field` | Direct field access | | `Data.Array[0]` | First array element | | `Data.Array[*].Name` | All Name values from array | | `Data.Array[?Status=='Active']` | Filter array elements | | `Data.{a: Field1, b: Field2}` | Multi-select hash | | `Data.Array | length(@)` | Count array elements | | `Data.Array[*].Name | sort(@)` | Sort values | | `Data.Array[?Age > \`30\`]` | Numeric comparison |
The full endpoint catalog with request/response bodies lives in [references/api.md](references/api.md). The non-obvious parts:
1. **Get current detail** - Fetch latest system detail 2. **Get historical detail** - Fetch detail from a specific date 3. **Compare data** - Diff the two snapshots 4. **Identify changes** - Note what configuration items changed
1. **Query identities** - Get all identities for an environment 2. **Review sources** - See which platforms each identity appears in 3. **Identify gaps** - Find users missing from expected platforms 4. **Check status** - Verify enabled/disabled status across platforms 5. **Report findings** - Generate cross-platform identity report
See [references/examples.md](references/examples.md) for worked implementations of paginated system retrieval and dataprint extraction.
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…