MCP

MCP tools

The sixty-eight tools of the MCP server, their arguments and the key scope each one needs.

Each tool maps to one endpoint of the API and needs the scope of that endpoint. Answers are the API's JSON; errors keep their code, their details and the request_id, with a hint on what to do next.

Catalogue, no key

ToolArgumentsReturns
list_regionsnoneWhere machines can run.
list_plansregionPlans, resources, hourly and monthly prices.
list_imagesregion, plan, categorySystems and application images; the slug is what create_vm expects.

Account

ToolArgumentsScope
get_accountnonebilling.read

Balance, hourly burn rate and runway, quota, monthly budget.

Machines

ToolArgumentsScope
list_vmsstatus, region, billing, cursor, limitvms.read
get_vmvmvms.read
get_vm_metricsvm, timeframevms.read
estimate_vmplan, region, image, hostname, billing, ssh_keys, options, ipv4, vpc, private_onlyvms.create
create_vmas estimate_vm, plus payment, password_delivery, idempotency_keyvms.create
power_vmvm, type: start, shutdown, reboot, stopvms.action
rename_vmvm, hostnamevms.action
reinstall_vmvm, image, confirm_hostname, ssh_keys, password_deliveryvms.action
destroy_vmvm, confirm_hostname, whenvms.destroy

estimate_vm runs every check of an order and prices it without creating anything. create_vm derives its idempotency key from the order itself: an agent that retries the same call after a timeout gets the first answer back, not a second machine. reinstall_vm and destroy_vm erase the disk and refuse to act unless confirm_hostname is the machine's exact hostname.

Actions

ToolArgumentsScope
get_actionactionvms.read
list_vm_actionsvmvms.read

Creation, reinstall and power changes run in the background and return an action: poll get_action until its status leaves running. A new machine is ready in under two minutes.

Network and SSH keys

ToolArgumentsScope
get_vm_networkvmvms.read
set_reverse_dnsvm, address, hostname (null clears)network.write
list_ssh_keysnonesshkeys.write or vms.read
add_ssh_keyname, public_keysshkeys.write
delete_ssh_keykeysshkeys.write

Private networks

ToolArgumentsScope
list_vpcsnonevms.read
get_vpcvpcvms.read
create_vpcname, cidr, regionnetwork.write
delete_vpcvpcnetwork.write
connect_vpcvpc, vm, ipnetwork.write
disconnect_vpcvpc, vmnetwork.write
move_vpcvpc, vm, tonetwork.write

A private network links your machines through a second card, isolated from other customers and outside the counted bandwidth. connect_vpc connects a running machine without a restart; create_vm takes vpc, and private_only for a machine with no public address at all. See Private networks.

Firewalls

ToolArgumentsScope
list_firewallsnonevms.read
get_firewallfirewallvms.read
create_firewallname, rulesnetwork.write
update_firewallfirewall, name, rules (replaces the list)network.write
delete_firewallfirewallnetwork.write
attach_firewallfirewall, vmnetwork.write
detach_firewallfirewall, vmnetwork.write

A firewall is a reusable set of rules: a machine with at least one refuses inbound traffic no rule opens, a machine without any accepts everything. A rule with direction: out restricts what goes out (DNS stays allowed). update_firewall replaces the whole rule list, so an agent reads get_firewall first and keeps TCP 22 open, or it loses SSH to the machine. See Firewalls.

Load balancers

ToolArgumentsScope
list_load_balancersnonevms.read
get_load_balancerlbvms.read
get_load_balancer_metricslb, rangevms.read
create_load_balancername, vpcvms.create
delete_load_balancerlbvms.destroy
upsert_poollb, pool (to update), name, protocol, health checknetwork.write
delete_poollb, poolnetwork.write
set_targetslb, pool, targets (replaces the list)network.write
upsert_listenerlb, listener (to update), port, protocol, default_pool, sourcesnetwork.write
delete_listenerlb, listenernetwork.write
set_ruleslb, listener, rules (replaces the list)network.write

An agent builds a load balancer in order: create_load_balancer, a pool, set_targets, a listener, then set_rules to route by hostname or path. It is billed by the hour, so the agent shows the price first. An HTTPS hostname only gets its certificate once its DNS points to the load balancer: the agent tells the user which records to create. See Load balancers.

Databases

ToolArgumentsScope
list_databasesnonevms.read
get_database_optionsnonevms.read
get_databasedatabasevms.read
get_database_metricsdatabase, rangevms.read
get_slow_queriesdatabasevms.read
list_database_backupsdatabasevms.read
get_database_credentialsdatabasedatabases.write
create_databasename, vpc, engine, version, size_gbvms.create
restore_databasedatabase, at, namevms.create
fork_databasedatabase, namevms.create
detach_database_forkdatabasevms.action
resize_databasedatabase, size_gbvms.create
delete_databasedatabase, confirm_namevms.destroy
update_databasedatabase, name, maintenance window, disk_cap_gb, eviction_policy (Valkey)databases.write
set_database_public_accessdatabase, enabled, sourcesnetwork.write
backup_databasedatabasebackups.write
create_database_userdatabase, username, databases, read_onlydatabases.write
set_database_user_accessdatabase, username, databases, read_onlydatabases.write
reset_database_passworddatabase, usernamedatabases.write
delete_database_userdatabase, usernamedatabases.write
create_logical_databasedatabase, namedatabases.write
delete_logical_databasedatabase, namedatabases.write
enable_extensiondatabase, name, extensiondatabases.write
disable_extensiondatabase, name, extensiondatabases.write

Managed databases (PostgreSQL, MySQL, MariaDB and Valkey) are in beta, open to every account. The agent shows the price (get_database_options) before create_database, and asks the user before delete_database, which wants the exact name back. Passwords only come from get_database_credentials and create_database_user: the agent hands them to the application through an environment variable or a secret store, never into code or logs. Each application gets its own user, limited to its logical database (databases, and read_only for one that only reads); set_database_user_access changes that later and closes the user's connections where its access goes down. restore_database and fork_database create a new database and overwrite nothing. Before resize_database, the agent states the new price and the minute or two of downtime: there is no way back to a smaller size. See Databases.

GitHub runners

ToolArgumentsScope
get_runnersnonebilling.read
list_runner_jobsrepository, status, limit, cursorbilling.read

GitHub Actions runners are in beta, open to every account. Linking a GitHub organization or account goes through GitHub in a browser, in the console, so there is no tool for it: the agent reads the labels and prices, and follows jobs, including why one waits (credit, budget, vCPU cap) or was refused. See GitHub Actions runners.

What the MCP server does not do

Restoring or deleting a machine backup, opening a console session and adding IPv6 addresses stay in the API and the console: they are rare, and a mistake there is expensive. Invoices, payment methods and tickets are reachable by no key at all.

API keys and OIDC bindings are managed in the console only: neither a key nor a token can create one or widen its scopes.

Support & discussions

Technical questions, incident reports, or infrastructure discussions, the team is reachable on Discord, Telegram, X, Instagram, Reddit, and IRC.