# SuperOps (oci · ghcr.io/wyre-ai/superops-mcp:v2.0.1)

MCP server for SuperOps unified PSA+RMM — clients, tickets, assets, and more.

- Trust score: 49/100 (low)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-20

## Components

- oci · `ghcr.io/wyre-ai/superops-mcp:v2.0.1`: 49/100 (this document), [markdown](https://verifymcp.io/servers/wyre-ai-superops-mcp/ghcr-io-wyre-ai-superops-mcp-v2-0-1.md), [page](https://verifymcp.io/servers/wyre-ai-superops-mcp/ghcr-io-wyre-ai-superops-mcp-v2-0-1)

## Channel facts

- Registry: `oci`
- Package: `ghcr.io/wyre-ai/superops-mcp:v2.0.1`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-20.

- **Supply Chain Security**: 0/100
  - Malware scan not yet available for this package.
  - Known CVEs could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.
  - Install-script risk not yet assessed.
  - Dependency health could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (Apache-2.0).
  - Actively maintained (last published 14 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 83/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 3206 tokens (~139/item across 23 items; 22 tools + 1 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 50/100
  - Stability observed for 15 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 22 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 23 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.
  - Supports UI / widget rendering.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### How do I install the SuperOps MCP server?

SuperOps runs locally as a container image, launched with docker run --rm -i ghcr.io/wyre-ai/superops-mcp:v2.0.1. Ready-made configuration for Claude, Cursor, VS Code, Codex and 3 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add wyre-ai-superops-mcp -- docker run --rm -i ghcr.io/wyre-ai/superops-mcp:v2.0.1
```

### Cursor

```json
{
  "mcpServers": {
    "wyre-ai-superops-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/wyre-ai/superops-mcp:v2.0.1"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "wyre-ai-superops-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/wyre-ai/superops-mcp:v2.0.1"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add wyre-ai-superops-mcp -- docker run --rm -i ghcr.io/wyre-ai/superops-mcp:v2.0.1
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "wyre-ai-superops-mcp": {
      "type": "local",
      "command": [
        "docker",
        "run",
        "--rm",
        "-i",
        "ghcr.io/wyre-ai/superops-mcp:v2.0.1"
      ],
      "enabled": true
    }
  }
}
```

### Hermes

```yaml
mcp_servers:
  wyre-ai-superops-mcp:
    command: "docker"
    args: ["run", "--rm", "-i", "ghcr.io/wyre-ai/superops-mcp:v2.0.1"]
```

### Netclaw

```json
{
  "McpServers": {
    "wyre-ai-superops-mcp": {
      "Transport": "stdio",
      "Command": "docker",
      "Arguments": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/wyre-ai/superops-mcp:v2.0.1"
      ]
    }
  }
}
```

### Other

```json
{
  "mcpServers": {
    "wyre-ai-superops-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/wyre-ai/superops-mcp:v2.0.1"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-19 (score 49, +1)

No change was recorded against any check on this day. Stability & Change Management went from 43 to 47. That category is still filling its 30-day observation window: 13 days of observed history at the previous scan, 14 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-17 (score 48, +1)

No change was recorded against any check on this day. Stability & Change Management went from 37 to 40. That category is still filling its 30-day observation window: 11 days of observed history at the previous scan, 12 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-15 (score 47, +1)

No change was recorded against any check on this day. Stability & Change Management went from 30 to 33. That category is still filling its 30-day observation window: 9 days of observed history at the previous scan, 10 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-13 (score 46, +4)

- [functional improvement] Stability: unverified → 0.27

### 2026-09-05 (score 42)

First indexed and scored.

## MCP tools (22)

### `superops_navigate` (~141 tokens)

Discover available SuperOps.ai tools by domain. Returns tool names and descriptions for the selected domain. All tools are callable at any time — this is a help/discovery aid, not a prerequisite.

Input parameters:

- `domain` (string, required): The domain to explore: - clients: Client/company management - list, get, search accounts and company information - tickets: Ticket management - list, get, create tickets and manage support workflow -…

### `superops_status` (~16 tokens)

Show credentials status and available domains

### `superops_test_connection` (~22 tokens)

Test the connection to SuperOps.ai API using configured credentials.

### `superops_clients_list` (~195 tokens)

List clients (accounts) in SuperOps.ai. Results are paginated with page/pageSize. Supplying both stage and status narrows to clients matching both.

Input parameters:

- `page` (number): Page number, 1-based (default: 1, max: 2147483647)
- `pageSize` (number): Results per page (default: 50, max: 100)
- `stage` (string): Filter by stage: Active, Inactive, or Prospect. Combined with status if both are given. Your tenant may rename or extend this list.
- `status` (string): Filter by status. Status is a sub-state of stage: Paid and Unpaid belong to stage Active; New, Negotiation, Won and Lost belong to stage Prospect. Stage Inactive has no statuses. Pairing a status wit…

### `superops_clients_get` (~37 tokens)

Get detailed information for a specific client by their account ID.

Input parameters:

- `accountId` (string, required): The unique account ID of the client

### `superops_clients_search` (~109 tokens)

Search for clients by name or email domain. A client matches if the term appears in either, so searching a domain fragment finds the account that owns it.

Input parameters:

- `page` (number): Page number, 1-based (default: 1, max: 2147483647)
- `pageSize` (number): Results per page (default: 50, max: 100)
- `query` (string, required): Substring to match against the client name or any of its email domains

### `superops_tickets_list` (~224 tokens)

List tickets in SuperOps.ai. Results are paginated with page/pageSize. All supplied filters are combined: a ticket must match every one of status, priority, clientId and technicianId that you provide, and within status and priority it may match any of the listed values.

Input parameters:

- `clientId` (string): Filter by client account ID
- `page` (number): Page number, 1-based (default: 1, max: 2147483647)
- `pageSize` (number): Results per page (default: 50, max: 100)
- `priority` (array): Filter by priority(ies). SuperOps ships with: Critical, High, Medium, Low, Very Low. Your tenant may rename or extend this list.
- `status` (array): Filter by status(es). SuperOps ships with: Open, On Hold, Resolved, Closed, Waiting on third party. Your tenant may rename or extend this list. Values must match it exactly.
- `technicianId` (string): Filter by assigned technician user ID

### `superops_tickets_get` (~34 tokens)

Get detailed information for a specific ticket by its ID.

Input parameters:

- `ticketId` (string, required): The unique ticket ID

### `superops_tickets_create` (~369 tokens)

Create a new ticket in SuperOps.ai. Status, priority, category and subcategory are free-text strings that must match the values configured in your SuperOps tenant.

Input parameters:

- `category` (string): Service category name. SuperOps ships with: Database, Hardware, Help, Network, Software. Your tenant may rename or extend this list.
- `clientId` (string, required): Client account ID
- `description` (string): Detailed description of the issue
- `impact` (string): Ticket impact. SuperOps ships with: High, Medium, Low. Your tenant may rename or extend this list.
- `priority` (string): Ticket priority. SuperOps ships with: Critical, High, Medium, Low, Very Low. Your tenant may rename or extend this list.
- `requestType` (string): Request type, e.g. Incident or Service Request
- `requesterId` (string): User ID of the client user reporting the issue
- `siteId` (string): Client site ID
- `source` (string): How the ticket originated (default: INTEGRATION)
- `status` (string): Initial status; defaults to the tenant's default status. SuperOps ships with: Open, On Hold, Resolved, Closed, Waiting on third party. Your tenant may rename or extend this list.
- `subcategory` (string): Service subcategory name; must be one of the subcategories defined under the chosen category.
- `subject` (string, required): Ticket subject/title
- `techGroupId` (string): Group ID of the technician group to assign
- `technicianId` (string): User ID of the technician to assign
- `urgency` (string): Ticket urgency. SuperOps ships with: High, Medium, Low. Your tenant may rename or extend this list.

### `superops_tickets_update` (~360 tokens)

Update an existing ticket - change status, priority, assignment, or category. Free-text resolution notes belong in superops_tickets_add_note; only the tenant's configured resolutionCode can be set here.

Input parameters:

- `category` (string): New service category name. SuperOps ships with: Database, Hardware, Help, Network, Software. Your tenant may rename or extend this list.
- `impact` (string): New impact. SuperOps ships with: High, Medium, Low. Your tenant may rename or extend this list.
- `priority` (string): New priority. SuperOps ships with: Critical, High, Medium, Low, Very Low. Your tenant may rename or extend this list.
- `requestType` (string): New request type, e.g. Incident or Service Request
- `resolutionCode` (string): Resolution code, for resolving/closing tickets. SuperOps ships with: Permanent Fix, Workaround, Resolved by Requester, Exception. Your tenant may rename or extend this list.
- `status` (string): New status. SuperOps ships with: Open, On Hold, Resolved, Closed, Waiting on third party. Your tenant may rename or extend this list.
- `subcategory` (string): New service subcategory name; must be one of the subcategories defined under the chosen category.
- `subject` (string): New subject/title
- `techGroupId` (string): Group ID of the technician group to assign
- `technicianId` (string): User ID of the technician to assign
- `ticketId` (string, required): The ticket ID to update
- `urgency` (string): New urgency. SuperOps ships with: High, Medium, Low. Your tenant may rename or extend this list.

### `superops_tickets_add_note` (~85 tokens)

Add a note to a ticket. Can be internal or public (visible to client).

Input parameters:

- `content` (string, required): Note content
- `isPublic` (boolean): Whether the note is visible to the client — maps to SuperOps' PUBLIC/PRIVATE note privacy (default: false, i.e. PRIVATE)
- `ticketId` (string, required): The ticket ID

### `superops_tickets_log_time` (~211 tokens)

Log a worklog entry against a ticket. SuperOps records quantity (not a raw minute count) against the service item's unit — typically hours.

Input parameters:

- `afterHours` (boolean): Whether the work was performed after hours (default: false)
- `billDateTime` (string): When the work was performed, ISO 8601 (default: now)
- `billable` (boolean): Whether the time is billable (default: true)
- `notes` (string): Description of work performed
- `qty` (string, required): Quantity of work in the service item's unit, typically hours, e.g. "1.5"
- `serviceItemId` (string): Service catalog item ID to bill the work against
- `technicianId` (string): User ID of the technician who performed the work (defaults to the API token's user)
- `ticketId` (string, required): The ticket ID to log the work against
- `unitPrice` (string): Override the service item's unit price

### `superops_assets_list` (~269 tokens)

List assets (endpoints) in SuperOps.ai RMM. Supply any combination of status, platform and clientId; several filters are combined with AND. listInfo.hasMore is true when a further page exists and null (never false) when it does not, so treat null as the end or page against totalCount.

Input parameters:

- `clientId` (string): Filter by client account ID — the `accountId` inside an asset's `client` object, as returned by superops_clients_list.
- `page` (number): Page number, 1-based (default: 1, max: 2147483647)
- `pageSize` (number): Results per page (default: 50, max: 100)
- `platform` (string): Substring of the platform string, matched case-insensitively. SuperOps stores a full OS name ("Microsoft Windows 10 Pro", "darwin"), so pass a fragment such as "Windows" or "darwin" rather than a who…
- `status` (string): Filter by asset status, matched whole and case-insensitively. Observed values are "ONLINE" and "OFFLINE"; SuperOps validates the value at runtime, so a status this tenant uses but the list omits stil…

### `superops_assets_get` (~97 tokens)

Get detailed information for a specific asset: hardware identity (manufacturer, model, serial number), platform and OS version, network details (public IP, primary MAC, gateway, domain), agent version and patch status. SuperOps does not expose CPU, memory or disk figures on the asset record — use superops_custom_query with getAssetSummary or getAssetDiskDetails for those.

Input parameters:

- `assetId` (string, required): The unique asset ID

### `superops_assets_software` (~121 tokens)

Get the software inventory for a specific asset: name, version, install date, bit version and install path.

Input parameters:

- `assetId` (string, required): The unique asset ID
- `page` (number): Page number, 1-based (default: 1, max: 2147483647)
- `pageSize` (number): Results per page (default: 50, max: 100)
- `search` (string): Substring of the software name, matched case-insensitively. Matches the name only, not the manufacturer.

### `superops_assets_patches` (~247 tokens)

Get patch status and patch details for a specific asset: title, KB numbers, category, severity, approval status and installation status. installationStatus and severity may be combined; they are joined with AND. For a one-word roll-up of the asset's overall patch health instead of the per-patch list, use superops_custom_query with getAssetPatchStatus.

Input parameters:

- `assetId` (string, required): The unique asset ID
- `installationStatus` (string): Filter by patch installation status, matched whole and case-insensitively. Observed values are "Installed" and "NewOrMissing" — note this is the install state, not the separate `approvalStatus` (Appr…
- `page` (number): Page number, 1-based (default: 1, max: 2147483647)
- `pageSize` (number): Results per page (default: 50, max: 100)
- `severity` (array): Filter by one or more patch severities, each matched whole and case-insensitively. Observed values are "Others" and "Recommended"; SuperOps validates them at runtime, so other severities may exist.

### `superops_technicians_list` (~215 tokens)

List technicians (agents) in SuperOps.ai, sorted by name. Optionally narrow the list with a search term, matched as a substring against both name and email. SuperOps does not expose an active/inactive flag, ticket counts or last-login times for technicians. Each technician's role comes back as {roleId, name} and their groups as an array of {groupId, name}; designation, businessFunction, team and reportingManager are null unless the tenant assigns them. listInfo.hasMore is true when a further page exists and null when it is not — it is never false, so page against totalCount. Use superops_custom_query for filters beyond a name search.

Input parameters:

- `page` (number): Page number, 1-based (default: 1, max: 2147483647)
- `pageSize` (number): Results per page (default: 50, max: 100)
- `search` (string): Substring matched against the technician's name or email address

### `superops_technicians_get` (~118 tokens)

Get detailed information for a specific technician by their user ID. SuperOps has no single-technician endpoint, so this filters the technician list to that ID. Returns the technician's contact details plus their role as {roleId, name} and their group roster as an array of {groupId, name}; designation, businessFunction, team and reportingManager are null unless the tenant assigns them. Skills, ticket counts and response-time metrics are not available from SuperOps.

Input parameters:

- `technicianId` (string, required): The unique technician user ID

### `superops_technicians_groups` (~83 tokens)

List technician groups/teams in SuperOps.ai. Returns every group's ID and name — SuperOps exposes no description, member count or member roster for a group, and the endpoint is neither paginated nor filterable. These are the same groups that appear in a technician's groups field, so a group ID from here identifies the group a technician belongs to.

### `superops_technicians_lookups` (~118 tokens)

List the roles, teams, designations, business functions and technician groups defined in this SuperOps tenant, each as {id, name}. These are the values a technician's role, team, designation, businessFunction and groups fields refer to. Use this to turn a name a user gave you ("the Sales team", "Admin role") into the ID SuperOps filters on, then pass that ID to superops_custom_query — getTechnicianList accepts a condition on the role and groups attributes. Takes no arguments.

### `superops_custom_query` (~58 tokens)

Run a custom GraphQL query against the SuperOps.ai API. For advanced use cases not covered by standard tools.

Input parameters:

- `query` (string, required): The GraphQL query string
- `variables` (object): Variables to pass to the query

### `superops_custom_mutation` (~59 tokens)

Run a custom GraphQL mutation against the SuperOps.ai API. For advanced write operations not covered by standard tools.

Input parameters:

- `mutation` (string, required): The GraphQL mutation string
- `variables` (object): Variables to pass to the mutation

## Diagnostics

Captured diagnostic sections: Provenance. The full working is on the page: https://verifymcp.io/servers/wyre-ai-superops-mcp/ghcr-io-wyre-ai-superops-mcp-v2-0-1#diagnostics

## Score history

- 2026-09-20: 49
- 2026-09-19: 49
- 2026-09-18: 48
- 2026-09-17: 48
- 2026-09-16: 47
- 2026-09-15: 47
- 2026-09-14: 46
- 2026-09-13: 46
- 2026-09-12: 42
- 2026-09-11: 42
- 2026-09-10: 42
- 2026-09-09: 42
- 2026-09-08: 42
- 2026-09-07: 42
- 2026-09-06: 42
- 2026-09-05: 42

## Common questions

### What is the SuperOps MCP server?

SuperOps is an MCP server listed in the public MCP registry as io.github.WYRE-AI/superops-mcp. MCP server for SuperOps unified PSA+RMM, clients, tickets, assets, and more. This page covers its container image (ghcr.io/wyre-ai/superops-mcp:v2.0.1).

### Is the SuperOps MCP server safe to use?

SuperOps scores 49 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the SuperOps MCP server expose?

SuperOps exposes 22 tools: superops_navigate, superops_status, superops_test_connection, superops_clients_list, superops_clients_get, and 17 more. Their descriptions and schemas cost roughly 3,188 tokens of context every time the server is loaded.

### Is the SuperOps MCP server still maintained?

SuperOps is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the SuperOps MCP server under?

SuperOps declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- Repository: https://github.com/WYRE-AI/superops-mcp
- Changelog RSS feed: https://verifymcp.io/servers/wyre-ai-superops-mcp/ghcr-io-wyre-ai-superops-mcp-v2-0-1.xml
- Changelog JSON feed: https://verifymcp.io/servers/wyre-ai-superops-mcp/ghcr-io-wyre-ai-superops-mcp-v2-0-1.json
- HTML version of this page: https://verifymcp.io/servers/wyre-ai-superops-mcp/ghcr-io-wyre-ai-superops-mcp-v2-0-1
