Skip to content
Back to skills

Inventory

ASecurity

Use this skill when working with SentinelOne unified asset inventory - endpoints, cloud resources, identities, and network-discovered devices. Covers inventory tools, surface types, REST API with offset-based pagination, filter types, asset fields, and inventory audit workflows for MSP client environments.

  • 48 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added May 27, 2026
data-aigoawsgcpazureapisecurity

Works with

  • cursor
  • cli
  • api
  • mcp

Security analysis

A100/100

Scanned May 27, 2026

npx -y skills add wyre-technology/msp-claude-plugins --skill inventory --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Inventory?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Inventory
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/wyre-technology-inventory/badge)](https://www.skillsdirectory.com/skills/wyre-technology-inventory)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: "SentinelOne Inventory"
description: >
  Use this skill when working with SentinelOne unified asset inventory -
  endpoints, cloud resources, identities, and network-discovered devices.
  Covers inventory tools, surface types, REST API with offset-based
  pagination, filter types, asset fields, and inventory audit workflows
  for MSP client environments.
when_to_use: "When working with endpoints, cloud resources, identities, and network-discovered devices in SentinelOne unified asset inventory"
triggers:
  - sentinelone inventory
  - sentinelone asset
  - sentinelone endpoint
  - sentinelone agent
  - sentinelone device
  - sentinelone workstation
  - sentinelone server
  - asset inventory
  - endpoint health
  - sentinelone cloud resource
  - sentinelone identity
  - sentinelone ranger
  - network discovery
---

# SentinelOne Unified Asset Inventory

## Overview

The SentinelOne unified asset inventory provides a single view of all assets across an organization's environment. Assets are categorized by surface type -- endpoints with SentinelOne agents, cloud resources in AWS/Azure/GCP, identity accounts from Active Directory and Entra ID, and network-discovered devices found by Ranger. For MSPs, the inventory is the foundation for security coverage -- ensuring every client device has an active agent, tracking cloud resource sprawl, and identifying unmanaged devices on client networks.

The inventory uses the **REST API** (not GraphQL), with offset-based pagination and direct filter parameters. All inventory tools are **read-only**.

## MCP Tools

### Available Tools

| Tool | Description | Key Parameters |
|------|-------------|----------------|
| `get_inventory_item` | Get a single inventory item by ID | `itemId` (required) |
| `list_inventory_items` | List inventory items with filters | `surface`, `limit`, `offset`, `sortBy`, `sortOrder` |
| `search_inventory_items` | Search inventory with REST filters | `filters`, `surface`, `limit`, `offset` |

### List Inventory Items

Call `list_inventory_items` with optional parameters:

- **Filter by surface:** Set `surface` to `ENDPOINT`, `CLOUD`, `IDENTITY`, or `NETWORK_DISCOVERY`
- **Paginate:** Set `limit` (results per page) and `offset` (skip N results)
- **Sort results:** Set `sortBy` and `sortOrder`

**Example: List all endpoints:**
- `list_inventory_items` with `surface=ENDPOINT`, `limit=100`

**Example: List cloud resources:**
- `list_inventory_items` with `surface=CLOUD`, `limit=100`

**Example: List network-discovered devices:**
- `list_inventory_items` with `surface=NETWORK_DISCOVERY`, `limit=100`

### Search Inventory Items

Call `search_inventory_items` with `filters` for targeted queries:

**Example: Search for a specific endpoint by name:**
- `search_inventory_items` with `surface=ENDPOINT`, `filters={"name__contains": "workstation-01"}`

**Example: Search for Windows servers:**
- `search_inventory_items` with `surface=ENDPOINT`, `filters={"osType": "WINDOWS", "machineType": "SERVER"}`

### Get Inventory Item Details

Call `get_inventory_item` with the `itemId` to retrieve full details including agent status, OS information, network details, and security posture.

## Key Concepts

### Surface Types

| Surface | Description | Data Sources |
|---------|-------------|-------------|
| `ENDPOINT` | Managed endpoints with SentinelOne agents | Workstations, servers, laptops, VMs |
| `CLOUD` | Cloud infrastructure resources | AWS EC2, Azure VMs, GCP instances, S3 buckets, etc. |
| `IDENTITY` | User and service accounts | Active Directory, Entra ID (Azure AD), Okta |
| `NETWORK_DISCOVERY` | Network-discovered devices (Ranger) | Switches, printers, IoT, unmanaged devices |

### Endpoint Types

| Type | Description |
|------|-------------|
| `WORKSTATION` | Desktop or laptop workstation |
| `SERVER` | Server (physical or virtual) |
| `LAPTOP` | Laptop (may overlap with WORKSTATION) |
| `VIRTUAL_MACHINE` | Cloud or on-premises VM |
| `CONTAINER` | Container workload |

### Agent Status

| Status | Description |
|--------|-------------|
| `ACTIVE` | Agent is running and communicating |
| `INACTIVE` | Agent installed but not communicating |
| `DISCONNECTED` | Agent has lost connection to the console |
| `DECOMMISSIONED` | Agent has been decommissioned |
| `PENDING` | Agent installation in progress |

### REST API Pagination

The inventory uses offset-based pagination (unlike the cursor-based GraphQL tools):

| Parameter | Description | Default |
|-----------|-------------|---------|
| `limit` | Results per page | 50 |
| `offset` | Number of results to skip | 0 |

To iterate through all results:

1. Call with `offset=0`, `limit=100`
2. If 100 results returned, call with `offset=100`, `limit=100`
3. Continue incrementing offset until fewer results than limit are returned

### REST Filter Types

| Filter Type | Syntax | Description |
|-------------|--------|-------------|
| Exact match | `fieldName=value` | Direct value comparison |
| Contains | `fieldName__contains=value` | Substring matching |
| Greater than or equal | `fieldName__gte=value` | Minimum value (dates, numbers) |
| Less than or equal | `fieldName__lte=value` | Maximum value (dates, numbers) |
| Not equal | `fieldName__ne=value` | Exclude matches |
| In list | `ids=id1,id2,id3` | Match multiple IDs |

## Field Reference

### Core Inventory Fields

| Field | Type | Description |
|-------|------|-------------|
| `itemId` | string | Unique inventory item identifier |
| `name` | string | Asset name/hostname |
| `surface` | string | ENDPOINT/CLOUD/IDENTITY/NETWORK_DISCOVERY |
| `siteName` | string | SentinelOne site (MSP client) |
| `accountName` | string | SentinelOne account |
| `lastSeen` | datetime | Last communication timestamp |

### Endpoint-Specific Fields

| Field | Type | Description |
|-------|------|-------------|
| `osType` | string | WINDOWS/MACOS/LINUX |
| `osName` | string | Full OS name (e.g., "Windows 11 Enterprise") |
| `osVersion` | string | OS version string |
| `machineType` | string | WORKSTATION/SERVER/LAPTOP/VIRTUAL_MACHINE |
| `agentVersion` | string | SentinelOne agent version |
| `agentStatus` | string | ACTIVE/INACTIVE/DISCONNECTED |
| `isUpToDate` | boolean | Whether agent is on the latest version |
| `externalIp` | string | External/public IP address |
| `internalIp` | string | Internal/private IP address |
| `domain` | string | AD domain membership |
| `lastLoggedInUser` | string | Last logged-in user |
| `encryptionStatus` | string | Disk encryption status |
| `firewallStatus` | string | Firewall enabled/disabled |

### Cloud-Specific Fields

| Field | Type | Description |
|-------|------|-------------|
| `cloudProvider` | string | AWS/AZURE/GCP |
| `region` | string | Cloud region |
| `resourceType` | string | Resource type (EC2, VM, S3, etc.) |
| `resourceId` | string | Cloud resource identifier |
| `tags` | object | Cloud resource tags |

### Identity-Specific Fields

| Field | Type | Description |
|-------|------|-------------|
| `identityProvider` | string | AD/ENTRA_ID/OKTA |
| `email` | string | User email address |
| `department` | string | Department |
| `lastLogin` | datetime | Last login timestamp |
| `mfaEnabled` | boolean | Whether MFA is enabled |
| `accountStatus` | string | Active/Disabled/Locked |

### Network Discovery Fields

| Field | Type | Description |
|-------|------|-------------|
| `deviceType` | string | Discovered device type |
| `manufacturer` | string | Device manufacturer |
| `macAddress` | string | MAC address |
| `ipAddress` | string | Discovered IP address |
| `managed` | boolean | Whether a SentinelOne agent is installed |
| `firstSeen` | datetime | When Ranger first discovered the device |

## Common Workflows

### Asset Audit

1. Call `list_inventory_items` with `surface=ENDPOINT`, `limit=100`
2. Paginate through all results using `offset`
3. Count by OS type, agent status, and machine type
4. Identify endpoints with inactive or disconnected agents
5. Identify endpoints with outdated agent versions

### Endpoint Health Check

1. Call `list_inventory_items` with `surface=ENDPOINT`
2. Filter for agents not on the latest version: `isUpToDate=false`
3. Filter for disconnected agents: `agentStatus=DISCONNECTED`
4. Group by client (siteName) to identify which clients have unhealthy endpoints
5. Generate a health report with upgrade and reconnection recommendations

### Cloud Resource Inventory

1. Call `list_inventory_items` with `surface=CLOUD`
2. Group by cloud provider and resource type
3. Count resources per client (siteName)
4. Identify resources not tagged according to client standards
5. Cross-reference with misconfigurations for exposed resources

### Unmanaged Device Discovery

1. Call `list_inventory_items` with `surface=NETWORK_DISCOVERY`
2. Filter for `managed=false` to find devices without SentinelOne agents
3. Group by client (siteName) and device type
4. Generate a list of unmanaged devices for agent deployment

### Identity Inventory

1. Call `list_inventory_items` with `surface=IDENTITY`
2. Check for accounts without MFA enabled
3. Identify stale accounts (no login in 90+ days)
4. Group by identity provider and department
5. Generate an identity hygiene report

### Client Coverage Report

1. For each client, query all four surfaces: ENDPOINT, CLOUD, IDENTITY, NETWORK_DISCOVERY
2. Count managed vs. unmanaged assets
3. Calculate coverage percentage
4. Identify gaps in agent deployment
5. Present as a security coverage dashboard for QBR

## Response Examples

**Endpoint Inventory Item:**

```json
{
  "itemId": "inv-endpoint-001",
  "name": "ACME-WS-042",
  "surface": "ENDPOINT",
  "siteName": "Acme Corporation",
  "osType": "WINDOWS",
  "osName": "Windows 11 Enterprise",
  "osVersion": "23H2",
  "machineType": "WORKSTATION",
  "agentVersion": "24.1.2.345",
  "agentStatus": "ACTIVE",
  "isUpToDate": true,
  "externalIp": "203.0.113.10",
  "internalIp": "192.168.1.42",
  "domain": "acme.local",
  "lastLoggedInUser": "jsmith",
  "lastSeen": "2026-02-24T10:00:00.000Z",
  "encryptionStatus": "ENCRYPTED",
  "firewallStatus": "ENABLED"
}
```

**Network Discovery Item:**

```json
{
  "itemId": "inv-ranger-005",
  "name": "Unknown Device",
  "surface": "NETWORK_DISCOVERY",
  "siteName": "Acme Corporation",
  "deviceType": "Network Printer",
  "manufacturer": "HP",
  "macAddress": "AA:BB:CC:DD:EE:FF",
  "ipAddress": "192.168.1.200",
  "managed": false,
  "firstSeen": "2026-02-20T14:00:00.000Z",
  "lastSeen": "2026-02-24T09:30:00.000Z"
}
```

## Error Handling

### Common Errors

| Error | Cause | Resolution |
|-------|-------|------------|
| Item not found | Invalid itemId | Verify the ID with `list_inventory_items` |
| Invalid surface filter | Wrong surface value | Use ENDPOINT, CLOUD, IDENTITY, or NETWORK_DISCOVERY |
| Empty results | No matching assets | Widen filters or check scope |
| Authentication error | Invalid token | Verify Service User token is Account or Site level |
| Timeout | Query too broad | Add surface or site filters to reduce result set |

## Best Practices

1. **Always specify surface type** - Filter by ENDPOINT, CLOUD, IDENTITY, or NETWORK_DISCOVERY for focused results
2. **Monitor agent health** - Regularly check for INACTIVE or DISCONNECTED endpoints
3. **Track unmanaged devices** - Use NETWORK_DISCOVERY to find devices without agents
4. **Scope to clients** - Filter by siteName when reviewing a specific client's inventory
5. **Check agent versions** - Identify endpoints with outdated agents for upgrade scheduling
6. **Cross-reference with alerts** - Use inventory data to enrich alert investigations with asset context
7. **Paginate consistently** - Use offset-based pagination for large inventories
8. **Cache inventory data** - Asset data changes less frequently than alerts; cache for short periods
9. **Generate coverage reports** - Calculate agent deployment coverage per client for QBRs
10. **Identify shadow IT** - Network-discovered devices may reveal unauthorized equipment

## Related Skills

- [Alerts](../alerts/SKILL.md) - Alerts affecting inventory assets
- [Vulnerabilities](../vulnerabilities/SKILL.md) - Vulnerabilities on inventory endpoints
- [Misconfigurations](../misconfigurations/SKILL.md) - Misconfigurations on inventory resources
- [API Patterns](../api-patterns/SKILL.md) - MCP tools reference and REST API details
- [Purple AI](../purple-ai/SKILL.md) - Investigate threats on specific assets

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…