create_vps
Deploy a new VPS by specifying cores, RAM, and location, with options for fresh disk or existing boot volume, new or existing IP, and SSH key. Confirmation required before incurring costs.
Instructions
Deploy a new VPS. Spends real money — requires confirm=true, and should only be called after explicitly telling the user what will be provisioned and its estimated cost (see "Cost" below — get this right; it's a common mistake to quote only compute and forget the IP).
pop: a Point of Presence id from list_regions. cores/ram/disk: must match one of the allowed values the real API enforces — see get_quota or just try a value; a rejection names the allowed set.
Boot disk — exactly one of these two:
disk + operating_system: provisions a fresh disk (disk in GB) with a fresh OS install (operating_system an id from list_os_images). Both required together.
existing_boot_volume: boots from a standalone volume this account already owns instead (an id from list_volumes, kind "boot", not already attached to anything — check first). disk/operating_system are ignored if this is given; the volume already has its own OS. Costs nothing extra — the volume's own cost, if any, was already paid when it was purchased.
IP address — one of these two:
Omit existing_ip: a brand-new IP is automatically purchased and assigned as part of deployment. This is NOT free — it's the pop's own ip_price, billed the same as calling purchase_ip separately.
existing_ip: attach a standalone IP this account already owns instead (an id from list_ip_addresses, not already attached to anything — check first). No new IP purchased, no extra cost.
ssh_key: an id from list_ssh_keys, to install onto the new VPS.
Cost: call list_regions first and use the matching pop's own rates. cpu_price/ram_price/disk_price are hourly; ip_price is a MONTHLY figure — divide by 720 (30 * 24) before adding it to an hourly total, or it'll be off by ~720x (a real mistake this tool's docs used to make). Total hourly cost = cores * cpu_price
ram * ram_price + (disk * disk_price, only if provisioning a fresh disk — 0 if existing_boot_volume is given) + (ip_price / 720, only if existing_ip is NOT given — 0 if it is). Quote this full total, not just compute, before asking for confirmation — and say plainly that the IP portion is a recurring monthly charge, not a one-time fee.
Provisioning is asynchronous — this call returns immediately with the new VPS's id and is_building=true; poll get_vps for it to finish.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| pop | Yes | ||
| ram | Yes | ||
| disk | No | ||
| cores | Yes | ||
| confirm | No | ||
| ssh_key | No | ||
| hostname | Yes | ||
| password | No | ||
| existing_ip | No | ||
| disable_pwd_auth | No | ||
| operating_system | No | ||
| existing_boot_volume | No |