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),…
ConnectWise Automate computer/endpoint management: computer identifiers (ComputerID, Name, ComputerGUID, MAC), status values, OS types, hardware/software inventory, disk, patch, and antivirus status, plus remote management operations.
$ npx -y skills add wyre-technology/msp-claude-plugins --skill computers --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/computersContext preview
The summary Claude sees to decide when to auto-load this skill.
ConnectWise Automate computer/endpoint management: computer identifiers (ComputerID, Name, ComputerGUID, MAC), status values, OS types, hardware/software inventory, disk, patch, and antivirus status, plus remote management operations.
name: "ConnectWise Automate Computers" description: > ConnectWise Automate computer/endpoint management: computer identifiers (ComputerID, Name, ComputerGUID, MAC), status values, OS types, hardware/software inventory, disk, patch, and antivirus status, plus remote management operations. when_to_use: >- When listing, searching, managing, and monitoring devices. Use when: automate computer, automate endpoint, automate device, automate agent, computer status, computer lookup, managed computer, computer online, computer offline, computer inventory, computer patches, computer antivirus, or labtech computer.
Computers are the core managed entities in ConnectWise Automate. Each computer represents an endpoint with the Automate agent installed - workstations, servers, or network devices. This skill covers computer identification, status monitoring, inventory, patch management, and antivirus status.
endpoint agent, never an AI subagent definition under `agents/*.md`.
parallel configuration record with its own ID; an Automate `ComputerID` is not a PSA `configuration/id`. Reach configurations through `connectwise-psa-api-patterns` (`/company/configurations`).
health live here; finding the right script, validating its parameters and reading execution results are `connectwise-automate-scripts`.
of devices and endpoints; use `datto-rmm-devices`, `ninjaone-devices` or `atera-devices`.
Every computer has multiple identifiers:
| Identifier | Type | Description | Example | |------------|------|-------------|---------| | `ComputerID` | integer | Primary key, auto-incrementing | `12345` | | `Name` | string | Computer hostname | `ACME-DC01` | | `ComputerGUID` | string | Globally unique identifier | `a1b2c3d4-e5f6-7890-abcd-ef1234567890` | | `LastContact` | datetime | Last agent check-in time | `2024-02-15T10:30:00Z` | | `MAC` | string | Primary MAC address | `00:1A:2B:3C:4D:5E` |
| Status | Description | Business Impact | |--------|-------------|-----------------| | `Online` | Agent actively checking in | Normal operation | | `Offline` | No agent communication | May require attention | | `Degraded` | Agent checking in with issues | Performance concerns | | `Unknown` | Status undetermined | Check connectivity |
| OS Type | Examples | |---------|----------| | `Windows Server` | 2016, 2019, 2022 | | `Windows Workstation` | Windows 10, Windows 11 | | `macOS` | Monterey, Ventura, Sonoma | | `Linux` | Ubuntu, CentOS, RHEL |
Computer objects expose roughly 30 fields covering identifiers, client/location association, status, network, OS, hardware, agent, and timestamp data, plus an `ExtraData` map for Extra Data Fields (EDFs). `ComputerInventory` objects cover drives, software, memory, network adapters, printers, services, and monitors.
See [references/fields.md](references/fields.md) for the complete `Computer` and `ComputerInventory` field reference.
All endpoints require `Authorization: Bearer {token}` (see the API Patterns skill for authentication and token management). Core calls:
`Status = 'Online'`, `OS contains 'Windows Server'`, etc. - see the API Patterns skill for full OData filter syntax)
`/Computers/{id}/Patches`, `/Computers/{id}/Antivirus`
See [references/api.md](references/api.md) for the complete endpoint catalog with example requests and responses.
async function findComputerByHostname(client, hostname) {
const computers = await client.request(
`/Computers?condition=Name contains '${hostname}'&pageSize=100`
);
if (computers.length === 0) {
return { found: false, suggestions: [] };
}
if (computers.length === 1) {
return { found: true, computer: computers[0] };
}
return {
found: false,
ambiguous: true,
suggestions: computers.map(c => ({
name: c.Name,
id: c.ComputerID,
client: c.Client?.Name,
status: c.Status
}))
};
}async function findComputerByIP(client, ipAddress) {
const computers = await client.request(
`/Computers?condition=IPAddress = '${ipAddress}' or ExternalIP = '${ipAddress}'`
);
return computers[0] || null;
}async function getOfflineComputers(client, options = {}) {
const { clientId, offlineMinutes = 30 } = options;
let condition = "Status = 'Offline'";
if (clientId) {
condition += ` and ClientID = ${clientId}`;
}
const computers = await client.request(
`/Computers?condition=${encodeURIComponent(condition)}&pageSize=500`
);
const now = new Date();
return computers.map(computer => ({
name: computer.Name,
id: computer.ComputerID,
client: computer.Client?.Name,
location: computer.Location?.Name,
lastContact: computer.LastContact,
offlineMinutes: Math.floor(
(now - new Date(computer.LastContact)) / 60000
)
}));
}async function getLowDiskSpaceComputers(client, threshold = 10) {
// Get all computers
const computers = await client.request('/Computers?pageSize=500');
const lowDiskComputers = [];
for (const computer of computers) {
const drives = awaitOne 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…