CaryvaneHelp
/

AI assistants & API

Caryvane exposes an MCP server and a matching REST API, authenticated by personal access keys. An assistant with a key can answer "which backups failed last night?", run a job, enrol a machine, or set up a customer's storage — bounded by the key's tier and by what the user who issued it is allowed to see.

Create a key #

  1. Console → your name (top right) → AI access keys → New Key. Give it a name you will recognise when revoking it.
  2. Choose the tier. Least privilege that does the job — a key for a reporting assistant should be Read only.
  3. Copy the key. It is shown once, at creation, and never again. Revoke and reissue if it is lost.
TierAllows
Read onlyDashboard, jobs, run history and logs, agents and their logs, storage targets and browsing them (names and dates — never file contents), customers, enrolment tokens, cloud fleet status.
Read + controlRead, plus start and cancel runs.
Read + control + editPlus create and edit jobs, change agent settings, mount and unmount cloud drives, revoke enrolment tokens, create Microsoft 365 / Google archives, set an agent's Hyper-V incremental mode.
Full accessPlus delete jobs, create storage targets, create enrolment tokens.

A key sees exactly what its owner sees: an MSP admin's key sees that MSP's customers, a customer user's key sees one customer. Every action a key takes is written to the audit log under the owner's name. Keys are revoked from the same dialog and stop working at once.

Treat a key like a password

Anyone holding a Full-access key can enrol machines into your customers and point backups at their own storage. Keep keys in the assistant's own secret store, never in a shared document.

Connect Claude #

The MCP server is a single HTTP endpoint, https://console.caryvane.com/mcp/rpc, with the key as a bearer token. In Claude Code, add to .mcp.json in the project (or ~/.claude.json for every project):

{
  "mcpServers": {
    "caryvane": {
      "type": "http",
      "url": "https://console.caryvane.com/mcp/rpc",
      "headers": { "Authorization": "Bearer <key>" }
    }
  }
}

Or from the terminal: claude mcp add --transport http caryvane https://console.caryvane.com/mcp/rpc --header "Authorization: Bearer <key>". Claude Desktop and claude.ai take the same URL and header under Settings → Connectors → Add custom connector. After connecting, ask it to list the tools; the description of each is written for the assistant, so it knows to check list_agents before create_job.

Connect VS Code (Copilot agent mode) #

Add to .vscode/mcp.json (VS Code prompts for the key once and stores it in its secret storage):

{
  "inputs": [
    { "id": "caryvane-key", "type": "promptString", "password": true, "description": "Caryvane access key" }
  ],
  "servers": {
    "caryvane": {
      "type": "http",
      "url": "https://console.caryvane.com/mcp/rpc",
      "headers": { "Authorization": "Bearer ${input:caryvane-key}" }
    }
  }
}

The tools #

Names are the same in MCP and in the REST API below. Tier is the minimum key tier.

ToolTierWhat it does
get_dashboardReadThe console's front page as numbers: agents online, jobs, last 24 h outcomes.
list_jobs, get_jobReadJobs, with search and paging; one job in full.
get_job_runsReadRun history for a job: status, timings, bytes, the run log, failed files.
list_agents, get_agentReadMachines with online state, version, customer, last check-in.
get_agent_logsReadThe agent's own application log as shipped to the console; filter by level or text.
list_storage_targetsReadDestinations with provider and last test result.
browse_storage_targetReadFolder listing of a target — names, sizes, dates. Never file contents.
list_cloud_drivesReadDrives mounted on an agent.
list_vss_instancesReadWhat a Windows agent can back up application-consistently: Hyper-V VMs, SQL databases, AD. Live from the machine.
list_customersReadThe customers the key's owner can see.
list_enrollment_tokensReadActive deployment tokens.
get_cloud_fleet, get_cloud_worker_jobsReadCloud Agent workers and what they are running.
run_job, cancel_jobControlStart a run now; cancel the running one.
create_job, update_jobWriteEvery option the wizard has: files, storage-to-storage, connector, app-consistent, cloud or agent, schedule, retention.
update_agent_settingsWriteFriendly name, concurrent-job limit, upload cap.
set_hyperv_rct_modeWriteOff / Diag / Compose for Hyper-V changed-block incrementals on one agent.
mount_cloud_drive, unmount_cloud_driveWriteAdd or remove a drive on an agent.
create_office365_archive, create_google_workspace_archiveWriteA one-off archive of a person's mailbox and drive — the leaver workflow.
revoke_enrollment_tokenWriteKill a token early.
create_enrollment_tokenAdminA deployment token for a customer, with the ready-to-run install command.
create_storage_targetAdminA new destination with its credentials.
delete_jobAdminRemove a job and its history.
Resellers

When the key's owner can see several customers, tools that create things take a customer: create_job infers it from the agent, or needs customerTenantId for a Cloud Agent job; create_enrollment_token takes tenantId. Nothing can be created across a customer boundary — a job cannot read one customer's storage and write another's.

The REST API #

The same operations as plain JSON over HTTPS, for scripts, RMM integrations and any assistant that speaks HTTP rather than MCP. Same key, same header: Authorization: Bearer <key>. Responses are JSON; errors are standard status codes with a message.

curl -s https://console.caryvane.com/mcp/jobs?take=50 \
  -H "Authorization: Bearer <key>"

curl -s -X POST https://console.caryvane.com/mcp/jobs/14/run \
  -H "Authorization: Bearer <key>"
Method and pathTool
GET /mcp/dashboardget_dashboard
GET /mcp/jobs, GET /mcp/jobs/{id}, GET /mcp/jobs/{id}/runslist_jobs, get_job, get_job_runs
POST /mcp/jobs, POST /mcp/jobs/{id}/update, POST /mcp/jobs/{id}/deletecreate_job, update_job, delete_job
POST /mcp/jobs/{id}/run, POST /mcp/jobs/{id}/cancelrun_job, cancel_job
GET /mcp/agents, GET /mcp/agents/{id}, GET /mcp/agents/{id}/logslist_agents, get_agent, get_agent_logs
POST /mcp/agents/{id}/settingsupdate_agent_settings
GET /mcp/agents/{id}/mounts, POST /mcp/agents/{id}/mounts, POST /mcp/agents/{id}/mounts/{mountId}/deletelist_cloud_drives, mount_cloud_drive, unmount_cloud_drive
GET /mcp/agents/{id}/vss-instanceslist_vss_instances
GET /mcp/storage-targets, POST /mcp/storage-targets, GET /mcp/storage-targets/{id}/browselist_storage_targets, create_storage_target, browse_storage_target
GET /mcp/customerslist_customers
GET /mcp/enrollment-tokens, POST /mcp/enrollment-tokens, POST /mcp/enrollment-tokens/{id}/revokelist_enrollment_tokens, create_enrollment_token, revoke_enrollment_token
POST /mcp/office365/archives, POST /mcp/google-workspace/archivescreate_office365_archive, create_google_workspace_archive

Parameters are the tool's arguments as JSON in the body (POST) or the query string (GET). The MCP tool descriptions, which the assistant sees, are the authoritative field reference; an OpenAPI document for building a ChatGPT Custom GPT Action is on the list but not published yet.

What an assistant cannot do #

By design there is no tool that downloads a file's contents, deletes files from storage, or moves them. Browsing returns metadata only. Restores are done by people in the console. The one operation that removes data — an Archiving job with source removal switched on — is created like any other job, with the gate off unless explicitly set, and every file it removes is recorded in the catalogue first.