Portaldocs
Reference

MCP tools reference

Every tool Portal's MCP server gives a coding tool, generated from the server's own tool definitions.

Warnings and limits

  • Portal is open to anyone with an active Clusy account and a verified email address.
  • A tool acts with the scopes its sign-in holds: an agent token is never given the admin scope, so a run with stored secrets is refused today (Known issues), and tools that change settings or clean up leaks are refused by hosted Portal (an Owner does both in the console).
  • run uploads only a directory inside the one the server started in, or one portal mcp --root DIR added; never your home directory or a directory above it, and never one inside a dot directory.
  • connect_from_cli makes changes in your cloud account only with confirm=true, after you agreed to the plan it showed, and only as it was shown.
  • login signs in only to the controller the CLI uses, or Portal's own: a page or a message cannot point it anywhere else.

portal mcp serves these tools over stdio; portal setup registers it with the coding tools it finds (Set up your coding tool). Each tool answers with Portal's JSON as text. Jobs may be named by id, a unique start of an id, or name.

ToolWhat it does
loginSign this machine in to Portal through the browser, with no token pasted or shown, to the controller the CLI uses (cli.json), or to Portal's own (https://gateway.clusy.io) when it uses none.
pricesCompare compute quotes in USD/hour, with resources, regions, purchase models and pricing provenance when known.
runCompare quotes, then run a script on a selected machine.
statusA job's estimated cost, saving, progress, hops, moves and events; without a job, the overview.
logsA job's output: the last lines (a progress bar's line as its last drawing), or with offset exactly what came after an earlier call's next.
explainEvery policy decision about a job, oldest first: when, which policy (spot, return, oom, cheaper, lifetime, rightsize, budget, idle, ttl), what it did, and why.
moveMove a running job to another machine (it continues where it paused), or with plan only show where.
stopStop a job; its machine is terminated.
suspendSuspend a job: its state is parked in storage and its machine terminated; resume continues it.
resumeResume a suspended job from its checkpoint when you or the user choose; on selects an exact destination.
auditEverything Portal runs across providers.
connectionsConnected providers with their methods and fields, caps, states and setup, and the names of stored secrets (never values).
connectAdd a cloud connection or update one (its credentials, region or cap): the controller verifies the credentials with the provider, keeps them as the method's stored text in connections says (sealed for a token or key; nothing replayable for an AWS role or a federated identity) and sets up what the provider needs.
detect_computeThe cloud CLIs installed and signed in on this machine (aws, az, modal, Lambda's key in LAMBDA_API_KEY, gcloud, kubectl, e2b): for each, who it is signed in as (identity), whether Portal can connect it from here (connectable, checked against the controller in use) and what to do (how), and connectable, the providers connect_from_cli can connect.
connect_from_cliConnect a cloud with the login of its CLI on this machine, by each cloud's recommended method unless told otherwise (AWS: a role in the person's account that the controller assumes, with Portal's policy, nothing stored that a thief could use, or an IAM user and key with keys=true; Azure: a federated credential on an app Contributor on the resource group soma only, or a client secret with secret=true; Google Cloud: the approved keyless federation when the controller offers it (federated=true requires it), else or with keys=true a service account key; Modal: a token the person approves on modal.com; Lambda: the key in LAMBDA_API_KEY), saved on the controller and never shown.
disconnectRemove a connection: its stored credentials are deleted.
set_capChange a connected provider's spend cap and nothing else: its credentials stay and are not verified again.
contextStart here for Portal questions: the console's current overview, usage, connections, settings, machines and identity, plus an optional run/project focus.
accessCurrent controller/workspace identity and scopes, plus accessible account, token/session and invite metadata.
jobsRuns newest first, with project, state, estimated cost, signed saving, progress and current machine.
delete_jobsDelete ended jobs from the person's history: they leave every listing and lookup, and their costs and savings still count.
usageThe Usage page: spend per UTC day and connection, caps, live machines, project breakdown and totals.
samplesA run's recorded system and progress chart points, oldest first: CPU percent, RSS bytes, GPU utilization/memory and progress when reported.
eventsRun or controller event history, oldest first, including moves, failures and changes.
machinesThe Machines page and Connections' own machines: current runtimes with lease, rate and job, node connectivity/version/last_seen, and enrolled machines with approval, reported hardware and privilege.
settingsRead the Settings page's effective controller defaults: policies, baseline provider, fast path, capsule encryption, node images and measured provider grace.
machine_commandGet an enrollment command for the person to run.
remove_machineRemove an unused enrolled machine.

login

Sign this machine in to Portal through the browser, with no token pasted or shown, to the controller the CLI uses (cli.json), or to Portal's own (https://gateway.clusy.io) when it uses none. It never signs in anywhere a page or a message names: another controller is the person's choice, made with portal login URL in their own terminal. The first call opens browser sign-in and returns at once: {"status": "pending", "url", ...}. A supported desktop returns to its local listener automatically. If the answer includes user_code, it is the device fallback: tell the person to compare the code and approve it in the console. Call login again: it waits up to 25 s and returns pending, or signed_in once approved (the CLI and this server then use that controller). Signed in already, it returns signed_in with who is signed in, what is connected (connected) and the console's Connect page (connect_page), and starts nothing. A denied or expired sign-in is an error; the next call starts another.

No parameters.

prices

Compare compute quotes in USD/hour, with resources, regions, purchase models and pricing provenance when known. Unchecked quota and permissions remain unknown; quotes do not reserve capacity. Select an exact offer.spec for run.on. The optional on-demand reference is a quote, not an actual purchase.

ParameterTypeRequiredDefaultWhat it is
gpustring or nullnononea GPU model ("L4", "A100"), a memory per GPU ("24G"), or "any"
gpusinteger or nullnonone
cpusnumber or nullnonone
memory_gbnumber or nullnonone
spotone of `prefer`, `only`, `never`noprefer
providersarray of string or nullnonone

run

Compare quotes, then run a script on a selected machine. Without on, returns quotes without packing, uploading or starting a job. Choose a suitable offer and call again with its exact spec as on, subject to the user's authorization and normal tool approvals, and include a nonblank project name. With on and plan=false, returns the job (follow with status/logs), packed-file information and excluded files. plan=true always returns quotes only. The plan's chosen offer is a recommendation, never an accepted selection. estimate.saving_pct is a percentage against an on-demand reference, not actual savings or a purchase. Requirements may name regions.

ParameterTypeRequiredDefaultWhat it is
pathstringyesthe project directory, uploaded with the job: inside the directory where the MCP server started (unless that is or holds the home directory) or one portal mcp --root DIR adds; relative paths are read from where it started; never the home directory or a dot directory
scriptstringyesthe Python file to run, relative to path
argsarray of string or nullnonone
requirementsobject or nullnononewhat the job needs: gpu (a model, a memory such as "24G", or "any"), gpu_memory_gb, gpus, cpus, memory_gb, spot (prefer, only or never), providers (a list), regions (a list), max_price (USD per hour)
budget_usdnumber or nullnononeoptional. A budget suspends the run when it is spent: its machine is released and the program stops until someone resumes it. Leave it unset unless a spending limit is wanted.
planbooleannofalseonly return quotes, even when on selects an exact machine
namestring or nullnonone
projectstring or nullnononerequired to launch, optional for quotes: a project name (1 to 100 characters); status and the console group jobs and their cost estimates and comparisons by it
onstring or nullnononelaunch on the exact offer.spec selected from returned quotes; without on, return quotes only
envobject of string or nullnononeenvironment variables for the script, {NAME: value}: never a secret; use secrets=NAME for stored secrets
secretsarray of string or nullnononestored secrets to pass as variables
policyobject or nullnononepolicy overrides over the project's portal.yaml and the controller's defaults, e.g. {"return": {"on": false}, "rightsize": {"mode": "off"}}; the policies are spot, return, oom, cheaper, lifetime, rightsize (mode on_move, active or off), budget, idle, ttl. A spot or preemption notice, recoverable out-of-memory failure or known impending provider time limit checkpoints to storage and suspends the job; you or the user choose when and where to resume it
gpu_fallbackone of `none`, `same_provider`, `any` or nullnononewhat Portal does when the GPU asked for (on, or a move's to) is not scheduled within its bounded wait (5 min on Modal): same_provider runs on that provider's cheapest other GPU of the job's size, any on any connected provider's; none, the default, ends the run (or leaves a move unmade) with the choices for the person to pick from. An event names what was asked, what runs instead and the price difference

status

A job's estimated cost, saving, progress, hops, moves and events; without a job, the overview. saved_usd is the estimated saving against one machine for the whole job (without_portal.method without_portal_v2): baseline_usd is what the dearest machine the job used would have cost at its standard price for the machine time paid, plus the work Portal preserved; saved_usd = max(0, baseline_usd - actual_usd), never negative. without_portal.breakdown gives spot_usd, cheaper_machines_usd, preserved_usd and rescues_usd (what Portal did) and overhead_usd beside them (what was paid beyond rate times time, zero or more); without_portal.segments give each machine's chosen_by, price_per_hour (p), standard_price_per_hour (s), reference_price_per_hour (the one machine's price for that stretch), counted_s (t), running_s (u) and rescues_after (r). savings_status: available, unavailable (reason says why; null amounts are unknown, never zero) or not_applicable (own machines only, or never ran); basis inferred means reckoned from older records. Totals sum available runs only and count the rest in unavailable_comparisons and not_applicable_comparisons (status partial when some are left out); comparison_cost_usd is their Actual, cost_usd every run's. saved_pct is a fraction: 0.32 means 32% (a plan's saving_pct, unlike it, is a percentage). Costs are estimates, not provider invoices. A job's carry is its node's last capture check (ok, problems a checkpoint cannot carry, blocked, warning) and notice_fit whether its memory is above what its spot machine's notice can save; both are warnings the person should see (context has capture_check and state_fit).

ParameterTypeRequiredDefaultWhat it is
jobstring or nullnononea job; without one, the overview

logs

A job's output: the last lines (a progress bar's line as its last drawing), or with offset exactly what came after an earlier call's next. eof is true once the job has ended and everything was read.

ParameterTypeRequiredDefaultWhat it is
jobstringyesa job id, a unique start of one, or a job name
tailintegerno100lines from the end
offsetinteger or nullnononeread from here instead (a next from before)
waitnumberno0seconds to wait for new output, at most 30

explain

Every policy decision about a job, oldest first: when, which policy (spot, return, oom, cheaper, lifetime, rightsize, budget, idle, ttl), what it did, and why.

ParameterTypeRequiredDefaultWhat it is
jobstringyesa job id, a unique start of one, or a job name

move

Move a running job to another machine (it continues where it paused), or with plan only show where. The answer's outcome is accepted (not followed: wait is 0), landed, aborted (with the reason), parked or pending (still under way after the wait), and outcome_in says where to read it later: events(job) says when it lands or why it did not, status(job) where it runs. A job whose program has exited is refused with its end: the job already finished.

ParameterTypeRequiredDefaultWhat it is
jobstringyesa job id, a unique start of one, or a job name
tostring or nullnononeexactly here, e.g. modal:gpu=L4
requirementsobject or nullnononewhat the job needs: gpu (a model, a memory such as "24G", or "any"), gpu_memory_gb, gpus, cpus, memory_gb, spot (prefer, only or never), providers (a list), regions (a list), max_price (USD per hour)
planbooleannofalseonly return where it would go and at what price
onstring or nullnononesame as to
gpu_fallbackone of `none`, `same_provider`, `any` or nullnononewhat Portal does when the GPU asked for (on, or a move's to) is not scheduled within its bounded wait (5 min on Modal): same_provider runs on that provider's cheapest other GPU of the job's size, any on any connected provider's; none, the default, ends the run (or leaves a move unmade) with the choices for the person to pick from. An event names what was asked, what runs instead and the price difference
waitnumberno0seconds to wait for the move's outcome, at most 15; 0 returns once it is accepted

stop

Stop a job; its machine is terminated.

ParameterTypeRequiredDefaultWhat it is
jobstringyesa job id, a unique start of one, or a job name

suspend

Suspend a job: its state is parked in storage and its machine terminated; resume continues it.

ParameterTypeRequiredDefaultWhat it is
jobstringyesa job id, a unique start of one, or a job name

resume

Resume a suspended job from its checkpoint when you or the user choose; on selects an exact destination.

ParameterTypeRequiredDefaultWhat it is
jobstringyesa job id, a unique start of one, or a job name
onstring or nullnononeexactly here instead of the best offer

audit

Everything Portal runs across providers. When work is done leaks, untracked (Portal machines no controller tracks) and unlistable (providers that could not be listed, so not checked) must be empty, and no resource's state unknown.

ParameterTypeRequiredDefaultWhat it is
fixbooleannofalseterminate leaked resources, then audit again

connections

Connected providers with their methods and fields, caps, states and setup, and the names of stored secrets (never values). quota_guidance describes the checks and provider request paths to help make a connected account usable; quotas remain unchecked until read from that account for the intended workload.

No parameters.

connect

Add a cloud connection or update one (its credentials, region or cap): the controller verifies the credentials with the provider, keeps them as the method's stored text in connections says (sealed for a token or key; nothing replayable for an AWS role or a federated identity) and sets up what the provider needs. Prefer each cloud's recommended_method, and tell the person how the values are kept before saving. Returns the connection as connections lists it, never a value, with notes when the save's check said something to tell the person (Google Cloud: private networking chosen because the organization's policy denies external IPs, or that policy unreadable; Modal: no environment named, so the connection uses Modal's default environment main). Prefer from_env or file for the credentials; with file, the import's result (imported, secrets, unknown, failed, and notes by connection name) comes with it.

ParameterTypeRequiredDefaultWhat it is
providerstringyesa connection name: aws, aws.research, azure.lab, gcp.research, modal, lambda, local or machine.box
methodstring or nullnononehow to connect, one of the methods connections lists for it (default: the one the fields given fit, or its current one)
cap_usdnumber or nullnononespend cap in USD for every machine the connection runs: machines whose worst case would cross it are refused (optional: new connections have no cap unless set; an update keeps the existing cap)
regionstring or nullnononethe method's region or location field (aws keys: region; azure: location); refused for a method without one. Jobs choose any region unless their requirements name regions
from_envobject of string or array of string or nullnononeenvironment variables of the MCP server's own process that hold the method's values, read here so that the values never pass through the model: a list of names, each naming its field by its ending (AWS_ACCESS_KEY_ID is access_key_id, MODAL_TOKEN_SECRET is token_secret, LAMBDA_API_KEY is api_key), or {field: VARIABLE}
filestring or nullnononea KEY=value secrets file on the MCP server's machine (AWS_ACCESS_KEY_ID, MODAL_TOKEN_ID, AZURE_CLIENT_SECRET, PORTAL_SECRET_NAME, ...), imported by the controller; it connects every provider it names and its values never pass through the model. Not with method, values or from_env
valuesobject of string or nullnononethe method's fields as plain values ({"api_key": ...}): the last resort, since they pass through the model and the chat; prefer from_env or file. Secret fields left out keep their stored values

detect_compute

The cloud CLIs installed and signed in on this machine (aws, az, modal, Lambda's key in LAMBDA_API_KEY, gcloud, kubectl, e2b): for each, who it is signed in as (identity), whether Portal can connect it from here (connectable, checked against the controller in use) and what to do (how), and connectable, the providers connect_from_cli can connect. Read-only: nothing is created, and no credential is read or returned.

ParameterTypeRequiredDefaultWhat it is
ssh_hostsbooleannofalse

connect_from_cli

Connect a cloud with the login of its CLI on this machine, by each cloud's recommended method unless told otherwise (AWS: a role in the person's account that the controller assumes, with Portal's policy, nothing stored that a thief could use, or an IAM user and key with keys=true; Azure: a federated credential on an app Contributor on the resource group soma only, or a client secret with secret=true; Google Cloud: the approved keyless federation when the controller offers it (federated=true requires it), else or with keys=true a service account key; Modal: a token the person approves on modal.com; Lambda: the key in LAMBDA_API_KEY), saved on the controller and never shown. Every plan's steps say how the values are kept; say that to the person. Without confirm nothing is created: it returns who the CLI is signed in as and the steps (status confirm); show them to the person and pass confirm=true, with the same options, only after they agreed. confirm=true runs exactly the steps the last call showed: when the plan made again then differs (another account signed in since, other options, or no steps shown yet), it creates nothing and returns the new steps (status confirm, changed) to show instead. Then it returns status connected with the connection, or for Modal pending with the approval page (opened in the browser): call again until connected.

ParameterTypeRequiredDefaultWhat it is
providerstringyesthe cloud to connect from its CLI's login: aws, azure, gcp, modal or lambda
profilestring or nullnononeaws: the AWS CLI profile to use
subscriptionstring or nullnononeazure: the subscription, by name or id (default: az's current one)
projectstring or nullnononegcp: project ID (default: gcloud's selected project)
networkstring or nullnononegcp: existing network name or resource path; omitting creates or validates soma-net
subnetworkstring or nullnononegcp: existing subnetwork resource path in the chosen region; requires network
private_networkboolean or nullnononegcp: omit external IPs; the existing network must supply Cloud NAT or another outbound path
federatedbooleannofalsegcp: pair an operator-approved AWS Workload Identity Federation binding (the default whenever the controller offers one); creates no service account key
keysbooleannofalseaws or gcp: make a dedicated IAM user and access key (AWS) or a service account key (Google Cloud), sealed on the controller, instead of the default keyless method (the role the controller assumes, the approved federation), which stores nothing a thief could use
secretbooleannofalseazure: make a client secret (sealed on the controller) instead of the default federated credential, which stores nothing a thief could use
regionstring or nullnononeaws or gcp: the connection's region (GCP defaults to us-central1)
locationstring or nullnononeazure: where the resource group soma goes (default eastus)
cap_usdnumber or nullnononespend cap in USD for every machine the connection runs: machines whose worst case would cross it are refused (optional: new connections have no cap unless set; an update keeps the existing cap)
confirmbooleannofalsetrue only after the person agreed in the chat to the steps an earlier call without confirm returned: they create things in the person's own cloud account. Without it nothing is created, and with it only the steps last shown run (other steps come back to show instead)
connectionstring or nullnonone

disconnect

Remove a connection: its stored credentials are deleted. Refused (409) while machines run at its providers, since its credentials are what terminates them: stop or suspend their jobs first.

ParameterTypeRequiredDefaultWhat it is
providerstringyesa connection name: aws, aws.research, azure.lab, gcp.research, modal, lambda, local or machine.box

set_cap

Change a connected provider's spend cap and nothing else: its credentials stay and are not verified again.

ParameterTypeRequiredDefaultWhat it is
providerstringyesa connection name: aws, aws.research, azure.lab, gcp.research, modal, lambda, local or machine.box
cap_usdnumberyesthe spend cap in USD, 0 or more, for every machine the connection runs

context

Start here for Portal questions: the console's current overview, usage, connections, settings, machines and identity, plus an optional run/project focus. Includes controller, scopes, source endpoints, UTC observation window, per-section errors, array truncation and a guide to querying details. Reads existing grants only; no live provider audit, CLI detection or mutations. This is an observation window, not an atomic snapshot; refresh before actions. Browser selection and unsaved edits are not sent.

ParameterTypeRequiredDefaultWhat it is
jobstring or nullnononefocus on this run's details and decisions
projectstring or nullnononealso list this project's runs
daysone of `0`, `1`, `7`, `30`, `90`, `365`no30
limitintegerno20maximum items per array; omissions are explicit, use the drill-down tools for more

access

Current controller/workspace identity and scopes, plus accessible account, token/session and invite metadata. Each section names its source and any denial or unsupported route. Reads use this credential's existing permissions; gateway console-only reads remain unavailable. No token values, hashes, invite codes or browser-shared Clusy identity are returned. Token and invite lists are independently paged, with total and next_offset; a live listing can shift as records are added.

ParameterTypeRequiredDefaultWhat it is
limitintegerno20maximum metadata rows per array
offsetintegerno0rows to skip in token/invite lists; use next_offset

jobs

Runs newest first, with project, state, estimated cost, signed saving, progress and current machine. Pages the controller's listing, normally its newest 500 runs (before filtering by state). This is not all-time history; use status with an exact older job id for its detail. next_offset pages this live listing, which can shift when runs are added. status() gives all-time aggregate money and projects.

ParameterTypeRequiredDefaultWhat it is
projectstring or nullnononeonly this project's runs
statusone of `queued`, `provisioning`, `starting`, `running`, `moving`, `suspending`, `suspended`, `resuming`, `finished`, `failed`, `stopped`, `no_capacity` or nullnonone
limitintegerno50maximum rows returned, from 1 to 500
offsetintegerno0rows to skip within the current listing; use next_offset

delete_jobs

Delete ended jobs from the person's history: they leave every listing and lookup, and their costs and savings still count. Only ended jobs go; running or suspended ones are refused. Without confirm nothing is deleted: it returns the plan (status confirm): how many go and their ids, which of them could still be continued from checkpoints kept after an end Portal decided (deleted, they can no longer be continued: say so to the person), and what is refused. Show it, and call again with the same arguments and confirm=true only after the person agreed. When the jobs changed since the plan was shown, nothing is deleted and the new plan comes back to show instead.

ParameterTypeRequiredDefaultWhat it is
jobsarray of string or nullnononethe jobs to delete: ids, unique starts of ids, or names
endedbooleannofalseevery ended job instead of named ones; project and before narrow it
projectstring or nullnononewith ended: only this project's jobs
beforenumber or nullnononewith ended: only jobs created before this time, in seconds since the epoch
confirmbooleannofalsetrue only after the person agreed in the chat to the plan an earlier call without confirm returned, with the same arguments: it deletes exactly that plan

usage

The Usage page: spend per UTC day and connection, caps, live machines, project breakdown and totals. Money is USD and rate_per_hour is USD/hour. Daily estimated spend is clipped to the requested period; project savings cover runs created in it and their lifetime estimates, so their cost can differ from daily spend. Savings are against one machine for the whole job (without_portal_v2), never negative: saved_usd, baseline_usd, comparison_cost_usd (their Paid) and breakdown (spot, cheaper machines, preserved, rescues, with the overhead beside them) sum the runs with an available figure; unavailable_comparisons and not_applicable_comparisons count the runs left out, and historical_comparisons the included ones reckoned from older records. savings_status is available, partial (some left out), unavailable or not_applicable. saved_usd is signed; null is never zero. saved_pct is a fraction (0.32 means 32%); null when the baseline is not positive. These are not provider invoices. totals.deleted_runs and deleted_usd are the runs deleted from the history in the period and what they cost: out of every listing, still in spent_usd and counted toward the spend caps. Providers are named connections, such as aws.research, not interchangeable accounts.

ParameterTypeRequiredDefaultWhat it is
daysone of `0`, `1`, `7`, `30`, `90`, `365`no30UTC calendar days including today; 0 means all available history

samples

A run's recorded system and progress chart points, oldest first: CPU percent, RSS bytes, GPU utilization/memory and progress when reported. next is a time cursor, not a row count; repeat with since=next until a page is empty to read the history, and poll again for new points. Missing metrics are unknown, not zero. Each call returns at most limit points; status(job) includes the latest metrics and machine history.

ParameterTypeRequiredDefaultWhat it is
jobstringyesa job id, a unique start of one, or a job name
sincenumberno0Unix seconds, exclusive; use the previous response's next, initially 0
limitintegerno250maximum rows returned, from 1 to 500

events

Run or controller event history, oldest first, including moves, failures and changes. next is an event id; repeat with since=next until an empty page, then poll for new events. Unlike status(job)'s recent events, this can read the whole retained event history. explain(job) gives structured policy decisions.

ParameterTypeRequiredDefaultWhat it is
jobstring or nullnononeonly this run; otherwise controller events
sinceintegerno0event id, exclusive; use the previous response's next, initially 0
limitintegerno100maximum rows returned, from 1 to 500

machines

The Machines page and Connections' own machines: current runtimes with lease, rate and job, node connectivity/version/last_seen, and enrolled machines with approval, reported hardware and privilege. Each list is paged independently with limit and offset; pagination gives each list's next_offset. Missing older-controller endpoints are explicitly unavailable. connected=null means unknown, not offline. Portal stops its runs on an own machine, never that machine itself; an unset own-machine price is unknown.

ParameterTypeRequiredDefaultWhat it is
machinestring or nullnononean enrolled machine's id for its detail; omit for all runtime machines, node health and own machines
limitintegerno100maximum rows returned, from 1 to 500
offsetintegerno0rows to skip within the current listing; use next_offset

settings

Read the Settings page's effective controller defaults: policies, baseline provider, fast path, capsule encryption, node images and measured provider grace. This changes nothing. A run's requirements and policy overrides are in status(job); project/command overrides apply over these defaults. This does not list credentials, token values, browser identity preferences or account access grants.

No parameters.

machine_command

Get an enrollment command for the person to run. With host, give an SSH CLI command; never execute SSH. The person approves the machine in Portal with its printed pairing code before any job can run there.

ParameterTypeRequiredDefaultWhat it is
namestring or nullnonone
hoststring or nullnonone

remove_machine

Remove an unused enrolled machine. Stop or suspend its runs first; Portal never powers off the host.

ParameterTypeRequiredDefaultWhat it is
machinestringyes

On this page