Best for
- Use cove-cli when a task touches N-able Cove Data Protection fleet state: which backups failed or went stale, per-customer health rollups, storage growth, month-end SKU/seat billing, partner/device/user/audit enumeratio…
Servosity/msp-skills/skills/cove/SKILL.md
The first CLI and MCP server for Cove Data Protection - fleet-wide backup health, billing usage, and storage trends from a terminal, with the local history the vendor console doesn't keep. Trigger phrases: `which backups failed last night`, `check cove backup status`, `stale cove devices`, `cove storage growth`, `cove billing usage report`, `use cove`, `run cove-cli`.
Decision brief
The first CLI and MCP server for Cove Data Protection - fleet-wide backup health, billing usage, and storage trends from a terminal, with the local history the vendor console doesn't keep. Trigger phrases: `which backups failed last night`, `check cove backup status`, `stale cove devices`, `cove storage growth`, `cove billing usage report`, `use cove`, `run…
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/Servosity/msp-skills --skill "skills/cove"Inspect the Agent Skill "cove" from https://github.com/Servosity/msp-skills/blob/30e109db0872897de0b88adb38d81d4c292da3ae/skills/cove/SKILL.md at commit 30e109db0872897de0b88adb38d81d4c292da3ae. 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
Cove's JSON-RPC API authenticates with a partner-scoped login, not a bearer token or API key. Create a dedicated API User in the Cove Management Console (Users API Users); it issues a login name and an API token (shown only once). Set COVEUSERNAME to the API user's login name, C…
This skill drives the cove-cli binary. You must verify the CLI is installed before invoking any command from this skill. If it is missing, install it first:
Use cove-cli when a task touches N-able Cove Data Protection fleet state: which backups failed or went stale, per-customer health rollups, storage growth, month-end SKU/seat billing, partner/device/user/audit enumeration, or any of the 251 JSON-RPC methods via call. It is the ri…
Do not use this CLI for: - Restoring files or browsing backed-up data - restores run through the Backup Manager client or console, and per-device session detail lives on storage-node Reporting Service endpoints this CLI does not cover - Installing or controlling the Backup Manag…
These capabilities aren't available in any other tool for this API.
Permission review
The documentation asks the agent to run terminal commands or scripts.
npx -y @mvanhorn/printing-press-library install cove --cli-onlyThe documentation asks the agent to run terminal commands or scripts.
go install github.com/mvanhorn/printing-press-library/library/monitoring/cove/cmd/cove-cli@latestThe documentation includes sending, uploading, or posting data to a remote service.
| `webhook:<url>` | POST the output body to the URL (`application/json` or `application/x-ndjson` when `--compact`) |The documentation includes network, browsing, or remote request actions.
| `webhook:<url>` | POST the output body to the URL (`application/json` or `application/x-ndjson` when `--compact`) |Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 83/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 15 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
This skill drives the cove-cli binary. You must verify the CLI is installed before invoking any command from this skill. If it is missing, install it first:
$HOME/.local/bin on macOS/Linux and %LOCALAPPDATA%\Programs\PrintingPress\bin on Windows:
npx -y @mvanhorn/printing-press-library install cove --cli-only
cove-cli --version$PATH for the agent/runtime that will invoke this skill.If the npx install fails (no Node, offline, etc.), fall back to a direct Go install (requires Go 1.26.4 or newer). This installs into $GOPATH/bin (default $HOME/go/bin), so add that directory to $PATH instead:
go install github.com/mvanhorn/printing-press-library/library/monitoring/cove/cmd/cove-cli@latest
If --version reports "command not found" after install, the runtime cannot see the binary directory on $PATH. Do not proceed with skill commands until verification succeeds.
Cove's console scopes to one customer at a time and forgets yesterday. cove-cli speaks the whole JSON-RPC API: one command sweeps every partner for failed or stale backups with column codes decoded to human names, snapshot keeps timestamped SQLite history so storage growth and devices changes can answer trend questions nothing else can, and call reaches all 251 documented methods.
Use cove-cli when a task touches N-able Cove Data Protection fleet state: which backups failed or went stale, per-customer health rollups, storage growth, month-end SKU/seat billing, partner/device/user/audit enumeration, or any of the 251 JSON-RPC methods via call. It is the right tool for cross-customer questions the backup.management console can only answer one partner at a time, and for trend questions that need the local snapshot history.
Do not use this CLI for:
These capabilities aren't available in any other tool for this API.
storage growth - See which devices and customers are growing their backup storage fastest, from timestamped local snapshots.
Reach for this when capacity planning or quota questions need a trend, not a point-in-time number.
cove-cli storage growth --since 7d --agent
devices changes - Devices whose backup status flipped between the two latest snapshots - regressions and recoveries without re-sweeping the fleet.
Answers 'what broke since last week' and 'did Friday's failures clear' in one command.
cove-cli devices changes --since 7d --json
devices failures - Every device across all customers whose last backup session failed, aborted, errored, or never started - decoded to status names.
The MSP morning ritual: run this first to build the day's ticket queue.
cove-cli devices failures --since 24h --agent
devices stale - Devices with no successful backup in N days, ranked by staleness and grouped by customer.
Catches silent gaps: a device can report a fine last status while not having succeeded for days.
cove-cli devices stale --days 3 --json
fleet health - One-screen rollup: total devices, healthy, failed, stale, never-run - with a per-customer breakdown.
The at-a-glance number for standups and QBR prep.
cove-cli fleet health --by partner --json
billing usage - Per-device SKU, used storage, and M365 seat counts with column codes decoded - the month-end billing export in one command.
Turns Cove usage into invoice lines without the column-code legend open in another tab.
cove-cli billing usage --csv
billing changes - Devices whose plan changed since last month - current SKU vs Cove's built-in previous-month SKU column.
Run at month-end to catch upgrades, downgrades, and seat changes that affect invoices.
cove-cli billing changes --json
audit - Management console audit trail
cove-cli audit - Enumerate audit actions in a time range (JSON-RPC EnumerateAuditActions)backup-jobs - Backup/restore jobs
cove-cli backup-jobs - Enumerate jobs for a partner (JSON-RPC EnumerateJobs)columns - Statistics column metadata (pairs with the README column-code legend)
cove-cli columns - Enumerate custom statistic columns visible to a partner (JSON-RPC EnumerateColumns)devices - Backup devices (accounts) and their column-coded statistics
cove-cli devices get - Get one device by id (JSON-RPC GetAccountInfoById)cove-cli devices list - Enumerate backup devices for a partner (JSON-RPC EnumerateAccounts)cove-cli devices stats - Query device statistics by column codes (JSON-RPC EnumerateAccountStatistics; see README column-code legend)labels - Device labels
cove-cli labels - Enumerate all device labels (JSON-RPC EnumerateAllLabels)locations - Data-center locations
cove-cli locations - Enumerate data-center locations (JSON-RPC EnumerateLocations)partners - Customers and resellers in the partner hierarchy
cove-cli partners get - Get one partner by id (JSON-RPC GetPartnerInfoById)cove-cli partners list - Enumerate partners under a parent (JSON-RPC EnumeratePartners)products - Backup products available to a partner
cove-cli products - Enumerate products (JSON-RPC EnumerateProducts)server - Management service metadata
cove-cli server - Get management server info (JSON-RPC GetServerInfo)storage - Storage pools, statistics, and nodes
cove-cli storage list - Enumerate storage pools for a partner (JSON-RPC EnumerateStorages)cove-cli storage nodes - Enumerate all storage nodes (JSON-RPC EnumerateAllStorageNodes)cove-cli storage stats - Storage usage statistics per location (JSON-RPC EnumerateStorageStatistics)users - Console users
cove-cli users - Enumerate users for partners (JSON-RPC EnumerateUsers)When you know what you want to do but not which command does it, ask the CLI directly:
cove-cli which "<capability in your own words>"
which resolves a natural-language capability query to the best matching command from this CLI's curated feature index. Exit code 0 means at least one match; exit code 2 means no confident match - fall back to --help or use a narrower query.
cove-cli devices failures --since 24h --agent --select items.device_name,items.customer,items.status_name
Cross-customer failed/aborted/not-started list narrowed to the three fields a triage ticket needs.
cove-cli devices stale --days 3 --json
Devices with no successful session in 3 days, ranked worst-first - catches gaps the last-status view hides.
cove-cli billing usage --csv
Per-device SKU, used storage, and M365 seats as CSV for the invoice model.
cove-cli devices changes --since 7d --json
After two cove-cli snapshot runs some time apart: regressions and recoveries between them.
cove-cli call GetServerInfo --json
Generic escape hatch with automatic visa injection and typed vendor error mapping.
Cove's JSON-RPC API authenticates with a partner-scoped login, not a bearer token or API key. Create a dedicated API User in the Cove Management Console (Users > API Users); it issues a login name and an API token (shown only once). Set COVE_USERNAME to the API user's login name, COVE_PASSWORD to the API token, and COVE_PARTNER to the customer/partner the API user was created for - for an API User COVE_PARTNER is required, not optional, and an empty partner is the usual cause of a 2100 "Unknown partner/username" error. COVE_PARTNER must be the full customer/partner string exactly as shown in the Cove console customer dropdown - usually including the account email in parentheses, e.g. Acme Corp (admin@acme.com), not just the company name; Cove returns the same 2100 "Unknown partner/username or bad password" error for a wrong COVE_PARTNER format as for a bad password. The API token is the password; it is not itself a visa and is never sent as a header (passing it to --visa fails by design). N-able removed the older per-user "API access" checkbox, and API Users cannot sign in to the console. Run cove-cli auth login once: it calls the Login method with these three values, receives a session token (the "visa"), and caches it locally with auto-refresh on expiry. Hand-built commands (failures, stale, health, billing, snapshot, call) inject the visa automatically. The raw generated endpoint commands (partners/devices/storage list·get, promoted *) do not auto-inject it: pass --visa "$(cove-cli auth token)", or prefer cove-cli call <Method>, which injects the visa for you.
Run cove-cli doctor to verify setup.
Add --agent to any command. Expands to: --json --compact --no-input --no-color --yes.
Pipeable - JSON on stdout, errors on stderr
Filterable - --select keeps a subset of fields. Dotted paths descend into nested structures; arrays traverse element-wise. Critical for keeping context small on verbose APIs:
cove-cli audit --agent --select id,name,status
Previewable - --dry-run shows the request without sending
Offline-friendly - sync/search commands can use the local SQLite store when available
Non-interactive - never prompts, every input is a flag
Explicit retries - use --idempotent only when an already-existing create should count as success
Commands that read from the local store or the API wrap output in a provenance envelope:
{
"meta": {"source": "live" | "local", "synced_at": "...", "reason": "..."},
"results": <data>
}
Parse .results for data and .meta.source to know whether it's live or local. A human-readable N results (live) summary is printed to stderr only when stdout is a terminal AND no machine-format flag (--json, --csv, --compact, --quiet, --plain, --select) is set - piped/agent consumers and explicit-format runs get pure JSON on stdout.
When you (or the agent) notice something off about this CLI, record it:
cove-cli feedback "the --since flag is inclusive but docs say exclusive"
cove-cli feedback --stdin < notes.txt
cove-cli feedback list --json --limit 10
Entries are stored locally at ~/.local/share/cove-cli/feedback.jsonl. They are never POSTed unless COVE_FEEDBACK_ENDPOINT is set AND either --send is passed or COVE_FEEDBACK_AUTO_SEND=true. Default behavior is local-only.
Write what surprised you, not a bug report. Short, specific, one line: that is the part that compounds.
Every command accepts --deliver <sink>. The output goes to the named sink in addition to (or instead of) stdout, so agents can route command results without hand-piping. Three sinks are supported:
| Sink | Effect |
|---|---|
stdout | Default; write to stdout only |
file:<path> | Atomically write output to <path> (tmp + rename) |
webhook:<url> | POST the output body to the URL (application/json or application/x-ndjson when --compact) |
Unknown schemes are refused with a structured error naming the supported set. Webhook failures return non-zero and log the URL + HTTP status on stderr.
A profile is a saved set of flag values, reused across invocations. Use it when a scheduled agent calls the same command every run with the same configuration - HeyGen's "Beacon" pattern.
cove-cli profile save briefing --json
cove-cli --profile briefing audit
cove-cli profile list --json
cove-cli profile show briefing
cove-cli profile delete briefing --yes
Explicit flags always win over profile values; profile values win over defaults. agent-context lists all available profiles under available_profiles so introspecting agents discover them at runtime.
| Code | Meaning |
|---|---|
| 0 | Success |
| 2 | Usage error (wrong arguments) |
| 3 | Resource not found |
| 5 | API error (upstream issue) |
| 7 | Rate limited (wait and retry) |
| 10 | Config error |
Parse $ARGUMENTS:
help, or --help → show cove-cli --help outputinstall → ends with mcp → MCP installation; otherwise → see Prerequisites above--agent)go install github.com/mvanhorn/printing-press-library/library/monitoring/cove/cmd/cove-mcp@latest
claude mcp add cove-mcp -- cove-mcp
claude mcp listwhich cove-cli
If not found, offer to install (see Prerequisites at the top of this skill).--agent flag:
cove-cli <command> [subcommand] [args] --agent
cove-cli <command> --help.Alternatives
coreyhaines31/marketingskills
When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "should I test this," "which version is better," "test two versions," "statistical significance," "how long should I run this test," "growth experiments," "experiment velocity," "experiment backlog," "ICE score," "experimentation program
coreyhaines31/marketingskills
When the user wants to reduce churn, build cancellation flows, set up save offers, recover failed payments, or implement retention strategies. Also use when the user mentions 'churn,' 'cancel flow,' 'offboarding,' 'save offer,' 'dunning,' 'failed payment recovery,' 'win-back,' 'retention,' 'exit survey,' 'pause subscription,' 'involuntary churn,' 'people keep canceling,' 'churn rate is too high,' 'how do I keep users,' or 'customers are leaving.' Use this whenever someone is losing subscribers o
event4u-app/agent-config
Use when the user says "review the design", "check the UI", or wants a comprehensive UI/UX review. Uses a 7-phase methodology covering interaction, responsiveness, accessibility, and more.
K-Dense-AI/scientific-agent-skills
Distributed computing for larger-than-RAM pandas/NumPy workflows. Use when you need to scale existing pandas/NumPy code beyond memory or across clusters. Best for parallel file processing, distributed ML, integration with existing pandas code. For out-of-core analytics on single machine use vaex; for in-memory speed use polars.