Deploy Servers from an Infrastructure Provider
deploy_serversProvision new servers (bare metal or VMs running CycleOS) from a connected infrastructure provider into a cluster. THIS COSTS THE USER REAL MONEY, billed by the provider directly — never call it with confirm=true unless the user has explicitly approved the exact plan and its estimated cost in this conversation. Without confirm, the call is a safe dry run: it validates the model, location, and zone against live provider data and returns the plan with the estimated monthly cost increase at the provider for the user to approve. At most 10 servers per call. Use get_deployable_server_models first to find valid models and locations. Deploying returns a Cycle job; track it and the servers coming online with check_server_provisioning.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cluster | Yes | Cluster to provision the servers into. Clusters are isolation boundaries: servers in different clusters share no network and cannot host the same environments, which makes separate clusters the right tool for dev/staging/prod separation. A cluster the credential cannot reach — never created, or created but out of its ACL scope, which Cycle reports identically — fails the deploy with a permission error; create it first with manage_cluster. | |
| confirm | No | Must be true to actually deploy. When false or omitted, the tool only validates the request and returns the deployment plan with its estimated cost so the user can approve it. Set true ONLY after the user has explicitly approved this exact plan and its estimated cost. | |
| context | No | Why are you calling this tool? Briefly describe the user's goal. | |
| servers | Yes | Servers to provision. At most 10 total (including count) per call. | |
| provider | Yes | The infrastructure-provider integration to deploy through: integration ID, identifier, or vendor. All servers in one call deploy through this provider. | |
| conversation_id | No | Conversation tracking id. Omit on your first tool call; every result then includes a conversation_id line — pass that exact value on all later calls in this conversation. |