Skip to main content
Glama
piyushladhar

iotamine-mcp

by piyushladhar

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

TableJSON Schema
NameRequiredDescriptionDefault
popYes
ramYes
diskNo
coresYes
confirmNo
ssh_keyNo
hostnameYes
passwordNo
existing_ipNo
disable_pwd_authNo
operating_systemNo
existing_boot_volumeNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.3.0

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, which only state readOnlyHint=false and destructiveHint=false, the description discloses that this call spends real money, requires explicit confirmation, is asynchronous and returns immediately with is_building=true, and that IP charges are monthly while compute charges are hourly. It even warns about the common 720x pricing mistake. This is far more than annotations provide and contains no contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but tightly structured with clear sections for boot disk, IP, cost, and async behavior. Every sentence adds necessary information — the cost formula, the mutual-exclusivity rules, and the confirmation requirement. The most critical warnings (spending money, confirm=true) are front-loaded, and the rest is organized for easy scanning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter tool with no output schema and no schema description coverage, the description is remarkably complete: it covers parameter sources, mutual exclusions, cost calculation, confirmation protocol, and post-call polling behavior. It even explains what the response contains (id, is_building=true). The only gap is the two unmentioned parameters, but the overall guidance leaves an agent fully equipped to call this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description correctly compensates for most parameters: pop, cores, ram, disk, operating_system, existing_boot_volume, existing_ip, ssh_key, and confirm are all explained with sources and constraints. However, it does not describe password or disable_pwd_auth, which are also in the schema and may be relevant to access configuration. Given the very low schema coverage, this small omission keeps it from a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Deploy a new VPS,' a specific verb and resource, and immediately distinguishes this creation action from siblings by emphasizing cost, confirmation, and asynchronous provisioning. It clearly separates create_vps from related tools like purchase_ip, list_regions, and get_vps.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use guidance: it requires confirm=true and must be preceded by telling the user the exact provisioning details and estimated cost. It also spells out the two boot-disk options and two IP options, naming the sibling listing tools (list_regions, list_os_images, list_volumes, list_ip_addresses, list_ssh_keys) and the polling tool (get_vps). This is exemplary usage routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.