Skip to main content
Glama

Deploy a GPU instance

create_instance
Destructive

Deploy a new GPU instance. Provide a name and either gpu (auto-picks cheapest) or type_id from list_gpu_types. Optionally attach an SSH key by ID for manual ssh -i access, and a storage volume by storage_id to boot with its files. For unattended or long-running work, set max_runtime_minutes and idle_shutdown_minutes: when either fires the instance is terminated (not paused), so copy results off before then. Once it is running, commands reach it through ssh_execute or the CLI (runcrate ssh ). If the environment has reached its monthly budget the launch fails: do not retry, tell the user.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "name": "<name>"
    },
    "name": "create_instance"
  }
}

Input Schema

NameRequiredDescriptionDefault
gpuNoGPU type for auto-deploy (e.g., A100, H100:2)
nameYesInstance name
regionNoOnly launch in this region: a region from list_gpu_types, the start of one (us-east), or a city or country (canada). Nothing there fails and names the regions that have it; never launches elsewhere. Omit for any region
type_idNoSpecific type ID from list_gpu_types
templateNoOS template
gpu_countNoGPUs on the machine: 1, 2, 4 or 8 (default 1)
workspaceNoWorkspace ID (optional: defaults to the authenticated workspace)
ssh_key_idNoSSH key ID from list_ssh_keys (optional — keyless SSH always works without this)
storage_idNoStorage volume ID from list_volumes or create_volume (optional). Its files are copied to /workspace on the instance's local disk at boot; changes are copied back to the volume every few seconds and once more when the instance is deleted, so the files outlive the instance. Works with any GPU type and region. The volume must be in the same workspace and environment, active, and not attached to another running instance. Attach at launch only.
environmentNoEnvironment name (optional: defaults to the environment this session acts in)
include_communityNoLet a community host run it (off by default: datacenter machines only). A community host is run by an independent host, not a datacenter: the host operates the hardware and can access the machine, and it is not available on reserved terms. Only when the user asked for community hosts; needed to launch a community type_id.
max_runtime_minutesNoTerminate the instance automatically after this many minutes of running (5 to 10080). The clock starts when it first becomes running; an alert goes out 10 minutes before. Set it whenever you launch for unattended or long-running work, a bit above the expected job length (for a 2 hour job, 150). The instance is terminated, not paused. Omit for no limit.
idle_shutdown_minutesNoTerminate the instance when GPU utilisation stays under 5% with no SSH, web terminal or editor session for this many minutes (5 to 1440). GPU instances only. Set it whenever you launch for unattended or long-running work; 30 to 60 suits most jobs. The instance is terminated, not paused. Omit to leave idle stop off.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / storage_id / description
      Previous value: -"Storage volume ID from list_volumes or create_volume (optional). By default (volume_mode copy) its files are copied to /workspace on the instance's local disk at boot; changes are copied back to the volume every few seconds and once more when the instance is deleted, so the files outlive the instance. Works with any GPU type and region. The volume must be in the same workspace and environment, active, and not attached to another running instance. Attach at launch only."New value: +"Storage volume ID from list_volumes or create_volume (optional). Its files are copied to /workspace on the instance's local disk at boot; changes are copied back to the volume every few seconds and once more when the instance is deleted, so the files outlive the instance. Works with any GPU type and region. The volume must be in the same workspace and environment, active, and not attached to another running instance. Attach at launch only."
    • removedInput schema / properties / volume_mode
      Removed value: -{
      -  "description": "With storage_id: how the volume reaches the instance. copy (default): copied to the instance's disk at boot, writable, saved back to the volume; the disk must hold the volume. mount_ro: mounted read-only at /workspace in seconds and read on demand, nothing is copied; what you write goes to /root/workspace, which is not saved. Use mount_ro for a large volume you only read, such as model weights. A machine or volume that cannot mount is refused with VOLUME_MODE_UNSUPPORTED (nothing is charged), never quietly copied: pick another machine or use copy. Needs storage_id.",
      -  "enum": [
      -    "copy",
      -    "mount_ro"
      -  ],
      -  "type": "string"
      -}
  2. Changed2 schema fields changed
    • changedInput schema / properties / storage_id / description
      Previous value: -"Storage volume ID from list_volumes or create_volume (optional). Its files are copied to /workspace on the instance's local disk at boot; changes are copied back to the volume every few seconds and once more when the instance is deleted, so the files outlive the instance. Works with any GPU type and region. The volume must be in the same workspace and environment, active, and not attached to another running instance. Attach at launch only."New value: +"Storage volume ID from list_volumes or create_volume (optional). By default (volume_mode copy) its files are copied to /workspace on the instance's local disk at boot; changes are copied back to the volume every few seconds and once more when the instance is deleted, so the files outlive the instance. Works with any GPU type and region. The volume must be in the same workspace and environment, active, and not attached to another running instance. Attach at launch only."
    • addedInput schema / properties / volume_mode
      Added value: +{
      +  "description": "With storage_id: how the volume reaches the instance. copy (default): copied to the instance's disk at boot, writable, saved back to the volume; the disk must hold the volume. mount_ro: mounted read-only at /workspace in seconds and read on demand, nothing is copied; what you write goes to /root/workspace, which is not saved. Use mount_ro for a large volume you only read, such as model weights. A machine or volume that cannot mount is refused with VOLUME_MODE_UNSUPPORTED (nothing is charged), never quietly copied: pick another machine or use copy. Needs storage_id.",
      +  "enum": [
      +    "copy",
      +    "mount_ro"
      +  ],
      +  "type": "string"
      +}
  3. Changed4 schema fields changed
    • changedInput schema / properties / gpu_count / description
      Previous value: -"Number of GPUs (default: 1)"New value: +"GPUs on the machine: 1, 2, 4 or 8 (default 1)"
    • addedInput schema / properties / gpu_count / enum
      Added value: +[
      +  1,
      +  2,
      +  4,
      +  8
      +]
    • changedInput schema / properties / gpu_count / type
      Previous value: -"number"New value: +"integer"
    • addedInput schema / properties / include_community
      Added value: +{
      +  "description": "Let a community host run it (off by default: datacenter machines only). A community host is run by an independent host, not a datacenter: the host operates the hardware and can access the machine, and it is not available on reserved terms. Only when the user asked for community hosts; needed to launch a community type_id.",
      +  "type": "boolean"
      +}
  4. Changed3 schema fields changed
    • removedInput schema / properties / env
      Removed value: -{
      -  "description": "Environment name (optional — defaults to main)",
      -  "type": "string"
      -}
    • addedInput schema / properties / environment
      Added value: +{
      +  "description": "Environment name (optional: defaults to the environment this session acts in)",
      +  "type": "string"
      +}
    • changedInput schema / properties / workspace / description
      Previous value: -"Workspace ID (optional — defaults to authenticated workspace)"New value: +"Workspace ID (optional: defaults to the authenticated workspace)"
  5. First observed

TDQS

A4.2/5.0
Behavior5/5

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

Annotations already flag destructive and open-world, and the description adds behavior an agent could not otherwise know: timeout and idle limits terminate rather than pause the instance, results must be copied off beforehand, budget exhaustion is a hard non-retryable failure, and storage changes are copied back so files outlive the instance. These are real consequences that shape how the tool should be invoked.

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

Conciseness4/5

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

Front-loaded with the core action and required inputs, then progressively adds optional concerns (ssh, storage, timeouts, budget). It is a single dense block with essentially no filler, though the clause about reaching the instance via ssh_execute or the CLI is the least essential and slightly dilutes focus.

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

Completeness4/5

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

For a 13-parameter, destructive, open-world creation tool with no output schema, the description covers the risky and non-obvious paths well (timeouts, budget, storage persistence, community hosts via schema). It does not say what is returned on success, so an agent must discover the instance identifier elsewhere to chain into ssh_execute or get_instance.

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?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema does not: gpu auto-picks the cheapest matching type, ssh_key_id is for manual ssh -i access only, and storage_id means booting with the volume's files attached. The remaining parameters (region, template, workspace, environment, include_community) are left entirely to the schema.

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

Purpose4/5

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

"Deploy a new GPU instance" gives a specific verb and resource, and the body clarifies that a name plus either gpu or type_id is the core input, which separates it from list_gpu_types and ssh_execute. It does not distinguish itself from sibling run_job, which is the other obvious way to run GPU work, leaving the agent to infer instance-vs-job.

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

Usage Guidelines4/5

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

Strong operational routing: use gpu for auto-pick of cheapest, type_id for a specific type, ssh_key_id only for manual ssh -i, storage_id only at launch, and set max_runtime_minutes/idle_shutdown_minutes for unattended work. It also gives an explicit failure policy (budget exceeded: do not retry, tell the user). The missing piece is when NOT to use this and use run_job or create_cluster instead.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.