Level MCP
MCPB · LEVELIO-MCP.MCPB
Every Level RMM endpoint, plus a local SQLite fleet store and offline cross-entity rollups no Level
Available components
Last scanned (15 hours ago)
Scores higher than 84% of MCPB servers
Category Monitoring and Observability
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. How we score → Why this is hard to score →
Supply Chain Security0
- No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.Unverified
- Known CVEs could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).Unverified
- Install-script risk not yet assessed.Unverified
- Dependency health could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).Unverified
Provenance & Transparency48
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (Apache-2.0).Pass
- Actively maintained (last published 12 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability58
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 15102 tokens (~269/item across 56 items; 56 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management99
- Stability check failed: the tool surface changed between 0.1.4 and 0.1.8: 0 tool removals, 1 breaking changes, 0 additions. See how to fix → Fail
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 7 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 56 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
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.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 3 Nov 26 0
- Provenance: unverified → fail ▼ security
- 2 Nov 26 0
- Provenance: fail → unverified ▼ security
- 31 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 96 to 99.
- 28 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 86 to 89.
- 26 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 79 to 82.
- 24 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 72 to 76.
- 23 Oct 26 0
- Stability: 0.70 → fail ▼ security
- Schema quality: excellent → good functional
- Package version: 0.1.6 → 0.1.8 functional
- Package version: 0.1.6 → 0.1.7 functional
- 22 Oct 26 0
- Tool safety: pass → unverified ▼ security
- Stability: 0.67 → unverified ▼ security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Schema quality: Schema quality not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. functional
- Package version: 0.1.5 → 0.1.6 functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Analysed mcpb/https://github.com/Servosity/msp-skills/releases/download/levelio-v0.1.8/levelio-mcp.mcpb@0.1.8
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | mcpb |
| Reason | No attestation published |
Background: How many MCP packages publish verified provenance →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
alert_recurrence ~647
Rank the chronically noisy monitors: group the synced alert history by alert name and report how often each fired, on how many distinct devices, how many firings are still unresolved, and the first/last occurrence. Computed offline from the local store. Limit the history window with --days (0 = all synced history) and the row count with --top. Use this command to rank the chronically noisiest MONITORS/alert-names fleet-wide. Do NOT use it to cluster current fires by client group; use 'alert-triage' instead. Run 'levelio-cli sync' first to populate the local store.
| Name | Type | Req | Description |
|---|---|---|---|
| agent | boolean | – | Set all agent-friendly defaults (--json --compact --no-input --no-color --yes) (default: false) |
| allow-partial-failure | boolean | – | Downgrade response-body partial-failure (e.g. partialFailureError) to a warning instead of a non-zero exit (default: false) |
| compact | boolean | – | Return only key fields (id, name, status, timestamps) for minimal token usage (default: false) |
| csv | boolean | – | Output as CSV (table and array responses) (default: false) |
| data-source | string | – | Data source for read commands: auto (live with local fallback), live (API only), local (synced data only) (default: auto) |
| days | number | – | Only count alerts that started in the last N days (0 = all synced history) (default: 0) |
| dry-run | boolean | – | Show request without sending (default: false) |
| human-friendly | boolean | – | Enable colored output and rich formatting (default: false) |
| idempotent | boolean | – | Treat already-existing create results as a successful no-op (default: false) |
| ignore-missing | boolean | – | Treat missing delete targets as a successful no-op (default: false) |
| json | boolean | – | Output as JSON (default: false) |
| max-age | string | – | Maximum acceptable age of local-store data before a stderr hint suggests sync; 0 disables (default: 30m0s) |
| no-cache | boolean | – | Bypass response cache (default: false) |
| no-color | boolean | – | Disable colored output (default: false) |
| no-input | boolean | – | Disable all interactive prompts (for CI/agents) (default: false) |
| plain | boolean | – | Output as plain tab-separated text (default: false) |
| quiet | boolean | – | Bare output, one value per line (default: false) |
| rate-limit | number | – | Max requests per second (0 to disable) (default: 0) |
| select | string | – | Comma-separated fields to include in output (e.g. --select id,name,status) |
| timeout | string | – | Request timeout (default: 1m0s) |
| top | number | – | Maximum monitors to return (0 = all) (default: 15) |
| yes | boolean | – | Skip confirmation prompts (for agents and scripts) (default: false) |
No output schema declared.
No examples provided.
alert_triage ~650
Cluster alerts so systemic fires surface above one-off noise, computed offline from the local store. By default only unresolved alerts are included; add --include-resolved to fold in resolved ones. Choose the clustering with --group-by (group|severity|name) and narrow with --severity (information|warning|critical|emergency). Use this command to cluster active alerts by client GROUP and severity to find systemic fires. Do NOT use it to find the chronically noisiest monitors fleet-wide; use 'alert-recurrence' instead. Run 'levelio-cli sync' first to populate the local store.
| Name | Type | Req | Description |
|---|---|---|---|
| agent | boolean | – | Set all agent-friendly defaults (--json --compact --no-input --no-color --yes) (default: false) |
| allow-partial-failure | boolean | – | Downgrade response-body partial-failure (e.g. partialFailureError) to a warning instead of a non-zero exit (default: false) |
| compact | boolean | – | Return only key fields (id, name, status, timestamps) for minimal token usage (default: false) |
| csv | boolean | – | Output as CSV (table and array responses) (default: false) |
| data-source | string | – | Data source for read commands: auto (live with local fallback), live (API only), local (synced data only) (default: auto) |
| dry-run | boolean | – | Show request without sending (default: false) |
| group-by | string | – | Cluster by: group|severity|name (default: group) |
| human-friendly | boolean | – | Enable colored output and rich formatting (default: false) |
| idempotent | boolean | – | Treat already-existing create results as a successful no-op (default: false) |
| ignore-missing | boolean | – | Treat missing delete targets as a successful no-op (default: false) |
| include-resolved | boolean | – | Include resolved alerts (default: unresolved only) (default: false) |
| json | boolean | – | Output as JSON (default: false) |
| max-age | string | – | Maximum acceptable age of local-store data before a stderr hint suggests sync; 0 disables (default: 30m0s) |
| no-cache | boolean | – | Bypass response cache (default: false) |
| no-color | boolean | – | Disable colored output (default: false) |
| no-input | boolean | – | Disable all interactive prompts (for CI/agents) (default: false) |
| plain | boolean | – | Output as plain tab-separated text (default: false) |
| quiet | boolean | – | Bare output, one value per line (default: false) |
| rate-limit | number | – | Max requests per second (0 to disable) (default: 0) |
| select | string | – | Comma-separated fields to include in output (e.g. --select id,name,status) |
| severity | string | – | Filter to one severity: information|warning|critical|emergency |
| timeout | string | – | Request timeout (default: 1m0s) |
| yes | boolean | – | Skip confirmation prompts (for agents and scripts) (default: false) |
No output schema declared.
No examples provided.
alerts_list ~91
Returns a list of your alerts. Optional: device_id, status, limit (plus 2 more).
| Name | Type | Req | Description |
|---|---|---|---|
| device_id | string | – | Filter to only include alerts for the specified device_id. |
| ending_before | string | – | Ending before |
| limit | string | – | Limit |
| starting_after | string | – | Starting after |
| status | string | – | Filter to only include alerts with the given status. |
No output schema declared.
No examples provided.
alerts_resolve_alert ~53
Resolves an active alert. If the alert is already resolved, this is a no-op and returns the alert as-is. Required: id.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The ID of the alert to resolve. |
No output schema declared.
No examples provided.
alerts_show ~38
Retrieves the details of an existing alert. Required: id. Returns the Alert.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The ID of the alert to retrieve. |
No output schema declared.
No examples provided.
analytics ~521
Analyze locally synced data with count, group-by, and summary operations. Data must be synced first with the sync command.
| Name | Type | Req | Description |
|---|---|---|---|
| agent | boolean | – | Set all agent-friendly defaults (--json --compact --no-input --no-color --yes) (default: false) |
| allow-partial-failure | boolean | – | Downgrade response-body partial-failure (e.g. partialFailureError) to a warning instead of a non-zero exit (default: false) |
| compact | boolean | – | Return only key fields (id, name, status, timestamps) for minimal token usage (default: false) |
| csv | boolean | – | Output as CSV (table and array responses) (default: false) |
| data-source | string | – | Data source for read commands: auto (live with local fallback), live (API only), local (synced data only) (default: auto) |
| dry-run | boolean | – | Show request without sending (default: false) |
| group-by | string | – | Field to group by |
| human-friendly | boolean | – | Enable colored output and rich formatting (default: false) |
| idempotent | boolean | – | Treat already-existing create results as a successful no-op (default: false) |
| ignore-missing | boolean | – | Treat missing delete targets as a successful no-op (default: false) |
| json | boolean | – | Output as JSON (default: false) |
| limit | number | – | Max groups to show (default: 25) |
| max-age | string | – | Maximum acceptable age of local-store data before a stderr hint suggests sync; 0 disables (default: 30m0s) |
| no-cache | boolean | – | Bypass response cache (default: false) |
| no-color | boolean | – | Disable colored output (default: false) |
| no-input | boolean | – | Disable all interactive prompts (for CI/agents) (default: false) |
| plain | boolean | – | Output as plain tab-separated text (default: false) |
| quiet | boolean | – | Bare output, one value per line (default: false) |
| rate-limit | number | – | Max requests per second (0 to disable) (default: 0) |
| select | string | – | Comma-separated fields to include in output (e.g. --select id,name,status) |
| timeout | string | – | Request timeout (default: 1m0s) |
| type | string | – | Resource type to analyze |
| yes | boolean | – | Skip confirmation prompts (for agents and scripts) (default: false) |
No output schema declared.
No examples provided.
at_risk ~593
Rank devices by a single weighted risk score that combines open alerts (weighted by severity), pending OS updates, low security score, how long the device has been dark, and whether it is offline — computed offline from the local store. Each result lists the reasons that drove its score. Use --top to cap the list and --group to scope to a group and its descendants. Run 'levelio-cli sync' first to populate the local store.
| Name | Type | Req | Description |
|---|---|---|---|
| agent | boolean | – | Set all agent-friendly defaults (--json --compact --no-input --no-color --yes) (default: false) |
| allow-partial-failure | boolean | – | Downgrade response-body partial-failure (e.g. partialFailureError) to a warning instead of a non-zero exit (default: false) |
| compact | boolean | – | Return only key fields (id, name, status, timestamps) for minimal token usage (default: false) |
| csv | boolean | – | Output as CSV (table and array responses) (default: false) |
| data-source | string | – | Data source for read commands: auto (live with local fallback), live (API only), local (synced data only) (default: auto) |
| dry-run | boolean | – | Show request without sending (default: false) |
| group | string | – | Scope to this group id and its descendants |
| human-friendly | boolean | – | Enable colored output and rich formatting (default: false) |
| idempotent | boolean | – | Treat already-existing create results as a successful no-op (default: false) |
| ignore-missing | boolean | – | Treat missing delete targets as a successful no-op (default: false) |
| json | boolean | – | Output as JSON (default: false) |
| max-age | string | – | Maximum acceptable age of local-store data before a stderr hint suggests sync; 0 disables (default: 30m0s) |
| no-cache | boolean | – | Bypass response cache (default: false) |
| no-color | boolean | – | Disable colored output (default: false) |
| no-input | boolean | – | Disable all interactive prompts (for CI/agents) (default: false) |
| plain | boolean | – | Output as plain tab-separated text (default: false) |
| quiet | boolean | – | Bare output, one value per line (default: false) |
| rate-limit | number | – | Max requests per second (0 to disable) (default: 0) |
| select | string | – | Comma-separated fields to include in output (e.g. --select id,name,status) |
| timeout | string | – | Request timeout (default: 1m0s) |
| top | number | – | Show at most this many highest-risk devices (0 = all) (default: 20) |
| yes | boolean | – | Skip confirmation prompts (for agents and scripts) (default: false) |
No output schema declared.
No examples provided.
automations_trigger-webhook ~66
Triggers an automation via a webhook. Required: token. Optional: device_ids.
| Name | Type | Req | Description |
|---|---|---|---|
| device_ids | string | – | Trigger the automation for the specified devices. Conditions on the trigger will still be applied. |
| token | string | yes | The token of the webhook to trigger. |
No output schema declared.
No examples provided.
cf_coverage ~669
Audit custom-field coverage across devices: for each field, how many devices carry a value, the coverage percentage, and — with --missing — the exact devices that have no value (or, with --present, the devices that have one). Computed offline by anti-joining custom fields, custom-field values, and devices. Group/org-level values are reported separately as other_assignees. Narrow to one field with --field (matches reference or name). Use this command to audit which devices/groups/org are MISSING (or have) a CUSTOM-FIELD value. Do NOT use it for tag-data hygiene; use 'tag-audit' instead. Run 'levelio-cli sync' first to populate the local store.
| Name | Type | Req | Description |
|---|---|---|---|
| agent | boolean | – | Set all agent-friendly defaults (--json --compact --no-input --no-color --yes) (default: false) |
| allow-partial-failure | boolean | – | Downgrade response-body partial-failure (e.g. partialFailureError) to a warning instead of a non-zero exit (default: false) |
| compact | boolean | – | Return only key fields (id, name, status, timestamps) for minimal token usage (default: false) |
| csv | boolean | – | Output as CSV (table and array responses) (default: false) |
| data-source | string | – | Data source for read commands: auto (live with local fallback), live (API only), local (synced data only) (default: auto) |
| dry-run | boolean | – | Show request without sending (default: false) |
| field | string | – | Limit to one custom field (matches reference or name) |
| human-friendly | boolean | – | Enable colored output and rich formatting (default: false) |
| idempotent | boolean | – | Treat already-existing create results as a successful no-op (default: false) |
| ignore-missing | boolean | – | Treat missing delete targets as a successful no-op (default: false) |
| json | boolean | – | Output as JSON (default: false) |
| max-age | string | – | Maximum acceptable age of local-store data before a stderr hint suggests sync; 0 disables (default: 30m0s) |
| missing | boolean | – | Include the list of devices missing a value for each field (default: false) |
| no-cache | boolean | – | Bypass response cache (default: false) |
| no-color | boolean | – | Disable colored output (default: false) |
| no-input | boolean | – | Disable all interactive prompts (for CI/agents) (default: false) |
| plain | boolean | – | Output as plain tab-separated text (default: false) |
| present | boolean | – | Include the list of devices that have a value for each field (default: false) |
| quiet | boolean | – | Bare output, one value per line (default: false) |
| rate-limit | number | – | Max requests per second (0 to disable) (default: 0) |
| select | string | – | Comma-separated fields to include in output (e.g. --select id,name,status) |
| timeout | string | – | Request timeout (default: 1m0s) |
| yes | boolean | – | Skip confirmation prompts (for agents and scripts) (default: false) |
No output schema declared.
No examples provided.
client_scorecard ~677
Roll device, alert, and update metrics up to each top-level group (client): device count, online percentage, open critical/emergency alerts, average security score, stale-device count, and pending-update exposure — the QBR-ready per-client posture table, computed offline from the local store. Genuinely ungrouped devices are reported under "(no group)"; devices whose group was never synced get their own row labeled with the raw group id. Use this command for a one-row-per-CLIENT (top-level group) posture rollup for QBR reporting. Do NOT use it to render the full nested hierarchy (use 'group-tree') or a pure security-score distribution (use 'security-posture'). Run 'levelio-cli sync' first to populate the local store.
| Name | Type | Req | Description |
|---|---|---|---|
| agent | boolean | – | Set all agent-friendly defaults (--json --compact --no-input --no-color --yes) (default: false) |
| allow-partial-failure | boolean | – | Downgrade response-body partial-failure (e.g. partialFailureError) to a warning instead of a non-zero exit (default: false) |
| compact | boolean | – | Return only key fields (id, name, status, timestamps) for minimal token usage (default: false) |
| csv | boolean | – | Output as CSV (table and array responses) (default: false) |
| data-source | string | – | Data source for read commands: auto (live with local fallback), live (API only), local (synced data only) (default: auto) |
| dry-run | boolean | – | Show request without sending (default: false) |
| human-friendly | boolean | – | Enable colored output and rich formatting (default: false) |
| idempotent | boolean | – | Treat already-existing create results as a successful no-op (default: false) |
| ignore-missing | boolean | – | Treat missing delete targets as a successful no-op (default: false) |
| json | boolean | – | Output as JSON (default: false) |
| max-age | string | – | Maximum acceptable age of local-store data before a stderr hint suggests sync; 0 disables (default: 30m0s) |
| no-cache | boolean | – | Bypass response cache (default: false) |
| no-color | boolean | – | Disable colored output (default: false) |
| no-input | boolean | – | Disable all interactive prompts (for CI/agents) (default: false) |
| plain | boolean | – | Output as plain tab-separated text (default: false) |
| quiet | boolean | – | Bare output, one value per line (default: false) |
| rate-limit | number | – | Max requests per second (0 to disable) (default: 0) |
| select | string | – | Comma-separated fields to include in output (e.g. --select id,name,status) |
| sort | string | – | Sort clients by: criticals|stale|devices|patches|online|score (default: criticals) |
| stale-days | number | – | Days dark before a device counts as stale in the rollup (default: 14) |
| timeout | string | – | Request timeout (default: 1m0s) |
| yes | boolean | – | Skip confirmation prompts (for agents and scripts) (default: false) |
No output schema declared.
No examples provided.
context ~29
Get API domain context: resource taxonomy, auth requirements, query tips, and unique capabilities. Call this first.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
custom-field-values_delete ~121
Deletes a custom field value for the organization, group, or device. Required: custom_field_id. Optional: assigned_to_id, force. Destructive.
| Name | Type | Req | Description |
|---|---|---|---|
| assigned_to_id | string | – | The ID of the object to delete the value for. If not provided, the value will be deleted globally for the organization. |
| custom_field_id | string | yes | The ID of the custom field to delete the value for. |
| force | boolean | – | When 'force' is true, the value will be deleted for all descendants of the assigned_to_id. |
No output schema declared.
No examples provided.
custom-field-values_list ~111
Returns a list of custom field values for the organization, groups, or devices. Optional: assigned_to_id, custom_field_id, limit (plus 2 more).
| Name | Type | Req | Description |
|---|---|---|---|
| assigned_to_id | string | – | Filter to only include custom field values for the specified object. |
| custom_field_id | string | – | Filter to only include the value for the specified custom field. |
| ending_before | string | – | Ending before |
| limit | string | – | Limit |
| starting_after | string | – | Starting after |
No output schema declared.
No examples provided.
custom-field-values_update ~128
Set a custom field value for the organization, group, or device. Required: custom_field_id, value. Optional: assigned_to_id, force. Returns the updated CustomFieldValue.
| Name | Type | Req | Description |
|---|---|---|---|
| assigned_to_id | string | – | The ID of the object to set the value for. If not provided, the value will be set globally for the organization. |
| custom_field_id | string | yes | The ID of the custom field to set the value for. |
| force | boolean | – | When 'force' is true |
| value | string | yes | The value to set for the custom field. |
No output schema declared.
No examples provided.
custom-fields_create ~71
Creates a custom field. Required: name. Optional: admin_only. Returns the new CustomField.
| Name | Type | Req | Description |
|---|---|---|---|
| admin_only | boolean | – | When 'admin_only' is true, this field's value can only be viewed or edited by an admin. |
| name | string | yes | The name of the custom field. |
No output schema declared.
No examples provided.
custom-fields_delete ~34
Deletes a custom field. Required: id. Destructive.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The ID of the custom field. |
No output schema declared.
No examples provided.
custom-fields_list ~54
Returns a list of custom fields. Optional: limit, starting_after, ending_before.
| Name | Type | Req | Description |
|---|---|---|---|
| ending_before | string | – | Ending before |
| limit | string | – | Limit |
| starting_after | string | – | Starting after |
No output schema declared.
No examples provided.
custom-fields_show ~40
Retrieves the details of an existing custom field. Required: id. Returns the CustomField.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The ID of the custom field. |
No output schema declared.
No examples provided.
custom-fields_update ~86
Updates a custom field. Required: id. Optional: admin_only, name. Returns the updated CustomField.
| Name | Type | Req | Description |
|---|---|---|---|
| admin_only | boolean | – | When 'admin_only' is true, this field's value can only be viewed or edited by an admin. |
| id | string | yes | The ID of the custom field. |
| name | string | – | The name of the custom field. |
No output schema declared.
No examples provided.
data_hygiene_audit ~46
Every assignee missing a custom-field value, so required asset/warranty data can be backfilled.
| Name | Type | Req | Description |
|---|---|---|---|
| missing | boolean | – | Override the recipe's --missing value. |
No output schema declared.
No examples provided.
devices_delete ~34
Deletes the specified device. Required: id. Destructive.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The ID of the device to delete. |
No output schema declared.
No examples provided.
devices_list ~278
Returns a list of your devices. Optional: group_id, ancestor_group_id, tag_id (plus 12 more).
| Name | Type | Req | Description |
|---|---|---|---|
| ancestor_group_id | string | – | Filter to only include devices with the given group id as an ancestor. |
| ending_before | string | – | Ending before |
| group_id | string | – | Filter to only include devices with the given parent group id. If not provided, all devices are returned. |
| hostname | string | – | Filter to only include devices with the specified hostname. |
| include_cpus | boolean | – | Include detailed CPU information in the response. |
| include_disks | boolean | – | Include detailed disk and disk partitioninformation in the response. |
| include_memory | boolean | – | Include detailed memory information in the response. |
| include_motherboard | boolean | – | Include motherboard information in the response. |
| include_network_interfaces | boolean | – | Include detailed network interface information in the response. |
| include_operating_system | boolean | – | Include detailed operating system information in the response. |
| include_security | boolean | – | Include detailed security information in the response. |
| limit | string | – | Limit |
| serial_number | string | – | Filter to only include devices with the specified serial number. |
| starting_after | string | – | Starting after |
| tag_id | string | – | Filter to only include devices that have the specified tag. |
No output schema declared.
No examples provided.
devices_show ~173
Retrieves the details of an existing device. Required: id. Optional: include_operating_system, include_cpus, include_memory (plus 4 more). Returns the Device.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The ID of the device to retrieve. |
| include_cpus | boolean | – | Include detailed CPU information in the response. |
| include_disks | boolean | – | Include detailed disk and disk partitioninformation in the response. |
| include_memory | boolean | – | Include detailed memory information in the response. |
| include_motherboard | boolean | – | Include motherboard information in the response. |
| include_network_interfaces | boolean | – | Include detailed network interface information in the response. |
| include_operating_system | boolean | – | Include detailed operating system information in the response. |
| include_security | boolean | – | Include detailed security information in the response. |
No output schema declared.
No examples provided.
devices_update ~100
Updates the specified device. Required: id. Optional: group_id, name, notes. Returns the updated Device.
| Name | Type | Req | Description |
|---|---|---|---|
| group_id | string | – | The ID of the group to assign the device to. If null, the device will be removed from its current group. |
| id | string | yes | The ID of the device to update. |
| name | string | – | The name of the device. |
| notes | string | – | The notes for the device. |
No output schema declared.
No examples provided.
fleet ~649
Cross-tab the synced device estate by a single dimension with online, offline, and maintenance counts per bucket. Computed offline from the local store. Choose the dimension with --by (platform|os|group|role|country|tag) and narrow with --tag / --online / --offline. Use this command for an inventory cross-tab by OS/platform/group/tag. Do NOT use it for a per-CLIENT posture rollup (alerts/score/patch exposure); use 'client-scorecard' instead. Run 'levelio-cli sync' first to populate the local store.
| Name | Type | Req | Description |
|---|---|---|---|
| agent | boolean | – | Set all agent-friendly defaults (--json --compact --no-input --no-color --yes) (default: false) |
| allow-partial-failure | boolean | – | Downgrade response-body partial-failure (e.g. partialFailureError) to a warning instead of a non-zero exit (default: false) |
| by | string | – | Dimension to roll up: platform|os|group|role|country|tag (default: platform) |
| compact | boolean | – | Return only key fields (id, name, status, timestamps) for minimal token usage (default: false) |
| csv | boolean | – | Output as CSV (table and array responses) (default: false) |
| data-source | string | – | Data source for read commands: auto (live with local fallback), live (API only), local (synced data only) (default: auto) |
| dry-run | boolean | – | Show request without sending (default: false) |
| human-friendly | boolean | – | Enable colored output and rich formatting (default: false) |
| idempotent | boolean | – | Treat already-existing create results as a successful no-op (default: false) |
| ignore-missing | boolean | – | Treat missing delete targets as a successful no-op (default: false) |
| json | boolean | – | Output as JSON (default: false) |
| max-age | string | – | Maximum acceptable age of local-store data before a stderr hint suggests sync; 0 disables (default: 30m0s) |
| no-cache | boolean | – | Bypass response cache (default: false) |
| no-color | boolean | – | Disable colored output (default: false) |
| no-input | boolean | – | Disable all interactive prompts (for CI/agents) (default: false) |
| offline | boolean | – | Only count offline devices (default: false) |
| online | boolean | – | Only count online devices (default: false) |
| plain | boolean | – | Output as plain tab-separated text (default: false) |
| quiet | boolean | – | Bare output, one value per line (default: false) |
| rate-limit | number | – | Max requests per second (0 to disable) (default: 0) |
| select | string | – | Comma-separated fields to include in output (e.g. --select id,name,status) |
| tag | string | – | Only count devices carrying this tag |
| timeout | string | – | Request timeout (default: 1m0s) |
| yes | boolean | – | Skip confirmation prompts (for agents and scripts) (default: false) |
No output schema declared.
No examples provided.
group_tree ~660
Render the Level group hierarchy as a tree, with each node showing its rolled-up descendant device count and — when requested via --with — open alerts, stale devices, and average security score. Computed offline from the local store. --with takes a comma list of alerts,stale,score; --stale-days sets the staleness window; --root renders a single subtree. Use this command to render the full nested group HIERARCHY with rolled-up health per node. Do NOT use it for a flat one-row-per-client scorecard; use 'client-scorecard' instead. Run 'levelio-cli sync' first to populate the local store.
| Name | Type | Req | Description |
|---|---|---|---|
| agent | boolean | – | Set all agent-friendly defaults (--json --compact --no-input --no-color --yes) (default: false) |
| allow-partial-failure | boolean | – | Downgrade response-body partial-failure (e.g. partialFailureError) to a warning instead of a non-zero exit (default: false) |
| compact | boolean | – | Return only key fields (id, name, status, timestamps) for minimal token usage (default: false) |
| csv | boolean | – | Output as CSV (table and array responses) (default: false) |
| data-source | string | – | Data source for read commands: auto (live with local fallback), live (API only), local (synced data only) (default: auto) |
| dry-run | boolean | – | Show request without sending (default: false) |
| human-friendly | boolean | – | Enable colored output and rich formatting (default: false) |
| idempotent | boolean | – | Treat already-existing create results as a successful no-op (default: false) |
| ignore-missing | boolean | – | Treat missing delete targets as a successful no-op (default: false) |
| json | boolean | – | Output as JSON (default: false) |
| max-age | string | – | Maximum acceptable age of local-store data before a stderr hint suggests sync; 0 disables (default: 30m0s) |
| no-cache | boolean | – | Bypass response cache (default: false) |
| no-color | boolean | – | Disable colored output (default: false) |
| no-input | boolean | – | Disable all interactive prompts (for CI/agents) (default: false) |
| plain | boolean | – | Output as plain tab-separated text (default: false) |
| quiet | boolean | – | Bare output, one value per line (default: false) |
| rate-limit | number | – | Max requests per second (0 to disable) (default: 0) |
| root | string | – | Render only this group id and its descendants |
| select | string | – | Comma-separated fields to include in output (e.g. --select id,name,status) |
| stale-days | number | – | Staleness window in days when --with stale is set (default: 7) |
| timeout | string | – | Request timeout (default: 1m0s) |
| with | string | – | Annotate nodes with a comma list: alerts,stale,score |
| yes | boolean | – | Skip confirmation prompts (for agents and scripts) (default: false) |
No output schema declared.
No examples provided.
groups_create ~65
Creates a new group. Required: name. Optional: parent_id. Returns array of string.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | The name of the group. |
| parent_id | string | – | The parent group ID. If not provided, or null, a root group will be created. |
No output schema declared.
No examples provided.
groups_delete ~34
Deletes an existing group. Required: id. Destructive.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The ID of the group to delete. |
No output schema declared.
No examples provided.
groups_devices_assign-group ~64
Assigns the specified devices to the given group. Required: id, device_ids. Returns the new DevicesAssignGroupResponse.
| Name | Type | Req | Description |
|---|---|---|---|
| device_ids | string | yes | An array of device IDs to assign to the group. |
| id | string | yes | ID of the group. |
No output schema declared.
No examples provided.
groups_devices_remove-group ~57
Removes the specified devices from the group. Required: id, device_ids. Destructive.
| Name | Type | Req | Description |
|---|---|---|---|
| device_ids | string | yes | An array of device IDs to remove from the group. |
| id | string | yes | ID of the group. |
No output schema declared.
No examples provided.
groups_list ~85
Returns a list of your groups. Optional: parent_id, limit, starting_after (plus 1 more).
| Name | Type | Req | Description |
|---|---|---|---|
| ending_before | string | – | Ending before |
| limit | string | – | Limit |
| parent_id | string | – | Filter to only include groups with the given parent id. If not provided, all groups are returned. |
| starting_after | string | – | Starting after |
No output schema declared.
No examples provided.
groups_show ~39
Retrieves the details of an existing group. Required: id. Returns array of string.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The ID of the group to retrieve. |
No output schema declared.
No examples provided.
groups_update ~84
Updates an existing group. Required: id. Optional: name, parent_id. Returns array of string.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The ID of the group to update. |
| name | string | – | The name of the group. |
| parent_id | string | – | The parent group ID. If not provided, or null, the group will be moved to the root level. |
No output schema declared.
No examples provided.
import ~539
Import data from a JSONL file by issuing POST requests for each record. Each line must be a valid JSON object. Failed records are logged to stderr but do not stop the import.
| Name | Type | Req | Description |
|---|---|---|---|
| agent | boolean | – | Set all agent-friendly defaults (--json --compact --no-input --no-color --yes) (default: false) |
| allow-partial-failure | boolean | – | Downgrade response-body partial-failure (e.g. partialFailureError) to a warning instead of a non-zero exit (default: false) |
| args | string | – | Additional positional arguments or raw CLI flags to append to the command. |
| batch-size | number | – | Records per batch (future: batch API support) (default: 1) |
| compact | boolean | – | Return only key fields (id, name, status, timestamps) for minimal token usage (default: false) |
| csv | boolean | – | Output as CSV (table and array responses) (default: false) |
| data-source | string | – | Data source for read commands: auto (live with local fallback), live (API only), local (synced data only) (default: auto) |
| dry-run | boolean | – | Preview import without sending requests (default: false) |
| human-friendly | boolean | – | Enable colored output and rich formatting (default: false) |
| idempotent | boolean | – | Treat already-existing create results as a successful no-op (default: false) |
| ignore-missing | boolean | – | Treat missing delete targets as a successful no-op (default: false) |
| json | boolean | – | Output as JSON (default: false) |
| max-age | string | – | Maximum acceptable age of local-store data before a stderr hint suggests sync; 0 disables (default: 30m0s) |
| no-cache | boolean | – | Bypass response cache (default: false) |
| no-color | boolean | – | Disable colored output (default: false) |
| no-input | boolean | – | Disable all interactive prompts (for CI/agents) (default: false) |
| plain | boolean | – | Output as plain tab-separated text (default: false) |
| quiet | boolean | – | Bare output, one value per line (default: false) |
| rate-limit | number | – | Max requests per second (0 to disable) (default: 0) |
| select | string | – | Comma-separated fields to include in output (e.g. --select id,name,status) |
| timeout | string | – | Request timeout (default: 1m0s) |
| yes | boolean | – | Skip confirmation prompts (for agents and scripts) (default: false) |
No output schema declared.
No examples provided.
patch_posture ~619
Roll up the synced OS-update inventory into pending, installed, and errored counts overall and per category, computed offline from the local store. Pending = available and not yet installed; installed = has an installed-on date; errored = the install reported an error. Narrow to one category with --category (case-insensitive substring, e.g. "security"). Add --errors to list each errored install (device, update, error text) as a remediation fix-list. Run 'levelio-cli sync' first to populate the local store.
| Name | Type | Req | Description |
|---|---|---|---|
| agent | boolean | – | Set all agent-friendly defaults (--json --compact --no-input --no-color --yes) (default: false) |
| allow-partial-failure | boolean | – | Downgrade response-body partial-failure (e.g. partialFailureError) to a warning instead of a non-zero exit (default: false) |
| category | string | – | Filter to updates whose category matches this substring (e.g. security) |
| compact | boolean | – | Return only key fields (id, name, status, timestamps) for minimal token usage (default: false) |
| csv | boolean | – | Output as CSV (table and array responses) (default: false) |
| data-source | string | – | Data source for read commands: auto (live with local fallback), live (API only), local (synced data only) (default: auto) |
| dry-run | boolean | – | Show request without sending (default: false) |
| errors | boolean | – | List each errored install (device, update, error) as a remediation fix-list (default: false) |
| human-friendly | boolean | – | Enable colored output and rich formatting (default: false) |
| idempotent | boolean | – | Treat already-existing create results as a successful no-op (default: false) |
| ignore-missing | boolean | – | Treat missing delete targets as a successful no-op (default: false) |
| json | boolean | – | Output as JSON (default: false) |
| max-age | string | – | Maximum acceptable age of local-store data before a stderr hint suggests sync; 0 disables (default: 30m0s) |
| no-cache | boolean | – | Bypass response cache (default: false) |
| no-color | boolean | – | Disable colored output (default: false) |
| no-input | boolean | – | Disable all interactive prompts (for CI/agents) (default: false) |
| plain | boolean | – | Output as plain tab-separated text (default: false) |
| quiet | boolean | – | Bare output, one value per line (default: false) |
| rate-limit | number | – | Max requests per second (0 to disable) (default: 0) |
| select | string | – | Comma-separated fields to include in output (e.g. --select id,name,status) |
| timeout | string | – | Request timeout (default: 1m0s) |
| yes | boolean | – | Skip confirmation prompts (for agents and scripts) (default: false) |
No output schema declared.
No examples provided.
reboot_due ~649
List devices whose installed OS updates landed AFTER the device's last reboot — patches that are on disk but not yet effective until the machine restarts. For each device: how many installs are waiting, the oldest install date, and how many days it has been waiting. Computed offline by correlating the synced updates table with each device's last_reboot_time. Devices without a reboot timestamp are reported as skipped, never guessed. Use --days to only flag devices waiting at least N days. Use this command to list devices waiting on a REBOOT to finalize installed patches. Do NOT use it for fleet patch-EXPOSURE aggregation (pending vs installed by category); use 'patch-posture' instead. Run 'levelio-cli sync' first to populate the local store.
| Name | Type | Req | Description |
|---|---|---|---|
| agent | boolean | – | Set all agent-friendly defaults (--json --compact --no-input --no-color --yes) (default: false) |
| allow-partial-failure | boolean | – | Downgrade response-body partial-failure (e.g. partialFailureError) to a warning instead of a non-zero exit (default: false) |
| compact | boolean | – | Return only key fields (id, name, status, timestamps) for minimal token usage (default: false) |
| csv | boolean | – | Output as CSV (table and array responses) (default: false) |
| data-source | string | – | Data source for read commands: auto (live with local fallback), live (API only), local (synced data only) (default: auto) |
| days | number | – | Only flag devices whose oldest waiting install is at least N days old (default: 0) |
| dry-run | boolean | – | Show request without sending (default: false) |
| human-friendly | boolean | – | Enable colored output and rich formatting (default: false) |
| idempotent | boolean | – | Treat already-existing create results as a successful no-op (default: false) |
| ignore-missing | boolean | – | Treat missing delete targets as a successful no-op (default: false) |
| json | boolean | – | Output as JSON (default: false) |
| max-age | string | – | Maximum acceptable age of local-store data before a stderr hint suggests sync; 0 disables (default: 30m0s) |
| no-cache | boolean | – | Bypass response cache (default: false) |
| no-color | boolean | – | Disable colored output (default: false) |
| no-input | boolean | – | Disable all interactive prompts (for CI/agents) (default: false) |
| plain | boolean | – | Output as plain tab-separated text (default: false) |
| quiet | boolean | – | Bare output, one value per line (default: false) |
| rate-limit | number | – | Max requests per second (0 to disable) (default: 0) |
| select | string | – | Comma-separated fields to include in output (e.g. --select id,name,status) |
| timeout | string | – | Request timeout (default: 1m0s) |
| yes | boolean | – | Skip confirmation prompts (for agents and scripts) (default: false) |
No output schema declared.
No examples provided.
search ~64
Full-text search across all synced data. Faster than paginating list endpoints. Requires sync first.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | – | Max results (default 25) |
| query | string | yes | Search query (supports FTS5 syntax: AND, OR, NOT, quotes for phrases) |
No output schema declared.
No examples provided.
security_posture ~565
Summarise the device security-score distribution across the synced fleet, list every device below --below, and optionally roll the scores up by group with --by-group. Computed offline from the local store; devices without a score are counted separately. Run 'levelio-cli sync' first to populate the local store.
| Name | Type | Req | Description |
|---|---|---|---|
| agent | boolean | – | Set all agent-friendly defaults (--json --compact --no-input --no-color --yes) (default: false) |
| allow-partial-failure | boolean | – | Downgrade response-body partial-failure (e.g. partialFailureError) to a warning instead of a non-zero exit (default: false) |
| below | number | – | List devices with a security score under this threshold (default: 70) |
| by-group | boolean | – | Also roll scores up by group (default: false) |
| compact | boolean | – | Return only key fields (id, name, status, timestamps) for minimal token usage (default: false) |
| csv | boolean | – | Output as CSV (table and array responses) (default: false) |
| data-source | string | – | Data source for read commands: auto (live with local fallback), live (API only), local (synced data only) (default: auto) |
| dry-run | boolean | – | Show request without sending (default: false) |
| human-friendly | boolean | – | Enable colored output and rich formatting (default: false) |
| idempotent | boolean | – | Treat already-existing create results as a successful no-op (default: false) |
| ignore-missing | boolean | – | Treat missing delete targets as a successful no-op (default: false) |
| json | boolean | – | Output as JSON (default: false) |
| max-age | string | – | Maximum acceptable age of local-store data before a stderr hint suggests sync; 0 disables (default: 30m0s) |
| no-cache | boolean | – | Bypass response cache (default: false) |
| no-color | boolean | – | Disable colored output (default: false) |
| no-input | boolean | – | Disable all interactive prompts (for CI/agents) (default: false) |
| plain | boolean | – | Output as plain tab-separated text (default: false) |
| quiet | boolean | – | Bare output, one value per line (default: false) |
| rate-limit | number | – | Max requests per second (0 to disable) (default: 0) |
| select | string | – | Comma-separated fields to include in output (e.g. --select id,name,status) |
| timeout | string | – | Request timeout (default: 1m0s) |
| yes | boolean | – | Skip confirmation prompts (for agents and scripts) (default: false) |
No output schema declared.
No examples provided.
since ~578
Report what moved in a recent time window — alerts that started or resolved, updates published or installed, and how many devices checked in — computed offline from stored timestamps. Set the window with --hours (default 24) or --days. Lists are capped at 50 samples each; the summary holds full counts. Run 'levelio-cli sync' first to populate the local store.
| Name | Type | Req | Description |
|---|---|---|---|
| agent | boolean | – | Set all agent-friendly defaults (--json --compact --no-input --no-color --yes) (default: false) |
| allow-partial-failure | boolean | – | Downgrade response-body partial-failure (e.g. partialFailureError) to a warning instead of a non-zero exit (default: false) |
| compact | boolean | – | Return only key fields (id, name, status, timestamps) for minimal token usage (default: false) |
| csv | boolean | – | Output as CSV (table and array responses) (default: false) |
| data-source | string | – | Data source for read commands: auto (live with local fallback), live (API only), local (synced data only) (default: auto) |
| days | number | – | Window size in days (overrides --hours when > 0) (default: 0) |
| dry-run | boolean | – | Show request without sending (default: false) |
| hours | number | – | Window size in hours (default: 24) |
| human-friendly | boolean | – | Enable colored output and rich formatting (default: false) |
| idempotent | boolean | – | Treat already-existing create results as a successful no-op (default: false) |
| ignore-missing | boolean | – | Treat missing delete targets as a successful no-op (default: false) |
| json | boolean | – | Output as JSON (default: false) |
| max-age | string | – | Maximum acceptable age of local-store data before a stderr hint suggests sync; 0 disables (default: 30m0s) |
| no-cache | boolean | – | Bypass response cache (default: false) |
| no-color | boolean | – | Disable colored output (default: false) |
| no-input | boolean | – | Disable all interactive prompts (for CI/agents) (default: false) |
| plain | boolean | – | Output as plain tab-separated text (default: false) |
| quiet | boolean | – | Bare output, one value per line (default: false) |
| rate-limit | number | – | Max requests per second (0 to disable) (default: 0) |
| select | string | – | Comma-separated fields to include in output (e.g. --select id,name,status) |
| timeout | string | – | Request timeout (default: 1m0s) |
| yes | boolean | – | Skip confirmation prompts (for agents and scripts) (default: false) |
No output schema declared.
No examples provided.
sql ~93
Run read-only SQL against local database. Use for ad-hoc analysis, aggregations, and joins across synced resources. Requires sync first.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | SQL query (SELECT or WITH...SELECT). Synced records live in resources(resource_type, id, data); filter by resource_type and use json_extract on data, e.g. SELECT json_extract(data,'$.name') FROM reso… |
No output schema declared.
No examples provided.
stale ~574
List devices that have not checked in for at least --days days, computed offline from the locally synced store. Devices with no last-seen timestamp that are currently offline are also reported (days_dark = -1, unknown age). Use --exclude-maintenance to ignore machines intentionally in maintenance mode. Run 'levelio-cli sync' first to populate the local store.
| Name | Type | Req | Description |
|---|---|---|---|
| agent | boolean | – | Set all agent-friendly defaults (--json --compact --no-input --no-color --yes) (default: false) |
| allow-partial-failure | boolean | – | Downgrade response-body partial-failure (e.g. partialFailureError) to a warning instead of a non-zero exit (default: false) |
| compact | boolean | – | Return only key fields (id, name, status, timestamps) for minimal token usage (default: false) |
| csv | boolean | – | Output as CSV (table and array responses) (default: false) |
| data-source | string | – | Data source for read commands: auto (live with local fallback), live (API only), local (synced data only) (default: auto) |
| days | number | – | Mark devices not seen in at least this many days (default: 7) |
| dry-run | boolean | – | Show request without sending (default: false) |
| exclude-maintenance | boolean | – | Skip devices in maintenance mode (default: false) |
| human-friendly | boolean | – | Enable colored output and rich formatting (default: false) |
| idempotent | boolean | – | Treat already-existing create results as a successful no-op (default: false) |
| ignore-missing | boolean | – | Treat missing delete targets as a successful no-op (default: false) |
| json | boolean | – | Output as JSON (default: false) |
| max-age | string | – | Maximum acceptable age of local-store data before a stderr hint suggests sync; 0 disables (default: 30m0s) |
| no-cache | boolean | – | Bypass response cache (default: false) |
| no-color | boolean | – | Disable colored output (default: false) |
| no-input | boolean | – | Disable all interactive prompts (for CI/agents) (default: false) |
| plain | boolean | – | Output as plain tab-separated text (default: false) |
| quiet | boolean | – | Bare output, one value per line (default: false) |
| rate-limit | number | – | Max requests per second (0 to disable) (default: 0) |
| select | string | – | Comma-separated fields to include in output (e.g. --select id,name,status) |
| timeout | string | – | Request timeout (default: 1m0s) |
| yes | boolean | – | Skip confirmation prompts (for agents and scripts) (default: false) |
No output schema declared.
No examples provided.
How do I install the Level MCP server?
Level MCP ships as an MCPB bundle, a single file you download and open in an MCP host that supports MCPB bundles, such as Claude Desktop. The host reads the launch command from the bundle's own manifest, so there is no command to copy. Before opening it, check the file's SHA-256 matches the one the MCP registry declares for it, 38ff219e9988c5d82ca7b8b433dab2abf91c5a6f9090968ac4dd02c530930a11; the commands to do that are on this page. If it does not match, do not open it.
mcpb · levelio-mcp.mcpb
Download bundleCheck the download matches the SHA-256 the MCP registry declares before you open it. If it does not match, do not open the file.
SHA-256
38ff219e9988c5d82ca7b8b433dab2abf91c5a6f9090968ac4dd02c530930a11
macOS / Linux
echo "38ff219e9988c5d82ca7b8b433dab2abf91c5a6f9090968ac4dd02c530930a11 levelio-mcp.mcpb" | shasum -a 256 -c
Windows (PowerShell)
(Get-FileHash -Algorithm SHA256 .\levelio-mcp.mcpb).Hash -eq "38ff219e9988c5d82ca7b8b433dab2abf91c5a6f9090968ac4dd02c530930a11"
Run it in the folder you saved the bundle to, then open the file with an MCPB-capable host such as Claude Desktop.
What is the Level MCP server?
Level MCP is listed in the public MCP registry as io.github.Servosity/levelio-mcp. Every Level RMM endpoint, plus a local SQLite fleet store and offline cross-entity rollups no Level. This page covers its MCPB bundle (https://github.com/Servosity/msp-skills/releases/download/levelio-v0.1.8/levelio-mcp.mcpb).
Is the Level MCP server safe to use?
Level MCP scores 52 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 Level MCP server expose?
Level MCP exposes 56 tools: alert_recurrence, alert_triage, alerts_list, alerts_resolve_alert, alerts_show, and 51 more. Their descriptions and schemas cost roughly 15,102 tokens of context every time the server is loaded.
What licence is the Level MCP server under?
Level MCP 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.