Skip to main content
Glama
meshive

meshive-mcp

Official
by meshive

Create Pod

create_pod

Create GPU or CPU cloud pods: preview hourly cost, confirm provisioning, then poll status until running.

Instructions

Create a pod. This spends the user's credit every hour while the pod runs. With confirm=false (default) it only returns the estimate and creates nothing; call again with confirm=true after the user explicitly agreed to the price. The pod starts asynchronously — poll the pods tool for status. With model_set or hf_token_id the confirmed call returns only after the set's files were added, which can take minutes.

workspace takes the id from the workspaces tool (a label also works). template_id comes from the templates tool. GPU pod: pass gpu_model (from the gpus tool) and optionally gpu_count/gpu_vram_gb; vCPU/RAM default to the GPU's recommended sizes. CPU pod: omit gpu_model; cpu_line picks the CPU line (a cpu_line value from the cpus tool; CPU pods only, default the cheapest line that fits) and vCPU/RAM default to 8 cores / 32 GiB like the console (or the nearest sizes that line offers). vcpu and ram_gb are totals for the pod and must be sizes the console offers; a rejected size comes back with the allowed values. The system disk is sized by the server (shown as resources.disk_gb in the estimate). volumes attaches EXISTING network (nfs) storage from the storages tool: [{"storage": pv_name, "mount_path": "/data"}]. Existing local storage can't be attached to a new pod. local_volumes creates NEW local storage on the pod's machine together with the pod: [{"name": "scratch", "mount_path": "/scratch", "size_gb": 50}] with optional "encrypted", "usage_warning" and "usage_warning_threshold" (0-1). Each needs at least 10 GiB and spot pods can't have one. It is billed hourly by size until it is deleted, also while the pod is stopped and after the pod is deleted unless delete_pod lists it; the estimate includes it as breakdown.local_storage. ports opens new ports: a list like [8888, {"port": 6006, "name": "tb", "external": false}]; don't repeat ports or port names the template already has. template_ports changes the ports the template opens, like the console's deploy screen: [{"port": 8188, "name": "ui", "new_port": 8189, "external": false}], where port is the template's port and "name" (rename), "new_port" (renumber) and "external" (true = exposed over HTTPS, false = internal only) are optional. Template ports can't be removed; use ports to open new ones. env is a dict and secret_keys names the secret ones; template variables the template leaves blank need a value. command overrides the start command (at most 4096 characters). max_price_per_hour is checked against the estimate (compute plus new local_volumes) before creating and caps the final COMPUTE hourly rate at placement; an over-cap placement fails asynchronously. Existing storage you attach and Asset Hub retention are billed separately and excluded from this cap. region is accepted for compatibility and ignored. input_assets places Asset Hub assets in the pod: ["asset_id" or {"asset": id, "target_dir": "/workspace/models", "role": role, "paths": ["sub/folder/"], "strip_prefix": ""}] (default place /inputs/ or the template's path for that role); "paths" picks some files or folders, copied from the asset's file list exactly as written there, and "strip_prefix": "" keeps their folder structure (left out, the folder they share is stripped). Only these keys are accepted. They add an input volume billed by size. watched_folders uploads new files in those folders as assets: ["/workspace/results" or {"path": p, "include": [".png"], "include_existing": false, "enabled": true}] (the template's own output folders are watched already). It works on templates without an output folder too (for example NIM or vLLM), as long as the pod has storage the folders sit in (volumes or local_volumes). watched_template_folders changes those template folders from the start, like the console's create screen: {"/outputs": {"enabled": false}} turns one off, {"/outputs": {"include": [".png"]}} uploads only matching files, and {"/workspace/output": {"path": "/workspace/results"}} moves an output folder (its $MESHIVE_OUTPUT_DIR and storage follow; output folders only). harvest_destination {"mode": "user_s3", "credential_id": n} sends them to the user's bucket instead of managed storage. model_set adds one model set to the pod: a slug from the model_sets tool for this template (only templates whose list is selectable; one set per pod). Its files are added as input assets before the pod is created, so creating takes longer, often several minutes. The estimate shows the set as model_set with its file count, size and minimum GPU memory. If a file can't be added, no pod is created (model_set_unavailable) and the files already added are reused next time. hf_token_id is for Quick Deploy templates whose model set is gated on Hugging Face (the model_sets tool shows hf_token_required and gated_sources): the id of a workspace token from the source_credentials tool whose Hugging Face account accepted the model's license. The set's files download with that token, so the user must first accept the license on the page in gated_sources with the same Hugging Face account. Without it the server refuses with hf_token_required; hf_license_not_accepted / hf_access_not_approved mean that account hasn't accepted the license or isn't approved yet, and hf_token_rejected means the token is invalid. Like model_set, a confirmed create with it returns only after the files were linked, which can take minutes. Every write requires operation_id. Reuse the ID returned by the preview, or generate a UUID before the first call. Keep it for confirmation and all retries; a new ID means a new operation. After a timeout, check operation_status and resource state before retrying.

Input Schema

NameRequiredDescriptionDefault
envNo
nameYes
vcpuNo
portsNo
ram_gbNo
regionNo
commandNo
confirmNo
volumesNo
cpu_lineNo
gpu_countNo
gpu_modelNo
model_setNo
workspaceNo
cpu_premiumNo
gpu_vram_gbNo
hf_token_idNo
rental_typeNodemand
secret_keysNo
template_idYes
input_assetsNo
operation_idNo
local_volumesNo
template_portsNo
uptime_premiumNo
watched_foldersNo
internet_premiumNo
max_price_per_hourNo
harvest_destinationNo
watched_template_foldersNo

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.7/5.0
Behavior5/5

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

The description goes far beyond the annotations, disclosing hourly credit spend, async pod startup, blocking behavior for model_set/hf_token_id, local volume billing persistence after deletion, max price cap behavior, error codes for Hugging Face gating, and that region is ignored. These are essential behavioral details for a mutating, open-world tool and do not contradict the annotations.

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?

The description is front-loaded with the critical cost/confirm flow and then organizes details by parameter area, so the length is largely justified for a 30-parameter tool. It is still dense and repeats the multi-minute model_set/hf_token_id wait in multiple places, keeping it from being maximally concise.

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?

Given the tool's complexity, annotations, and output schema, the description is largely complete: it covers creation flow, cost, async behavior, error paths, operation IDs, and most parameter semantics. The main gaps are the unexplained premium flags and rental_type, which are relevant for accurate invocation.

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?

With 30 parameters and 0% schema description coverage, the description does an excellent job explaining most parameters, including shapes for volumes, local_volumes, ports, template_ports, input_assets, watched folders, and operation_id. However, it leaves rental_type, cpu_premium, uptime_premium, and internet_premium unexplained, which prevents a perfect score.

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

Purpose5/5

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

The description opens with a specific verb and resource ('Create a pod') and immediately explains the key cost and preview semantics. It clearly distinguishes the preview behavior (confirm=false) from actual creation (confirm=true), so an agent understands what the tool does without opening the schema.

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

Usage Guidelines5/5

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

It gives explicit operational guidance: call with confirm=false first to get an estimate, then confirm=true only after the user agrees to the price; poll the pods tool for status; use operation_status after timeouts; reuse operation_id for retries. It also names conditions for model_set and hf_token_id, including license acceptance requirements.

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