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.
Anti-triggers
- Dedicated network discovery. The
NETWORK_DISCOVERY surface is
Ranger's passive by-product of the agents you already have. A question
about scanning a subnet, fingerprinting an unmanaged device, or
inventorying OT/IoT gear belongs to runzero-assets; live topology and
interface state belong to auvik-devices.
- What an endpoint detected. This skill covers the asset record and
its agent health; findings on that asset are
sentinelone-alerts,
sentinelone-vulnerabilities, or sentinelone-misconfigurations.
- A Huntress or ThreatLocker agent. Different vendors' sensors are
different fleets with no shared record — use
huntress-agents or
threatlocker-computers.
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:
- Call with
offset=0, limit=100
- If 100 results returned, call with
offset=100, limit=100
- 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
- Call
list_inventory_items with surface=ENDPOINT, limit=100
- Paginate through all results using
offset
- Count by OS type, agent status, and machine type
- Identify endpoints with inactive or disconnected agents
- Identify endpoints with outdated agent versions
Endpoint Health Check
- Call
list_inventory_items with surface=ENDPOINT
- Filter for agents not on the latest version:
isUpToDate=false
- Filter for disconnected agents:
agentStatus=DISCONNECTED
- Group by client (siteName) to identify which clients have unhealthy endpoints
- Generate a health report with upgrade and reconnection recommendations
Cloud Resource Inventory
- Call
list_inventory_items with surface=CLOUD
- Group by cloud provider and resource type
- Count resources per client (siteName)
- Identify resources not tagged according to client standards
- Cross-reference with misconfigurations for exposed resources
Unmanaged Device Discovery
- Call
list_inventory_items with surface=NETWORK_DISCOVERY
- Filter for
managed=false to find devices without SentinelOne agents
- Group by client (siteName) and device type
- Generate a list of unmanaged devices for agent deployment
Identity Inventory
- Call
list_inventory_items with surface=IDENTITY
- Check for accounts without MFA enabled
- Identify stale accounts (no login in 90+ days)
- Group by identity provider and department
- Generate an identity hygiene report
Client Coverage Report
- For each client, query all four surfaces: ENDPOINT, CLOUD, IDENTITY, NETWORK_DISCOVERY
- Count managed vs. unmanaged assets
- Calculate coverage percentage
- Identify gaps in agent deployment
- Present as a security coverage dashboard for QBR
Response Examples
Endpoint Inventory Item:
{
"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:
{
"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
- Always specify surface type - Filter by ENDPOINT, CLOUD, IDENTITY, or NETWORK_DISCOVERY for focused results
- Monitor agent health - Regularly check for INACTIVE or DISCONNECTED endpoints
- Track unmanaged devices - Use NETWORK_DISCOVERY to find devices without agents
- Scope to clients - Filter by siteName when reviewing a specific client's inventory
- Check agent versions - Identify endpoints with outdated agents for upgrade scheduling
- Cross-reference with alerts - Use inventory data to enrich alert investigations with asset context
- Paginate consistently - Use offset-based pagination for large inventories
- Cache inventory data - Asset data changes less frequently than alerts; cache for short periods
- Generate coverage reports - Calculate agent deployment coverage per client for QBRs
- Identify shadow IT - Network-discovered devices may reveal unauthorized equipment
Related Skills
1---2name: sentinelone-inventory3description: SentinelOne's unified asset inventory across four surface types — agent-managed endpoints, AWS/Azure/GCP cloud resources, AD/Entra identities, and Ranger-discovered network devices. Covers the read-only inventory tools, the REST (not GraphQL) offset-pagination and filter model, asset field reference, and agent-coverage audit workflows.4---56# SentinelOne Unified Asset Inventory78## Overview910The 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.1112The inventory uses the **REST API** (not GraphQL), with offset-based pagination and direct filter parameters. All inventory tools are **read-only**.1314## Anti-triggers1516- **Dedicated network discovery.** The `NETWORK_DISCOVERY` surface is17 Ranger's passive by-product of the agents you already have. A question18 about scanning a subnet, fingerprinting an unmanaged device, or19 inventorying OT/IoT gear belongs to `runzero-assets`; live topology and20 interface state belong to `auvik-devices`.21- **What an endpoint detected.** This skill covers the asset record and22 its agent health; findings on that asset are `sentinelone-alerts`,23 `sentinelone-vulnerabilities`, or `sentinelone-misconfigurations`.24- **A Huntress or ThreatLocker agent.** Different vendors' sensors are25 different fleets with no shared record — use `huntress-agents` or26 `threatlocker-computers`.2728## MCP Tools2930### Available Tools3132| Tool | Description | Key Parameters |33|------|-------------|----------------|34| `get_inventory_item` | Get a single inventory item by ID | `itemId` (required) |35| `list_inventory_items` | List inventory items with filters | `surface`, `limit`, `offset`, `sortBy`, `sortOrder` |36| `search_inventory_items` | Search inventory with REST filters | `filters`, `surface`, `limit`, `offset` |3738### List Inventory Items3940Call `list_inventory_items` with optional parameters:4142- **Filter by surface:** Set `surface` to `ENDPOINT`, `CLOUD`, `IDENTITY`, or `NETWORK_DISCOVERY`43- **Paginate:** Set `limit` (results per page) and `offset` (skip N results)44- **Sort results:** Set `sortBy` and `sortOrder`4546**Example: List all endpoints:**47- `list_inventory_items` with `surface=ENDPOINT`, `limit=100`4849**Example: List cloud resources:**50- `list_inventory_items` with `surface=CLOUD`, `limit=100`5152**Example: List network-discovered devices:**53- `list_inventory_items` with `surface=NETWORK_DISCOVERY`, `limit=100`5455### Search Inventory Items5657Call `search_inventory_items` with `filters` for targeted queries:5859**Example: Search for a specific endpoint by name:**60- `search_inventory_items` with `surface=ENDPOINT`, `filters={"name__contains": "workstation-01"}`6162**Example: Search for Windows servers:**63- `search_inventory_items` with `surface=ENDPOINT`, `filters={"osType": "WINDOWS", "machineType": "SERVER"}`6465### Get Inventory Item Details6667Call `get_inventory_item` with the `itemId` to retrieve full details including agent status, OS information, network details, and security posture.6869## Key Concepts7071### Surface Types7273| Surface | Description | Data Sources |74|---------|-------------|-------------|75| `ENDPOINT` | Managed endpoints with SentinelOne agents | Workstations, servers, laptops, VMs |76| `CLOUD` | Cloud infrastructure resources | AWS EC2, Azure VMs, GCP instances, S3 buckets, etc. |77| `IDENTITY` | User and service accounts | Active Directory, Entra ID (Azure AD), Okta |78| `NETWORK_DISCOVERY` | Network-discovered devices (Ranger) | Switches, printers, IoT, unmanaged devices |7980### Endpoint Types8182| Type | Description |83|------|-------------|84| `WORKSTATION` | Desktop or laptop workstation |85| `SERVER` | Server (physical or virtual) |86| `LAPTOP` | Laptop (may overlap with WORKSTATION) |87| `VIRTUAL_MACHINE` | Cloud or on-premises VM |88| `CONTAINER` | Container workload |8990### Agent Status9192| Status | Description |93|--------|-------------|94| `ACTIVE` | Agent is running and communicating |95| `INACTIVE` | Agent installed but not communicating |96| `DISCONNECTED` | Agent has lost connection to the console |97| `DECOMMISSIONED` | Agent has been decommissioned |98| `PENDING` | Agent installation in progress |99100### REST API Pagination101102The inventory uses offset-based pagination (unlike the cursor-based GraphQL tools):103104| Parameter | Description | Default |105|-----------|-------------|---------|106| `limit` | Results per page | 50 |107| `offset` | Number of results to skip | 0 |108109To iterate through all results:1101111. Call with `offset=0`, `limit=100`1122. If 100 results returned, call with `offset=100`, `limit=100`1133. Continue incrementing offset until fewer results than limit are returned114115### REST Filter Types116117| Filter Type | Syntax | Description |118|-------------|--------|-------------|119| Exact match | `fieldName=value` | Direct value comparison |120| Contains | `fieldName__contains=value` | Substring matching |121| Greater than or equal | `fieldName__gte=value` | Minimum value (dates, numbers) |122| Less than or equal | `fieldName__lte=value` | Maximum value (dates, numbers) |123| Not equal | `fieldName__ne=value` | Exclude matches |124| In list | `ids=id1,id2,id3` | Match multiple IDs |125126## Field Reference127128### Core Inventory Fields129130| Field | Type | Description |131|-------|------|-------------|132| `itemId` | string | Unique inventory item identifier |133| `name` | string | Asset name/hostname |134| `surface` | string | ENDPOINT/CLOUD/IDENTITY/NETWORK_DISCOVERY |135| `siteName` | string | SentinelOne site (MSP client) |136| `accountName` | string | SentinelOne account |137| `lastSeen` | datetime | Last communication timestamp |138139### Endpoint-Specific Fields140141| Field | Type | Description |142|-------|------|-------------|143| `osType` | string | WINDOWS/MACOS/LINUX |144| `osName` | string | Full OS name (e.g., "Windows 11 Enterprise") |145| `osVersion` | string | OS version string |146| `machineType` | string | WORKSTATION/SERVER/LAPTOP/VIRTUAL_MACHINE |147| `agentVersion` | string | SentinelOne agent version |148| `agentStatus` | string | ACTIVE/INACTIVE/DISCONNECTED |149| `isUpToDate` | boolean | Whether agent is on the latest version |150| `externalIp` | string | External/public IP address |151| `internalIp` | string | Internal/private IP address |152| `domain` | string | AD domain membership |153| `lastLoggedInUser` | string | Last logged-in user |154| `encryptionStatus` | string | Disk encryption status |155| `firewallStatus` | string | Firewall enabled/disabled |156157### Cloud-Specific Fields158159| Field | Type | Description |160|-------|------|-------------|161| `cloudProvider` | string | AWS/AZURE/GCP |162| `region` | string | Cloud region |163| `resourceType` | string | Resource type (EC2, VM, S3, etc.) |164| `resourceId` | string | Cloud resource identifier |165| `tags` | object | Cloud resource tags |166167### Identity-Specific Fields168169| Field | Type | Description |170|-------|------|-------------|171| `identityProvider` | string | AD/ENTRA_ID/OKTA |172| `email` | string | User email address |173| `department` | string | Department |174| `lastLogin` | datetime | Last login timestamp |175| `mfaEnabled` | boolean | Whether MFA is enabled |176| `accountStatus` | string | Active/Disabled/Locked |177178### Network Discovery Fields179180| Field | Type | Description |181|-------|------|-------------|182| `deviceType` | string | Discovered device type |183| `manufacturer` | string | Device manufacturer |184| `macAddress` | string | MAC address |185| `ipAddress` | string | Discovered IP address |186| `managed` | boolean | Whether a SentinelOne agent is installed |187| `firstSeen` | datetime | When Ranger first discovered the device |188189## Common Workflows190191### Asset Audit1921931. Call `list_inventory_items` with `surface=ENDPOINT`, `limit=100`1942. Paginate through all results using `offset`1953. Count by OS type, agent status, and machine type1964. Identify endpoints with inactive or disconnected agents1975. Identify endpoints with outdated agent versions198199### Endpoint Health Check2002011. Call `list_inventory_items` with `surface=ENDPOINT`2022. Filter for agents not on the latest version: `isUpToDate=false`2033. Filter for disconnected agents: `agentStatus=DISCONNECTED`2044. Group by client (siteName) to identify which clients have unhealthy endpoints2055. Generate a health report with upgrade and reconnection recommendations206207### Cloud Resource Inventory2082091. Call `list_inventory_items` with `surface=CLOUD`2102. Group by cloud provider and resource type2113. Count resources per client (siteName)2124. Identify resources not tagged according to client standards2135. Cross-reference with misconfigurations for exposed resources214215### Unmanaged Device Discovery2162171. Call `list_inventory_items` with `surface=NETWORK_DISCOVERY`2182. Filter for `managed=false` to find devices without SentinelOne agents2193. Group by client (siteName) and device type2204. Generate a list of unmanaged devices for agent deployment221222### Identity Inventory2232241. Call `list_inventory_items` with `surface=IDENTITY`2252. Check for accounts without MFA enabled2263. Identify stale accounts (no login in 90+ days)2274. Group by identity provider and department2285. Generate an identity hygiene report229230### Client Coverage Report2312321. For each client, query all four surfaces: ENDPOINT, CLOUD, IDENTITY, NETWORK_DISCOVERY2332. Count managed vs. unmanaged assets2343. Calculate coverage percentage2354. Identify gaps in agent deployment2365. Present as a security coverage dashboard for QBR237238## Response Examples239240**Endpoint Inventory Item:**241242```json243{244 "itemId": "inv-endpoint-001",245 "name": "ACME-WS-042",246 "surface": "ENDPOINT",247 "siteName": "Acme Corporation",248 "osType": "WINDOWS",249 "osName": "Windows 11 Enterprise",250 "osVersion": "23H2",251 "machineType": "WORKSTATION",252 "agentVersion": "24.1.2.345",253 "agentStatus": "ACTIVE",254 "isUpToDate": true,255 "externalIp": "203.0.113.10",256 "internalIp": "192.168.1.42",257 "domain": "acme.local",258 "lastLoggedInUser": "jsmith",259 "lastSeen": "2026-02-24T10:00:00.000Z",260 "encryptionStatus": "ENCRYPTED",261 "firewallStatus": "ENABLED"262}263```264265**Network Discovery Item:**266267```json268{269 "itemId": "inv-ranger-005",270 "name": "Unknown Device",271 "surface": "NETWORK_DISCOVERY",272 "siteName": "Acme Corporation",273 "deviceType": "Network Printer",274 "manufacturer": "HP",275 "macAddress": "AA:BB:CC:DD:EE:FF",276 "ipAddress": "192.168.1.200",277 "managed": false,278 "firstSeen": "2026-02-20T14:00:00.000Z",279 "lastSeen": "2026-02-24T09:30:00.000Z"280}281```282283## Error Handling284285### Common Errors286287| Error | Cause | Resolution |288|-------|-------|------------|289| Item not found | Invalid itemId | Verify the ID with `list_inventory_items` |290| Invalid surface filter | Wrong surface value | Use ENDPOINT, CLOUD, IDENTITY, or NETWORK_DISCOVERY |291| Empty results | No matching assets | Widen filters or check scope |292| Authentication error | Invalid token | Verify Service User token is Account or Site level |293| Timeout | Query too broad | Add surface or site filters to reduce result set |294295## Best Practices2962971. **Always specify surface type** - Filter by ENDPOINT, CLOUD, IDENTITY, or NETWORK_DISCOVERY for focused results2982. **Monitor agent health** - Regularly check for INACTIVE or DISCONNECTED endpoints2993. **Track unmanaged devices** - Use NETWORK_DISCOVERY to find devices without agents3004. **Scope to clients** - Filter by siteName when reviewing a specific client's inventory3015. **Check agent versions** - Identify endpoints with outdated agents for upgrade scheduling3026. **Cross-reference with alerts** - Use inventory data to enrich alert investigations with asset context3037. **Paginate consistently** - Use offset-based pagination for large inventories3048. **Cache inventory data** - Asset data changes less frequently than alerts; cache for short periods3059. **Generate coverage reports** - Calculate agent deployment coverage per client for QBRs30610. **Identify shadow IT** - Network-discovered devices may reveal unauthorized equipment307308## Related Skills309310- [Alerts](../alerts/SKILL.md) - Alerts affecting inventory assets311- [Vulnerabilities](../vulnerabilities/SKILL.md) - Vulnerabilities on inventory endpoints312- [Misconfigurations](../misconfigurations/SKILL.md) - Misconfigurations on inventory resources313- [API Patterns](../api-patterns/SKILL.md) - MCP tools reference and REST API details314- [Purple AI](../purple-ai/SKILL.md) - Investigate threats on specific assets