Krova Cloud integration
Krova Cloud runs Cubes, small Linux virtual machines (Firecracker microVMs) billed by the minute. Create, start, power off, restart and delete Cubes, read their SSH connection details, attach custom domains and check their DNS records, publish TCP ports, take and restore snapshots, list, download and share backups, and manage webhook endpoints. Every call except the region, image and pricing reads is scoped to one Space: call get_space first to read its id. The CLI device-login routes and the .cube archive import (a browser-side multipart upload) are not exposed. Authentication is a Space API key (kro_...) sent in the X-API-KEY header, created in the dashboard under Settings, API keys.
Say what should happen.
The workflow builds itself.
What you can do with Krova Cloud
Each of these is one operation on one endpoint, available both as a workflow step and as a tool an AI agent can call on its own. Nothing bundles several operations into one action, so what a run did stays readable afterwards.
Each badge shows the default agent permission of an endpoint (allowed: an agent calls it without asking; ask first: you are asked before an agent calls it, when the agent or chat asks permission for sensitive actions; never: no agent may call it), which every user can change endpoint by endpoint in their credential settings.
Most endpoints run on the free plan. A few, mainly the ones that publish on your behalf, need a paid plan.
Cube, 8 operations
create_cubeCreate cubePOSTAgents: ask firstCreates and boots a new Cube, which starts billing per minute from the Space's prepaid credit until it is deleted (disk keeps billing while it is powered off). Smallest size: 1 vCPU, 1 GB RAM, 10 GB disk.delete_cubeDelete cubeDELETEAgents: ask firstPermanently deletes a Cube and its disk (asynchronous); this cannot be undone through this API. Refused with 409 while termination protection is on. Billing for the Cube stops.get_cubeGet cubeGETAgents: ask firstReturns one Cube: state, public IPv4 if any, size (vcpu, ramGb, diskGb), image, login user, hourly cost, the host server's name, termination protection and timestamps.list_cubesList cubesGETAgents: ask firstLists the Cubes in the Space with their state (pending, booting, running, stopped, stopping, resizing, error, deleted), size, image, login user, hourly cost and termination protection, plus pagination totals.power_off_cubePower off cubePOSTAgents: ask firstPowers off a running Cube (enqueued, asynchronous): compute billing stops, the disk is kept and still billed. Start it again with start_cube. Answers with no body; read get_cube for the new state.restart_cubeRestart cubePOSTAgents: ask firstCold-restarts a running Cube so it boots on the host's current kernel; the disk is kept. Refused with 409 when the Cube is not running or a restart is already in progress. Answers with no body.restore_cube_snapshotRestore cube snapshotPOSTAgents: ask firstRestores a Cube from one of its snapshots: the Cube's current disk is replaced by the snapshot's, and changes made since are lost. Not blocked by termination protection.start_cubeStart cubePOSTAgents: ask firstStarts a stopped Cube (enqueued, asynchronous); compute billing resumes. Answers with no body; read get_cube until its state is running.
Backup share, 4 operations
accept_backup_shareAccept backup sharePOSTAgents: ask firstAccepts a backup offered to this Space: creates this Space's own copy, billed for storage from now. Needs the owner's key or backup.manage. Refused with 422 when the Space cannot take it (no card, no credit, no allowance).cancel_backup_shareCancel backup sharePOSTAgents: ask firstWithdraws a pending backup share this Space offered to another Space. Allowed for the owner, a member with backup.manage, or the member who raised it. Refused with 409 when the share is no longer pending.decline_backup_shareDecline backup sharePOSTAgents: ask firstDeclines a backup share offered to this Space; nothing is copied. Needs the owner's key or a member with backup.manage. Refused with 409 when the share is no longer pending.list_backup_sharesList backup sharesGETAgents: ask firstLists the pending backup shares of this Space: incoming offers it can accept or decline, and outgoing offers it made, each with status, backup, the other Space and expiry.
Domain, 4 operations
attach_domainAttach domainPOSTAgents: ask firstAttaches a custom domain (or a wildcard *.example.com) to a Cube port, served over automatic HTTPS. Returns the domain and the DNS records to publish; then poll get_domain_dns_records until summary.complete is true.detach_domainDetach domainDELETEAgents: ask firstDetaches a custom domain from a Cube; the domain stops serving the app immediately. Refused with 409 when the change conflicts with the Cube's current state.list_cube_domainsList cube domainsGETAgents: ask firstLists the custom domains attached to a Cube with the Cube port each proxies to, status, edge settings (security headers, CORS, IP allow and deny lists, Basic Auth user, origin scheme, PROXY protocol) and wildcard certificate state.update_domainUpdate domainPATCHAgents: ask firstChanges a custom domain's edge settings; only the fields you send change, leave the others out to keep them. Returns the updated domain. Clearing a setting back to unset (no body limit, CORS off, PROXY protocol off) is not exposed.
Webhook, 4 operations
create_webhookCreate webhookPOSTAgents: ask firstCreates a webhook endpoint that Krova POSTs signed events to (X-Krova-Signature, HMAC-SHA256). The signing secret, shown only once, is withheld here, so its deliveries cannot be verified: use the Krova CLI when you must.delete_webhookDelete webhookDELETEAgents: ask firstDeletes a webhook endpoint and its delivery history; events stop being sent to its URL.get_webhookGet webhookGETAgents: ask firstReturns one webhook endpoint: URL, subscribed events, description, whether enabled, and timestamps. The signing secret is not returned.list_webhooksList webhooksGETAgents: ask firstLists the Space's webhook endpoints: id, URL, subscribed events, whether enabled, and timestamps. Signing secrets are never listed.
Backup, 3 operations
get_backupGet backupGETAgents: ask firstReturns one backup: status, original Cube id and name, size, the captured configuration (vCPUs, RAM, disk, image, region, domains, TCP ports), the source backup of a shared copy and timestamps.list_backupsList backupsGETAgents: ask firstLists the Space's backups, newest first, including copies shared from other Spaces: status (pending, creating, complete, failed), the original Cube, size, the captured configuration and any redeployed Cube.share_backupShare backupPOSTAgents: ask firstOffers a copy of a backup to another Space, as a pending request its owner (or a member with backup.manage) accepts within 48 hours; the receiving Space then pays storage for its copy. Needs backup.manage.
Snapshot, 3 operations
create_snapshotCreate snapshotPOSTAgents: ask firstTakes a manual snapshot of a Cube while it keeps running; counts against the tier's manual-snapshot cap. Returns the snapshot.delete_snapshotDelete snapshotDELETEAgents: ask firstPermanently deletes a manual snapshot of a Cube. Automatic snapshots are system-managed and cannot be deleted by hand.list_snapshotsList snapshotsGETAgents: ask firstLists a Cube's snapshots (automatic and manual): id, name, size in bytes, status, kind and creation time. Pass an id to restore_cube_snapshot.
Tcp mapping, 3 operations
create_tcp_mappingCreate tcp mappingPOSTAgents: ask firstPublishes a Cube port on the internet through a host port Krova allocates; returns the host and hostPort to connect to. Without whitelistedIps the port is open to everyone. Refused with 409 when the port is already in use.delete_tcp_mappingDelete tcp mappingDELETEAgents: ask firstRemoves a published TCP port from a Cube; the host port stops accepting connections. Refused with 409 when the change conflicts with the Cube's current state.list_tcp_mappingsList tcp mappingsGETAgents: ask firstLists a Cube's published TCP ports: the Cube port, the host and host port to connect to, label, whether UDP is forwarded too, whether it is the platform SSH mapping, and the allowed IPs.
Backup download url, 1 operation
get_backup_download_urlGet backup download urlGETAgents: ask firstCreates a fresh time-limited download link for a complete backup's .cube archive: url, filename, sizeBytes and expiresAt. Refused with 409 when the backup is not complete. Each call returns a new link.
Cube ssh info, 1 operation
get_cube_ssh_infoGet cube ssh infoGETAgents: ask firstReturns how to SSH into a Cube: host (the server's public IPv4), host port, the login user (ubuntu, debian or root: use it, do not assume one) and the Cube's SSH host public keys (empty until first captured).
Cube ssh port, 1 operation
update_cube_ssh_portUpdate cube ssh portPUTAgents: ask firstChanges the port INSIDE the Cube that SSH is forwarded to (default 22); the host port you connect to stays the same. Pointing it at a port nothing listens on makes SSH unreachable. Answers with no body.
Cube termination protection, 1 operation
set_cube_termination_protectionSet cube termination protectionPATCHAgents: ask firstTurns termination protection on or off for a Cube (the only field this tool changes). While on, delete_cube is refused with 409; power off, restart, restore and snapshots still work. Returns the updated Cube.
Domain dns record, 1 operation
get_domain_dns_recordsGet domain dns recordsGETAgents: ask firstLists every DNS record a domain needs, each checked live: state found, missing (not published yet), mismatch (something else is there) or unknown (could not check). summary.complete is true when all are found. Rate limited.
Image, 1 operation
list_imagesList imagesGETAgents: ask firstLists the OS images a Cube can be created from (Ubuntu 24.04, Debian 13, each also with Docker preinstalled): image id (pass it as image to create_cube), name, version and the default login user.
Pricing, 1 operation
get_pricingGet pricingGETAgents: ask firstReturns Krova's public price list: hourly USD rates per vCPU, per GB of RAM and per GB of disk, and the volume tiers whose multiplier applies to all rates by vCPU count. Billing is per minute.
Region, 1 operation
list_regionsList regionsGETAgents: ask firstLists the regions that currently have capacity for new Cubes, each with its id, name and slug (pass the slug as region to create_cube). Public catalog data, no personal data.
Space, 1 operation
get_spaceGet spaceGETAgents: ask firstReturns the one Space this API key belongs to: its id (the spaceId every other tool needs), name, tier and creation date. Call it first.
Webhook delivery, 1 operation
list_webhook_deliveriesList webhook deliveriesGETAgents: ask firstLists a webhook endpoint's delivery attempts from the last 30 days (at most 100): event, status (pending, delivered, failed), attempts, last attempt time and the receiver's HTTP status.
Use Krova Cloud from Claude Code, Cursor or Codex
Connect Krova Cloud in LiveContext, create an API key in Settings, then add the LiveContext MCP server to your client. Its Krova Cloud operations become tools the client can call, next to every other integration you connected.
claude mcp add --transport http livecontext https://livecontext.ai/mcp --header "X-API-Key: YOUR_API_KEY"[mcp_servers.livecontext]
url = "https://livecontext.ai/mcp"
[mcp_servers.livecontext.http_headers]
"X-API-Key" = "YOUR_API_KEY"{
"mcpServers": {
"livecontext": {
"type": "http",
"url": "https://livecontext.ai/mcp",
"headers": {
"X-API-Key": "YOUR_API_KEY"
}
}
}
}How to connect Krova Cloud
- Create your workspace
Sign up free. Nothing to install.
- Connect Krova Cloud once
Add your Krova Cloud connection in Settings. Every tool from this integration reuses it, and secrets are encrypted at rest and visible only to you.
- Describe the job in chat
The workflow builds itself in front of you and picks the endpoints it needs. Drag the steps yourself on the canvas whenever you would rather be explicit.
Krova Cloud integration FAQ
What can you do with the Krova Cloud integration?
LiveContext exposes 39 operations on Krova Cloud, covering cube, backup share, domain and webhook.
