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…
IT Glue configurations (assets) — servers, workstations, network devices, and other infrastructure: configuration types and statuses, network interfaces, related items, warranty/lifecycle fields, and PSA/RMM integration fields.
Claude Code
$ npx -y skills add wyre-ai/msp-claude-plugins --skill configurations --agent claude-code
Codex
$ npx skills add wyre-ai/msp-claude-plugins --skill configurations -a codex -y
Cursor
$ npx skills add wyre-ai/msp-claude-plugins --skill configurations -a cursor -y
Gemini CLI
$ npx skills add wyre-ai/msp-claude-plugins --skill configurations -a gemini-cli -y
GitHub Copilot
$ npx skills add wyre-ai/msp-claude-plugins --skill configurations -a github-copilot -y
OpenCode
$ npx skills add wyre-ai/msp-claude-plugins --skill configurations -a opencode -y
Windsurf
$ npx skills add wyre-ai/msp-claude-plugins --skill configurations -a windsurf -y
name: "IT Glue Configurations" description: > IT Glue configurations (assets) — servers, workstations, network devices, and other infrastructure: configuration types and statuses, network interfaces, related items, warranty/lifecycle fields, and PSA/RMM integration fields. when_to_use: >- When working with servers, workstations, network devices, and other infrastructure in IT Glue configurations (assets). Use when: it glue configuration, it glue asset, server documentation, workstation lookup, network device, asset management, configuration item, it glue ci, device inventory, or hardware tracking.
Configurations in IT Glue represent trackable assets such as servers, workstations, network devices, printers, and more. They serve as the central repository for asset documentation, enabling technicians to quickly find device information, network details, warranty status, and related documentation.
field schema is a flexible asset, not a configuration; use `itglue-flexible-assets`.
`autotask-configuration-items`.
Glue stores what was documented, not what is true now; use `datto-rmm-devices` and `datto-rmm-audit`.
Configuration types classify assets at the highest level:
| Type | Description | Examples | |------|-------------|----------| | Server | Physical or virtual servers | Domain controllers, file servers, application servers | | Workstation | End-user devices | Desktops, laptops | | Network Device | Network infrastructure | Routers, switches, firewalls, access points | | Printer | Print devices | Network printers, multifunction devices | | Mobile Device | Portable devices | Tablets, phones | | Domain | Internet domains | Primary domains, subdomains | | SSL Certificate | Security certificates | Web certificates, code signing | | Cloud Service | Cloud subscriptions | Microsoft 365, AWS, Azure | | Software | Software licenses | Application licenses | | Other | Miscellaneous | UPS, cameras, IoT devices |
| Status | Description | Business Logic | |--------|-------------|----------------| | Active | Currently in use | Standard operational state | | Inactive | Not currently in use | Spare or standby equipment | | Decommissioned | End of life | Historical record only | | Missing | Cannot locate | Requires investigation |
Network interfaces associated with a configuration:
Configuration: DC-01 (Server) ├── Interface: Ethernet0 (192.168.1.10, AA:BB:CC:DD:EE:01) ├── Interface: Ethernet1 (10.0.0.10, AA:BB:CC:DD:EE:02) └── Interface: iLO (192.168.100.10, AA:BB:CC:DD:EE:03)
Fields cover identification, hardware, network, lifecycle, documentation, and PSA/RMM integration. See [references/fields.md](references/fields.md) for the complete field reference.
Configurations support the standard list/get/create/update/delete verbs, plus organization-scoped listing (`/organizations/:id/relationships/configurations`), search by hostname/serial-number/primary-ip/psa-id, nested configuration-interfaces, and related-items relationships for linking assets to each other (e.g. VM to host). See [references/api.md](references/api.md) for full request/response examples of every operation.
async function onboardAsset(orgId, assetData) {
// Step 1: Create configuration
const config = await createConfiguration({
'organization-id': orgId,
name: assetData.name,
hostname: assetData.hostname,
'configuration-type-id': assetData.typeId,
'configuration-status-id': ACTIVE_STATUS,
'primary-ip': assetData.ip,
'serial-number': assetData.serialNumber,
'asset-tag': assetData.assetTag,
'purchased-at': assetData.purchaseDate,
'warranty-expires-at': assetData.warrantyDate,
notes: assetData.notes
});
// Step 2: Add network interfaces
for (const iface of assetData.interfaces || []) {
await createInterface({
'configuration-id': config.id,
name: iface.name,
'ip-address': iface.ip,
'mac-address': iface.mac,
primary: iface.primary
});
}
// Step 3: Create relationships if applicable
if (assetData.hostServer) {
await createRelatedItem({
'resource-id': config.id,
'resource-type': 'Configuration',
'destination-id': assetData.hostServer,
'destination-type': 'Configuration',
notes: 'Hosted on this server'
});
}
return config;
}IT Glue doesn't support date-range filters directly, so warranty lookups fetch active configurations and filter client-side:
async function getExpiringWarranties(daysAhead = 90) {
const futureDate = new Date();
futureDate.setDate(futureDate.getDate() + daysAhead);
const today = new Date().toISOString().split('T')[0];
const future = futureDate.toISOString().split('T')[0];
const configs = await fetchConfigurations({
filter: { 'configuration-status-id': ACTIVE_STATUS }
});
return configs
.filter(c => {
const warranty = c.attributes['warranty-expires-at'];
return warranty && warranty >= today && warranty <= future;
})
.map(c => ({
name: c.attributes.name,
organization: c.relationships.organization.data.id,
warrantyExpires: c.attributes['warranty-expires-at'],
daysRemaining: Math.ceil(
(new Date(c.attributes['warranty-expires-at']) - new Date()) / (1000 * 60 * 60 * 24)
)
}))
.sort((a, b) => a.daysRemaining - b.daysRemaining);
}async function decommissionAsset(configId, reason) {
// Update status
await updateConfiguOne command to supercharge Claude Code for MSP workflows. Then restart Claude Code. That's it. Documentation: mcp.wyre.ai
3CX's native PBX MCP server: the per-PBX endpoint shape (every PBX is its own FQDN and its own OAuth authorization server — there…
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,…
3CX's system-and-configuration surface: server time, PBX event log and application log search, service status, database schema…
Abnormal Security abuse mailbox cases: user-reported email submissions, case statuses and judgments, the case lifecycle, bulk and…
Abnormal Security message analysis: message retrieval, email header inspection, attachments, sender reputation, delivery context,…
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.