iotamine-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| IOTAMINE_API_KEY | Yes | Your Iotamine API key. Required for authentication. Create one from the Iotamine dashboard: https://iotamine.com/control/api_keys | |
| IOTAMINE_API_URL | No | Base URL for the Iotamine REST API. Defaults to https://iotamine.com/api/ | https://iotamine.com/api/ |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_vpsA | List every VPS instance on this Iotamine account — hostname, status, specs (cores/ram/disk/traffic), IP addresses, OS, node location, and machine_status (Running/Stopped/Building/...) for each one. |
| get_vpsA | Get full detail for one VPS instance by its id (a UUID, as returned by list_vps's own "id" field). |
| create_vpsA | 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:
IP address — one of these two:
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 hourly rates. 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, only if existing_ip is NOT given — 0 if it is). Quote this full total, not just compute, before asking for confirmation. Provisioning is asynchronous — this call returns immediately with the new VPS's id and is_building=true; poll get_vps for it to finish. |
| destroy_vpsA | Permanently destroy a VPS and, by default, its boot disk. Irreversible — requires confirm=true. release_ip_ids/ release_disk_ids (lists of ids, optional) additionally release any attached standalone IPs/volumes instead of just detaching them (kept, unreleased, by default — see list_vps's own ip/disk fields for their ids). |
| start_vpsA | Start a stopped VPS. |
| stop_vpsA | Gracefully stop (ACPI shutdown) a running VPS — gives the guest OS a chance to shut down cleanly. Use poweroff_vps for a hard power-off instead. |
| poweroff_vpsA | Hard power-off a VPS — equivalent to pulling the plug, no chance for the guest OS to shut down cleanly. Use stop_vps for a graceful shutdown instead. |
| restart_vpsB | Restart a running VPS. |
| reinstall_vpsA | Wipes the VPS's boot disk and reinstalls a fresh OS onto it — irreversible, everything currently on the disk is lost. The VPS must already be stopped, same reason as change_vps_hostname (stop it first with stop_vps). Requires confirm=true. os_id: an id from list_vps_available_os for this specific VPS (not every OS is available on every node). |
| resize_vpsA | Resize a VPS's CPU/RAM. An increase is checked against balance and quota by the real API (fails cleanly if either is insufficient); a decrease is always allowed. Requires confirm=true for any change. Only pass the value(s) you want to change — omit the other. |
| change_vps_hostnameA | Change a VPS's hostname. The VPS must already be stopped — this rewrites files on the offline disk image, which isn't safe while it's running (stop it first with stop_vps). Requires confirm=true. |
| change_vps_root_passwordA | Change a VPS's root/administrator password. The VPS must already be stopped, same reason as change_vps_hostname. Requires confirm=true. |
| get_vps_consoleA | Get a one-time console (VNC) connection URL and password for this VPS — grants live console access, treat the returned credentials as sensitive. |
| get_vps_statsA | Real-time resource stats for a running VPS — CPU, RAM, disk, and network usage right now. |
| get_vps_bandwidth_historyC | Historical bandwidth usage for one VPS. |
| get_vps_metrics_historyA | Historical CPU/RAM/disk metrics for one VPS (for graphing usage over time, not just the current snapshot get_vps_stats gives). |
| get_bandwidth_overviewA | Account-wide bandwidth usage overview across every VPS. |
| get_vps_billingB | Billing breakdown for one specific VPS. |
| get_vps_pricingA | Current pricing for one VPS's configuration — useful before calling resize_vps to preview cost. |
| get_vps_smtp_statusB | Whether outbound SMTP ports are blocked on this VPS (a common anti-abuse policy) — {"supported": false} if this VPS's node doesn't support the check at all. |
| get_vps_build_logA | Provisioning log for a VPS that's still building, or was recently built — useful for diagnosing a stuck/failed deploy. |
| list_vps_available_osA | List the operating systems available to reinstall onto this specific VPS (via reinstall_vps) — not every OS is available on every node, unlike list_os_images' full catalog. |
| list_vps_backupsA | List every backup taken of this VPS. |
| get_vps_backup_costA | Cost of taking a new backup of this VPS, before calling create_vps_backup. |
| create_vps_backupA | Take a new backup of this VPS. May incur a cost — check get_vps_backup_cost first. Requires confirm=true. |
| delete_vps_backupA | Permanently delete one backup of this VPS. Irreversible — requires confirm=true. |
| restore_vps_backupA | Restore this VPS from a backup — overwrites its current disk state entirely with the backup's. Irreversible (anything written since the backup was taken is lost) — requires confirm=true. |
| list_vps_disksA | List the disks currently attached to this VPS. |
| add_disk_to_vpsA | Add a new disk of the given size (GB) directly to this VPS. Spends real money — requires confirm=true. For a standalone, independently-manageable volume instead, see purchase_volume. |
| remove_disk_from_vpsB | Permanently remove a disk from this VPS. Irreversible — requires confirm=true. |
| list_attachable_ips_for_vpsA | List this account's standalone IP addresses eligible to attach to this specific VPS (same region, not already attached). |
| add_ip_to_vpsA | Purchase and attach a brand-new IP address directly to this VPS. Spends real money — requires confirm=true. To attach an IP you already own instead, see attach_ip. |
| remove_ip_from_vpsA | Permanently remove (release) an IP address from this VPS. Irreversible — requires confirm=true. To detach without releasing it, see detach_ip instead. |
| set_vps_reverse_dnsA | Set the reverse-DNS (PTR) record for one of this VPS's IP addresses. Requires confirm=true. |
| list_firewall_rulesA | List the firewall rules currently applied to this VPS. |
| update_firewall_rulesA | Replace this VPS's entire firewall rule set with the given list. Requires confirm=true — this can lock out access (including SSH) if the rules are wrong; double-check with the user before calling. Each rule should match the shape returned by list_firewall_rules. |
| get_quotaA | This account's resource limits (VPS count / vCPU / RAM / disk / IP caps), current usage against each, and its current tier — core.quotas's balance-driven tier system, exactly what the dashboard's own Tier page shows. |
| get_account_balanceA | This account's current wallet balance, currency, and basic profile (name, email, country, verification status). |
| list_invoicesA | List every invoice on this account (paid, unpaid, and cancelled), most recent first — amount, status, due date, and line items. |
| get_usage_billingA | Current unbilled usage (a live snapshot) plus historical already-billed cost broken down by Compute/Storage/Network/Other — the same data the dashboard's own Usage Billing page shows. |
| get_usage_billing_line_itemsA | Row-by-row usage detail backing get_usage_billing's own summary — one row per VPS/volume/IP/bandwidth charge. status is "unbilled" (default, a live snapshot) or "billed" (everything already charged). |
| list_transactionsA | List every transaction on this account's wallet (bonus credits, top-ups, adjustments), most recent first. |
| get_transactionB | Get full detail for one transaction by its id. |
| list_os_imagesA | List every operating system image available to deploy a VPS with (name, distro, virtualization type). |
| list_regionsA | List every Point of Presence (region/data-center location) VPS instances can be deployed in. |
| list_ssh_keysA | List every SSH public key saved on this account (title only — the public key material itself, never anything private). |
| create_ssh_keyA | Save a new SSH public key to this account, for installing onto future VPS instances via create_vps's own ssh_key parameter. Requires confirm=true. ssh_key is the public key material (e.g. the contents of id_ed25519.pub) — never a private key. |
| delete_ssh_keyA | Permanently delete a saved SSH key from this account. Irreversible — requires confirm=true. Does not affect VPS instances it's already been installed onto, only future deploys. |
| list_ip_addressesA | List every standalone IP address on this account (attached to a VPS or not). |
| get_ip_addressA | Get full detail for one standalone IP address by its id. |
| check_available_ipsA | How many standalone IP addresses can be purchased in a given region (Point of Presence id from list_regions) right now, and at what price. |
| purchase_ipA | Purchase one or more new standalone IP addresses in a region (Point of Presence id from list_regions). At most 20 at a time. Spends real money (checked against balance and quota) — requires confirm=true. Synchronous — the purchased addresses are returned directly, no task to poll. |
| list_attachable_vps_for_ipA | List this account's VPS instances eligible to attach this IP to (same region as the IP). |
| attach_ipB | Attach a standalone IP address to a VPS (same region). Requires confirm=true. |
| detach_ipA | Detach a standalone IP address from whatever VPS it's currently attached to (kept, not released). Requires confirm=true. |
| release_ipA | Permanently release (delete) a standalone IP address — not just detach it. Irreversible — requires confirm=true. |
| list_volumesA | List every standalone storage volume on this account (attached to a VPS or not, boot or non-boot). |
| get_volumeA | Get full detail for one standalone volume by its id. |
| list_available_volume_sizesA | List the volume sizes/kinds purchasable in a given region (Point of Presence id from list_regions). |
| purchase_volumeA | Purchase a new standalone volume. Spends real money (checked against balance and quota) — requires confirm=true. kind is "data" or "boot" (a boot volume becomes a future VPS's boot disk, not attached to anything existing). In a region without fleet-volume support, a "data" volume must instead be pinned to an existing VPS at purchase time via vps_id (a "boot" volume isn't purchasable there at all — the real API's error message will say so if this applies). Asynchronous — returns a task_id immediately; poll get_volume_task_status for completion, then list_volumes to see the finished volume. |
| get_volume_task_statusA | Check the status of an async volume operation (purchase, attach, detach, destroy, install_os, resize) by the task_id those calls return. |
| list_attachable_vps_for_volumeA | List this account's VPS instances eligible to attach this volume to (same region, stopped where required). |
| list_available_os_for_volumeA | List operating systems available to install onto this volume via install_os_on_volume. |
| install_os_on_volumeA | Install a fresh OS onto this standalone volume, overwriting whatever's on it entirely. Irreversible — requires confirm=true. The volume must be detached from any VPS first (detach_volume). A Windows OS requires root_password; anything else needs at least one of ssh_public_key/root_password. Asynchronous — poll get_volume_task_status. |
| resize_volumeA | Resize a standalone volume (grow only). Spends real money — requires confirm=true. Asynchronous — poll get_volume_task_status. |
| attach_volumeA | Attach a standalone volume to a VPS (same region). Requires confirm=true. Asynchronous — poll get_volume_task_status. |
| detach_volumeA | Detach a standalone volume from whatever VPS it's currently attached to (kept, not released — the volume itself still belongs to this account). Requires confirm=true. Asynchronous — poll get_volume_task_status. |
| set_volume_as_bootA | Set this volume as a VPS's boot disk. The VPS must already be stopped — the same requirement vps.py's change_vps_hostname documents (stop it first with stop_vps). Requires confirm=true. |
| release_volumeA | Permanently release (delete) a standalone volume — not just detach it. Irreversible — requires confirm=true. Asynchronous — poll get_volume_task_status. |
| list_activity_logsA | List this account's activity log — every action taken on the account or its VPS instances (sign-ins, VM power/create/ destroy, IP/volume changes, SSH key changes, ...), newest first. search (optional) matches action/description/IP address. |
| export_dataA | Export a copy of this account's own data as CSV, one category at a time. category must be one of: profile, activity, invoices, transactions, usage, ip_addresses, volumes, vms, firewall_rules. ids (optional, for invoices/transactions/usage/ ip_addresses/volumes/vms only) narrows to specific row ids instead of exporting everything in that category. Note: 'invoices' is a zip archive (one folder per invoice) on the real dashboard, which can't be returned as text here — that one category should be downloaded from the dashboard's own Export Data page instead. |
| list_ticket_departmentsA | List support departments a ticket can be filed under — the department_id source for create_ticket. |
| list_ticketsA | List this account's support tickets, most recently updated first. search (optional) matches subject/department/status. |
| get_ticketA | Get full detail for one ticket, including its replies. |
| create_ticketA | Open a new support ticket with an opening message. priority is one of: low, medium, high. vps_id (optional) links the ticket to a specific VPS (an id from list_vps) if the issue is about one. |
| list_ticket_repliesA | List every reply on a ticket (same data get_ticket's own "replies" field already includes — this is the paginated version, for a ticket with a long conversation). |
| reply_to_ticketC | Post a reply on an existing ticket. |
| list_maintenance_eventsA | List maintenance events relevant to this account — anything affecting a VPS/region this account has infrastructure in, plus anything scoped account-wide. Includes recently-completed events (within the last 24h), not just currently-active ones. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 78 tools
Every tool is clearly scoped to a specific resource and action, with detailed descriptions that prevent overlap. Even near-duplicates like stop_vps vs poweroff_vps are explicitly differentiated by graceful vs hard shutdown. The naming and resource grouping (VPS, IP, Volume, Account, Tickets) makes misselection unlikely.
Tools predominantly follow a verb_noun pattern (list_vps, create_vps, delete_vps, start_vps), but there are minor deviations like 'set_vps_reverse_dns' vs 'change_vps_hostname', and 'get_vps_console' vs 'get_vps'. These are minor and do not significantly hinder predictability, but they prevent a perfect score.
With 78 tools, this server is far above the recommended range. While the breadth covers VPS management, IPs, volumes, billing, support, and more, the sheer volume makes it difficult for agents to discover and select the right tool efficiently. Many tools are niche or rarely used, and the server would likely benefit from consolidation or splitting into focused servers.
The toolset provides comprehensive lifecycle coverage for all major resource types: VPS (create, read, update, delete, start, stop, restart, poweroff, resize, reinstall), IPs (purchase, attach, detach, release), volumes (purchase, attach, detach, resize, install OS), plus backups, SSH keys, firewall rules, billing, support tickets, activity logs, and data export. No significant gaps are apparent for the stated domain.