Skip to main content
Glama

sylve_vm_create

Destructive

Provision Bhyve VMs from scratch or templates, with automatic RID and VNC port allocation, size parsing, cloud-init validation, and optional dry-run preview.

Instructions

Provision a Bhyve VM from scratch or from a template. Parses sizes like '2G', auto-allocs RID and VNC port, validates cloud-init YAML. Supports dry_run.

Input Schema

NameRequiredDescriptionDefault
isoNoISO/download UUID or filename.
ridNoExplicit RID (defaults to next free).
tpmNo
vncNoEnable VNC (default true, allocates a port).
nameNoVM name.
nodeNoTarget cluster node hostname or UUID. Omit for cluster-wide.
poolNoZFS pool for the primary disk.
waitNo
coresNoCPU cores (sockets/threads default 1).
countNoTemplate mode: number of VMs.
startNoStart the VM(s) after creation.
configNoOptional create config dict mirroring 'sylve vm create --file' keys.
memoryNoRAM, e.g. '2G' or '4096M'.
serialNo
switchNoNetwork switch name, or 'none'.
contextNoNamed login context from ~/.config/sylve/config.yaml.
dry_runNoPrint the request without creating.
socketsNo
threadsNo
boot_romNo
templateNoCreate from a VM template ID or name.
vnc_portNo
disk_sizeNoPrimary disk size, e.g. '20G'.
meta_dataNocloud-init meta-data YAML (inline or path).
start_ridNoTemplate mode: first RID.
user_dataNocloud-init user-data YAML (inline or path).
cloud_initNo
mac_objectNoExisting MAC object name or ID.
descriptionNo
name_prefixNoTemplate mode: name prefix.
pci_devicesNo
start_orderNo
time_offsetNo
storage_typeNo
vnc_passwordNo
wait_timeoutNo
start_at_bootNo
storage_poolsNoTemplate mode: SOURCE_ID=POOL mappings.
network_configNocloud-init network-config YAML (inline or path).
qemu_guest_agentNo
switch_emulationNo
cloud_init_prefixNo
storage_emulationNo
extra_bhyve_optionsNo
rewrite_cloud_init_identityNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

B3.1/5.0
Behavior4/5

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

Annotations already declare the destructive, non-idempotent, non-read-only profile, and the description adds genuine value beyond that: it discloses auto-allocation of RID and VNC port (side effects the agent cannot see in the schema) and cloud-init YAML validation. It does not cover failure behavior, what a partial creation leaves behind, or whether dry_run still validates, which keeps it below 5.

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?

Three short sentences, front-loaded with purpose and with zero filler; the auto-allocation and validation details earn their space. It is arguably too terse for a 45-parameter mutation tool, which is the only real structural weakness.

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

Completeness2/5

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

This is a 45-param, nested-object, destructive, non-idempotent creation tool with no output schema and no required fields, yet the description never says which parameter combinations produce a valid request, what is returned (e.g., an RID), or what happens on partial failure. The complexity-to-description ratio is badly unbalanced; three sentences cannot cover it.

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

Parameters2/5

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

With 45 parameters and only ~51% schema description coverage, the schema does roughly half the work and many fields (tpm, serial, cloud_init, qemu_guest_agent, pci_devices, rewrite_cloud_init_identity, wait_timeout) have no description at all. The description explains only a tiny slice — size-string parsing for memory/disk_size, automatic RID/VNC port allocation, and dry_run — leaving template-mode params and mode-exclusivity undocumented.

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?

States a specific verb+resource ("Provision a Bhyve VM") and names the two creation modes (from scratch or from a template), which separates it from the read/action siblings. It stops short of explicitly distinguishing itself from sylve_vm_template or sylve_vm_action, so the agent must infer that boundary from the name alone.

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

Usage Guidelines2/5

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

There is no when-to-use / when-not-to-use guidance and no prerequisites (which params are needed for scratch vs template mode, which are mutually exclusive). The only usage signal is "Supports dry_run", which hints at a safe preview path but is not framed as guidance.

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