From superops
Queries and manages SuperOps.ai RMM assets including inventory, asset details, scripts, patches, and client/site associations. For MSP technicians managing endpoints.
How this skill is triggered — by the user, by Claude, or both
Slash command
/superops:assetsWhen to use
When querying inventory, viewing asset details, running scripts, monitoring patches, and managing client/site associations. Use when: superops asset, asset inventory, list assets superops, asset status, asset details, run script asset, patch status, software inventory, disk usage, asset activity, rmm superops, or endpoint management.
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
SuperOps.ai RMM provides comprehensive asset management capabilities. Assets represent managed endpoints (workstations, servers, network devices) with rich telemetry including hardware specs, software inventory, patch status, and activity history. This skill covers querying, managing, and automating actions on assets.
SuperOps.ai RMM provides comprehensive asset management capabilities. Assets represent managed endpoints (workstations, servers, network devices) with rich telemetry including hardware specs, software inventory, patch status, and activity history. This skill covers querying, managing, and automating actions on assets.
| Status | Description | Indicator |
|---|---|---|
| Online | Agent connected and reporting | Green |
| Offline | Agent not responding | Red |
| Maintenance | In maintenance mode | Yellow |
| Platform | Description |
|---|---|
| Windows | Windows workstations and servers |
| macOS | Apple Mac computers |
| Linux | Linux distributions |
| Field | Type | Description |
|---|---|---|
assetId | ID | Unique identifier |
name | String | Computer/device name |
status | Enum | Online, Offline, Maintenance |
platform | Enum | Windows, macOS, Linux |
lastSeen | DateTime | Last check-in time |
agentVersion | String | RMM agent version |
| Field | Type | Description |
|---|---|---|
ipAddress | String | Primary IP address |
macAddress | String | MAC address |
publicIp | String | External IP |
hostname | String | Network hostname |
| Field | Type | Description |
|---|---|---|
manufacturer | String | Hardware manufacturer |
model | String | Device model |
serialNumber | String | Serial number |
processorName | String | CPU model |
processorCores | Int | CPU core count |
totalMemory | Long | RAM in bytes |
totalDiskSpace | Long | Total disk space |
freeDiskSpace | Long | Available disk space |
| Field | Type | Description |
|---|---|---|
osName | String | Operating system name |
osVersion | String | OS version |
osBuild | String | OS build number |
architecture | String | 32-bit or 64-bit |
| Field | Type | Description |
|---|---|---|
client | Client | Associated client |
site | Site | Associated site |
tags | [String] | Asset tags |
customFields | [CustomField] | Custom field values |
query getAssetList($input: ListInfoInput!) {
getAssetList(input: $input) {
assets {
assetId
name
status
platform
lastSeen
ipAddress
osName
osVersion
client {
accountId
name
}
site {
id
name
}
patchStatus {
pendingCount
installedCount
failedCount
}
}
listInfo {
totalCount
hasNextPage
endCursor
}
}
}
Variables - All Online Assets:
{
"input": {
"first": 100,
"filter": {
"status": "Online"
},
"orderBy": {
"field": "name",
"direction": "ASC"
}
}
}
Variables - Filter by Client and Platform:
{
"input": {
"first": 50,
"filter": {
"client": {
"accountId": "client-uuid"
},
"platform": "Windows",
"status": "Online"
}
}
}
query getAsset($input: AssetIdentifierInput!) {
getAsset(input: $input) {
assetId
name
status
platform
lastSeen
# Network
ipAddress
macAddress
publicIp
hostname
# Hardware
manufacturer
model
serialNumber
processorName
processorCores
totalMemory
# OS
osName
osVersion
osBuild
architecture
# Disk
totalDiskSpace
freeDiskSpace
# Associations
client {
accountId
name
}
site {
id
name
address
}
tags
customFields {
name
value
}
# Agent
agentVersion
agentInstallDate
}
}
Variables:
{
"input": {
"assetId": "asset-uuid-here"
}
}
query getAssetSoftwareList($input: AssetSoftwareListInput!) {
getAssetSoftwareList(input: $input) {
software {
name
version
publisher
installDate
size
}
listInfo {
totalCount
hasNextPage
endCursor
}
}
}
Variables:
{
"input": {
"assetId": "asset-uuid",
"first": 100,
"filter": {
"name": "Microsoft"
}
}
}
query getAssetDiskDetails($input: AssetIdentifierInput!) {
getAssetDiskDetails(input: $input) {
disks {
driveLetter
volumeName
fileSystem
totalSpace
freeSpace
usedPercentage
}
}
}
query getAssetPatchDetails($input: AssetPatchInput!) {
getAssetPatchDetails(input: $input) {
patches {
patchId
title
severity
status
releaseDate
kbNumber
category
}
summary {
pendingCount
installedCount
failedCount
lastScanDate
}
}
}
Variables:
{
"input": {
"assetId": "asset-uuid",
"filter": {
"status": "Pending",
"severity": ["Critical", "Important"]
}
}
}
query getAssetActivity($input: AssetActivityInput!) {
getAssetActivity(input: $input) {
activities {
activityId
type
description
timestamp
performedBy {
id
name
}
result
}
listInfo {
totalCount
hasNextPage
}
}
}
mutation runScriptOnAsset($input: RunScriptInput!) {
runScriptOnAsset(input: $input) {
actionConfigId
script {
scriptId
name
}
arguments {
name
value
}
status
scheduledTime
}
}
Variables:
{
"input": {
"assetId": "asset-uuid",
"scriptId": "script-uuid",
"arguments": [
{
"name": "param1",
"value": "value1"
}
],
"runAs": "System",
"priority": "Normal"
}
}
mutation runScriptOnAssets($input: RunScriptOnAssetsInput!) {
runScriptOnAssets(input: $input) {
batchId
assetsCount
status
scheduledTime
}
}
Variables:
{
"input": {
"assetIds": ["asset-1", "asset-2", "asset-3"],
"scriptId": "script-uuid",
"runAs": "System"
}
}
# Query assets with low disk space
query getLowDiskAssets($input: ListInfoInput!) {
getAssetList(input: $input) {
assets {
assetId
name
freeDiskSpace
totalDiskSpace
client { name }
}
}
}
Variables:
{
"input": {
"filter": {
"status": "Online",
"diskSpacePercentFree": {
"lt": 10
}
}
}
}
query getPatchCompliance($input: ListInfoInput!) {
getAssetList(input: $input) {
assets {
assetId
name
client { name }
patchStatus {
pendingCount
installedCount
failedCount
lastScanDate
}
}
}
}
Variables:
{
"input": {
"filter": {
"patchStatus": {
"hasPending": true,
"severity": ["Critical"]
}
}
}
}
# Find assets with specific software
query findAssetsWithSoftware($input: ListInfoInput!) {
getAssetList(input: $input) {
assets {
assetId
name
client { name }
}
}
}
Variables:
{
"input": {
"filter": {
"software": {
"name": "TeamViewer"
}
}
}
}
| Error | Cause | Resolution |
|---|---|---|
| Asset not found | Invalid asset ID | Verify asset exists |
| Asset offline | Agent not responding | Check network connectivity |
| Script failed | Execution error | Check script logs |
| Permission denied | Insufficient access | Check user permissions |
| Rate limit exceeded | Over 800 req/min | Implement backoff |
// Check if asset is available for remote actions
function canRunRemoteAction(asset) {
if (asset.status !== 'Online') {
return {
canRun: false,
reason: `Asset is ${asset.status}. Last seen: ${asset.lastSeen}`
};
}
const lastSeenMinutes = (Date.now() - new Date(asset.lastSeen)) / 60000;
if (lastSeenMinutes > 5) {
return {
canRun: false,
reason: `Asset hasn't checked in for ${Math.round(lastSeenMinutes)} minutes`
};
}
return { canRun: true };
}
npx claudepluginhub wyre-technology/msp-claude-plugins --plugin superopsManages Syncro MSP assets including hardware, software, and devices. Covers asset fields, RMM integration, patch management, and inventory operations via the Syncro API.
Manages HaloPSA assets: tracking devices, configuration items, hardware lifecycle, and asset relationships with clients, sites, and RMM integration for MSP CMDB operations.
Searches and browses RunZero asset inventory, inspects OS fingerprinting, hardware details, network interfaces, and asset attributes.