Source profileQuality 94/100Review permissions

WYRE-AI/msp-claude-plugins/msp-claude-plugins/sentinelone/sentinelone/skills/api-patterns/SKILL.md

SentinelOne API Patterns

The SentinelOne Purple MCP server and the APIs behind it: uvx installation and transport modes, Service User token levels, the 23 read-only tools organized by domain, and the dual GraphQL (cursor pagination) / REST (offset pagination) architecture with its differing filter syntaxes, rate limits, and error causes.

Source repository stars
42
Declared platforms
1
Static risk flags
2
Last source update
2026-08-28
Source checked
2026-08-28

Decision brief

What it does: where it fits

The SentinelOne Purple MCP server and the APIs behind it: uvx installation and transport modes, Service User token levels, the 23 read-only tools organized by domain, and the dual GraphQL (cursor pagination) / REST (offset pagination) architecture with its differing filter syntaxes, rate limits, and error causes.

Best for

    Not for

    • Tasks that require unconfirmed production actions or broad system permissions.
    • Environments where the pinned source and install steps cannot be inspected.

    Compatibility matrix

    Platform support, with evidence labels

    PlatformStatusEvidenceWhat to check
    CodexNot declaredNo explicit evidencePortability before use
    Claude CodeNot declaredNo explicit evidencePortability before use
    CursorDeclaredSource recordInstall path and trigger
    Gemini CLINot declaredNo explicit evidencePortability before use
    Open the compatibility checker

    Installation

    Inspect first. Install second.

    The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

    Source-detected install commandSource
    npx skills add https://github.com/WYRE-AI/msp-claude-plugins --skill "msp-claude-plugins/sentinelone/sentinelone/skills/api-patterns"
    Safe inspection promptEditorial

    Inspect the Agent Skill "SentinelOne API Patterns" from https://github.com/WYRE-AI/msp-claude-plugins/blob/5005f73ba2f52cd299f58aa6bb79f4e70ae87103/msp-claude-plugins/sentinelone/sentinelone/skills/api-patterns/SKILL.md at commit 5005f73ba2f52cd299f58aa6bb79f4e70ae87103. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

    Workflow

    What the source asks the agent to do

    1. 01

      Anti-triggers

      "SentinelOne endpoint" meaning a machine. This skill's endpoint

      "SentinelOne endpoint" meaning a machine. This skill's endpointWriting or running an actual query. This skill covers filter and- "SentinelOne endpoint" meaning a machine. This skill's endpoint is an HTTP route; a workstation, server, or agent is sentinelone-inventory. - Writing or running an actual query. This skill covers filter and pagination…
    2. 02

      Connection & Authentication

      Authentication requires a Service User token from the SentinelOne Management Console:

      Navigate to Policy & Settings User Management Service UsersCreate a Service User with appropriate Account or Site scopeGenerate an API token
    3. 03

      Service User Token

      Authentication requires a Service User token from the SentinelOne Management Console:

      Navigate to Policy & Settings User Management Service UsersCreate a Service User with appropriate Account or Site scopeGenerate an API token
    4. 04

      Transport Modes

      The Purple MCP server supports three transport modes:

      The Purple MCP server supports three transport modes:
    5. 05

      Claude Desktop Configuration

      Review the “Claude Desktop Configuration” section in the pinned source before continuing.

      Review and apply the “Claude Desktop Configuration” source section.

    Permission review

    Static risk signals and limitations

    Network access

    medium · line 43

    The documentation includes network, browsing, or remote request actions.

    export SENTINELONE_BASE_URL="https://your-console.sentinelone.net"

    Network access

    medium · line 64

    The documentation includes network, browsing, or remote request actions.

    "--from", "git+https://github.com/Sentinel-One/purple-mcp.git",

    Runs scripts

    medium · line 87

    The documentation asks the agent to run terminal commands or scripts.

    uvx --version

    Runs scripts

    medium · line 90

    The documentation asks the agent to run terminal commands or scripts.

    uvx --from git+https://github.com/Sentinel-One/purple-mcp.git purple-mcp --help

    Evidence record

    Why each signal appears

    EvidenceSourceComputedTestedEditorial
    SignalValueEvidence typeMeaning
    Quality score94/100ComputedDocumentation, specificity, maintenance, and trust rules
    Repository stars42SourceRepository attention, not individual Skill quality
    Compatibility1 platformsSourceDeclared in the catalog source record
    Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

    Pinned source

    Provenance and original SKILL.md

    Repository
    WYRE-AI/msp-claude-plugins
    Skill path
    msp-claude-plugins/sentinelone/sentinelone/skills/api-patterns/SKILL.md
    Commit
    5005f73ba2f52cd299f58aa6bb79f4e70ae87103
    License
    Apache-2.0
    Collected
    2026-08-28
    Default branch
    main
    View the original SKILL.md

    SentinelOne Purple MCP Tools & API Patterns

    Overview

    SentinelOne provides the Purple MCP server for AI tool integration with the Singularity XDR platform. The MCP server is a Python package installed via uvx from GitHub. It exposes 23 tools covering Purple AI, alerts, vulnerabilities, misconfigurations, asset inventory, and PowerQuery threat hunting. All tools are read-only -- they support investigation and reporting but cannot modify, remediate, or take action on any resources.

    The Purple MCP server has a dual API architecture:

    • GraphQL API - Used for Purple AI, alerts, vulnerabilities, and misconfigurations
    • REST API - Used for asset inventory

    Anti-triggers

    • "SentinelOne endpoint" meaning a machine. This skill's endpoint is an HTTP route; a workstation, server, or agent is sentinelone-inventory.
    • Writing or running an actual query. This skill covers filter and pagination mechanics only — PowerQuery execution is sentinelone-threat-hunting, and natural-language investigation is sentinelone-purple-ai.

    Connection & Authentication

    Service User Token

    Authentication requires a Service User token from the SentinelOne Management Console:

    1. Navigate to Policy & Settings > User Management > Service Users
    2. Create a Service User with appropriate Account or Site scope
    3. Generate an API token

    CRITICAL: The token must be Account or Site level. Global-level tokens are rejected by the Purple MCP server and will return authentication errors.

    Environment Variables:

    VariableDescription
    PURPLEMCP_CONSOLE_TOKEN / SENTINELONE_TOKENService User API token
    PURPLEMCP_CONSOLE_BASE_URL / SENTINELONE_BASE_URLConsole URL (e.g., https://your-console.sentinelone.net)
    export SENTINELONE_TOKEN="your-service-user-token"
    export SENTINELONE_BASE_URL="https://your-console.sentinelone.net"
    

    Transport Modes

    The Purple MCP server supports three transport modes:

    ModeFlagDescriptionUse Case
    stdio--mode stdioStandard input/outputClaude Desktop, local usage (recommended)
    SSE--mode sseServer-Sent Events over HTTPRemote/shared access
    Streamable HTTP--mode streamable-httpHTTP with streamingProduction deployments

    Claude Desktop Configuration

    {
      "mcpServers": {
        "sentinelone": {
          "command": "uvx",
          "args": [
            "--from", "git+https://github.com/Sentinel-One/purple-mcp.git",
            "purple-mcp",
            "--mode", "stdio"
          ],
          "env": {
            "PURPLEMCP_CONSOLE_TOKEN": "YOUR_SERVICE_USER_TOKEN",
            "PURPLEMCP_CONSOLE_BASE_URL": "https://your-console.sentinelone.net"
          }
        }
      }
    }
    

    Installation Requirements

    The Purple MCP server requires Python and uv/uvx:

    Install uv (Python package manager) following the official instructions at https://docs.astral.sh/uv/getting-started/installation/ (e.g. pip install uv, or your OS package manager).

    # Verify installation
    uvx --version
    
    # Test the MCP server
    uvx --from git+https://github.com/Sentinel-One/purple-mcp.git purple-mcp --help
    

    Note: This is a Python package, not Node.js. Use uvx, not npx.

    Complete MCP Tool Reference

    Purple AI Tools

    ToolDescriptionParameters
    purple_aiNatural language cybersecurity assistant for threat investigation and PowerQuery generationquery (required) - natural language question or investigation prompt

    Alert Tools (GraphQL)

    ToolDescriptionParameters
    get_alertGet a single alert by IDalertId (required)
    list_alertsList alerts with filtersseverity, status, viewType, limit, cursor, sortBy, sortOrder
    search_alertsSearch alerts with GraphQL filtersfilters (fieldId/filterType/values), limit, cursor
    get_alert_notesGet notes/comments on an alertalertId (required)
    get_alert_historyGet timeline of changes for an alertalertId (required)

    Vulnerability Tools (GraphQL)

    ToolDescriptionParameters
    get_vulnerabilityGet a single vulnerability by IDvulnerabilityId (required)
    list_vulnerabilitiesList vulnerabilities with filtersseverity, status, limit, cursor, sortBy, sortOrder
    search_vulnerabilitiesSearch vulnerabilities with GraphQL filtersfilters (fieldId/filterType/values), limit, cursor
    get_vulnerability_notesGet notes on a vulnerabilityvulnerabilityId (required)
    get_vulnerability_historyGet timeline of changes for a vulnerabilityvulnerabilityId (required)

    Misconfiguration Tools (GraphQL)

    ToolDescriptionParameters
    get_misconfigurationGet a single misconfiguration by IDmisconfigurationId (required)
    list_misconfigurationsList misconfigurations with filtersseverity, status, viewType, limit, cursor, sortBy, sortOrder
    search_misconfigurationsSearch misconfigurations with GraphQL filtersfilters (fieldId/filterType/values), limit, cursor
    get_misconfiguration_notesGet notes on a misconfigurationmisconfigurationId (required)
    get_misconfiguration_historyGet timeline of changes for a misconfigurationmisconfigurationId (required)

    Inventory Tools (REST)

    ToolDescriptionParameters
    get_inventory_itemGet a single inventory item by IDitemId (required)
    list_inventory_itemsList inventory items with filterssurface, limit, offset, sortBy, sortOrder
    search_inventory_itemsSearch inventory with REST filtersfilters, surface, limit, offset

    PowerQuery / Data Lake Tools

    ToolDescriptionParameters
    powerqueryExecute a PowerQuery against the Singularity Data Lakequery (required), fromDate, toDate
    get_timestamp_rangeGet the available time range for PowerQuery dataNone
    iso_to_unix_timestampConvert an ISO 8601 timestamp to Unix epoch millisecondstimestamp (required)

    Dual API Architecture

    GraphQL API (Alerts, Vulnerabilities, Misconfigurations, Purple AI)

    The GraphQL API uses a filter-based query model:

    Filter Structure:

    {
      "fieldId": "severity",
      "filterType": "EQUALS",
      "values": ["CRITICAL"]
    }
    

    Filter Types:

    Filter TypeDescriptionExample
    EQUALSExact match{"fieldId": "severity", "filterType": "EQUALS", "values": ["CRITICAL"]}
    CONTAINSSubstring match{"fieldId": "name", "filterType": "CONTAINS", "values": ["ransomware"]}
    INMatch any in list{"fieldId": "status", "filterType": "IN", "values": ["NEW", "IN_PROGRESS"]}
    NOT_EQUALSNegation{"fieldId": "status", "filterType": "NOT_EQUALS", "values": ["RESOLVED"]}

    Pagination: Cursor-based. Use the cursor value from the response to fetch the next page.

    Sorting:

    ParameterValues
    sortByVaries by resource (e.g., severity, detectedAt, status)
    sortOrderASC, DESC

    REST API (Inventory)

    The REST API uses offset-based pagination with filter parameters:

    Filter Types:

    TypeDescriptionExample
    Exact matchDirect value comparisonsurface=ENDPOINT
    ContainsSubstring matchingname__contains=server
    RangeNumeric/date rangeslastSeen__gte=2026-01-01
    ID listMatch multiple IDsids=id1,id2,id3
    NegationExclude matchesstatus__ne=INACTIVE

    Pagination:

    ParameterDescriptionDefault
    limitResults per page50
    offsetSkip N results0

    PowerQuery Language

    IMPORTANT: PowerQuery is SentinelOne's Scalyr-based pipeline query language. It is NOT Splunk SPL, SQL, KQL, or Elasticsearch Query DSL.

    PowerQuery uses a pipeline syntax with filters and aggregations:

    EventType = "Process Creation" AND TgtProcName = "powershell.exe"
    | columns SrcProcName, TgtProcName, TgtProcCmdLine, EndpointName
    | limit 100
    

    Best practice: Use the purple_ai tool with a natural language description of what you want to find, and it will generate the correct PowerQuery syntax. Then execute the generated query with the powerquery tool.

    Rate Limiting

    SentinelOne enforces rate limits on API calls. The Purple MCP server does not expose specific rate limit headers, but:

    • Space out requests when iterating over large datasets
    • Use pagination to limit result sizes
    • If you receive rate limit errors, wait 30-60 seconds before retrying
    • Filter server-side to reduce total API calls

    Error Handling

    Common Errors

    ErrorCauseResolution
    401 UnauthorizedInvalid or expired tokenRegenerate Service User token
    403 ForbiddenGlobal-level token usedUse Account or Site-level token instead
    Tool not foundMCP server not connectedVerify uvx installation and environment variables
    Invalid queryMalformed PowerQuery syntaxUse purple_ai to generate correct syntax
    Resource not foundInvalid IDVerify the resource ID exists
    TimeoutQuery too broad or Data Lake overloadedNarrow time range or add filters

    Troubleshooting MCP Connection

    1. Verify uvx - Ensure uvx --version returns a version
    2. Check Python - Ensure python3 --version is available
    3. Test manually - Run uvx --from git+https://github.com/Sentinel-One/purple-mcp.git purple-mcp --help
    4. Verify token - Ensure the token is Account or Site level, not Global
    5. Check console URL - Must include https:// and the full domain
    6. Test with a simple call - Try list_alerts with limit=1 to verify connectivity

    Best Practices

    1. Use Account/Site tokens - Never use Global-level tokens; they will be rejected
    2. Start with Purple AI - Use purple_ai for investigation before diving into specific tools
    3. Use cursor pagination - For GraphQL tools, use the cursor from each response to fetch subsequent pages
    4. Scope to clients - When reviewing a specific client's security, filter by site or account
    5. Time-bound queries - Always set time ranges for PowerQuery to avoid scanning the entire Data Lake
    6. Cache inventory data - Endpoint and asset data changes less frequently than alerts
    7. Triage by severity - Always start with CRITICAL and HIGH severity items
    8. Document findings - Use alert notes and history to build investigation timelines

    Related Skills

    Frequently asked questions

    What to verify before installation and use

    What does the SentinelOne API Patterns source document cover?

    The SentinelOne Purple MCP server and the APIs behind it: uvx installation and transport modes, Service User token levels, the 23 read-only tools organized by domain, and the dual GraphQL (cursor pagination) / REST (offset pagination) architecture with its differing filter syntaxes, rate limits, and error causes.

    How do I install SentinelOne API Patterns?

    The source record exposes this install command: npx skills add https://github.com/WYRE-AI/msp-claude-plugins --skill "msp-claude-plugins/sentinelone/sentinelone/skills/api-patterns". Inspect the command and pinned source before running it.

    Which Agent platforms does the source record declare?

    The pinned source record declares support for: cursor.

    Which permission-related actions were detected?

    Static rules flagged network, exec-script in the source; the page lists the matching lines and excerpts.

    Alternatives

    Compare before choosing