Order service
order_serviceOrder a new VPS on VPSnet: request a quote, verify the exact EUR total and billing period, then confirm balance payment to provision the server.
Instructions
Order a new VPS. Requires sufficient account balance for balance payment. Payment object for balance: { payment: 1, successUrl: '', cancelUrl: '' }. First call returns confirmationRequired and an exact gross EUR quote without charging. Show the amount and billing period, obtain explicit approval, then call again with the unchanged order configuration and idempotencyKey, returned quoteToken, expected_total_eur and acknowledge_charge=true. The API key must have paid scope/caps enabled. Never replace the key after an uncertain payment; inspect that original attempt in the VPSnet panel. Quotes are retained in this MCP process; after a restart inspect the original attempt in the panel rather than submitting another order. Payment acceptance is not server readiness. Poll get_service for the returned order number. stateProcess.waitingReason=public_ip_inventory resumes the same paid CREATE automatically when inventory returns; do not place or pay for another order. stateProcess.attention=true needs operator attention. Follow follow_up for the same service. Poll about every 10 seconds, never treating that interval as a boot ETA; after at most 6 checks report pending progress and retain the original key/order. Do not automatically restart or promise a completion callback. Running VM, usable guest access and application health are separate checks. Resources: array of numeric resource value IDs from get_order_options, e.g. [901, 907]. rootPassword: 6-40 chars, alphanumeric, must contain uppercase + lowercase + digit. Example: 'MyPass123'. sshKey and rootPassword are mutually exclusive — provide one or the other. privateNetworkId (optional): the UUID of one of your private networks to attach the new server to at order time, the same choice the order form offers; the server checks the network in the quote and refuses the order with a reason when it cannot be attached. Omit it for an order without a private network.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| os | No | OS version ID from get_order_options | |
| plan | Yes | Plan ID from get_order_plans | |
| period | Yes | Explicit billing period ID from get_order_options; disclose its term together with the exact gross quote before approval. | |
| sshKey | No | SSH key ID from list_ssh_keys to deploy. Mutually exclusive with rootPassword | |
| payment | Yes | Payment object. For balance: { payment: 1, successUrl: '', cancelUrl: '' } | |
| resources | No | Array of numeric resource value IDs from get_order_options, e.g. [901, 907, 902] | |
| quoteToken | No | Exact token returned by the first order_service call; required for confirmation. | |
| rootPassword | No | Root password. 6-40 chars, alphanumeric, must contain uppercase + lowercase + digit. Mutually exclusive with sshKey | |
| idempotencyKey | Yes | Required for paid API-key orders. Stable unique key for this exact order attempt, e.g. UUID. | |
| privateNetworkId | No | UUID of one of your private networks to attach the new server to (shown in the control panel under Networking). Sent to both the quote and the confirm; omit for no private network | |
| acknowledge_charge | No | Set only after explicit approval of the exact gross EUR total and billing period. | |
| expected_total_eur | No | Exact VAT-inclusive amount_eur disclosed to and approved by the customer; required for confirmation. |