CLI

Install the command-line client, sign in, and call any operation from your terminal or a script.

Docs menu
npm install -g @substrio/cli

Run it once without installing with npx @substrio/cli <command>.

Sign in and profiles

Save a key once and every later command reuses it:

substrio login --url https://acme.example.com --key - --tenant acme < app.key

--key - reads the key from stdin, never from argv or shell history. Without --url, login saves a profile for the hosted platform, https://mcp.substrio.com. The profile is saved to ~/.substrio/config.toml (owner-only, mode 0600); set SUBSTRIO_CONFIG_DIR to move it. --profile NAME saves under a name other than the default; the default changes only with --default, or when there is none yet. login --list shows saved profiles, login --remove NAME deletes one. login --offline ... --tenant SLUG saves a profile with no round trip to the server, marked unchecked until a later login without --offline confirms it.

An agent given a one-time connect code (substrio_ae_..., from the console's Agents page) redeems it with:

substrio connect - < code.txt          # or: substrio connect substrio_ae_...

One request, POST /v1/_agent/exchange, against https://mcp.substrio.com unless --url names another server. The session acts as the code's owner; it is saved as profile agent (--profile NAME for another, --default to make it the default) in the same owner-only file, and the MCP setup is printed. Neither the code nor the secret is printed, except with --show: stdout then holds the secret alone, for $(...) in an MCP client's setup command (agent-sessions.md). A spent or expired code exits with AGENT_CODE_INVALID.

Check what is in effect, and where each value came from, with:

substrio whoami

Each run resolves the server URL, the key and the app in this order, highest priority first:

  1. Environment variables: SUBSTRIO_URL and SUBSTRIO_TENANT (also set by the --tenant flag). The key always comes from a saved profile.
  2. substrio.toml in the current directory (the project file substrio init writes).
  3. The saved profile named by SUBSTRIO_PROFILE, --profile, or profile in substrio.toml.
  4. The profiles file's default_profile.

Global flags

These are parsed wherever they appear on the command line, and removed before the command sees its own arguments:

Flag Effect
--help, -h Print the command's usage and exit 0. Nothing runs.
--json Print results as JSON on stdout, and errors as JSON on stderr.
--yes, -y Confirm a destructive command without asking.
--profile NAME Use the saved profile NAME for this run.
--tenant SLUG Talk to the app SLUG for this run.
--version, -v Print the CLI version.
-- Everything after it belongs to the command, not to global flag parsing.

A destructive command with no --yes and no terminal to ask on (including any run under --json) refuses with exit code 9.

Calling any operation

Every operation the server exposes, including ones with no dedicated subcommand, runs with:

substrio op NAME key=value key2=value2

For example:

substrio op collection.create name=orders
substrio op data.insert collection=orders data='{"total": 42}'
  • key=value sets one field; dotted keys nest (data.total=42 sets data: {total: 42}). A value that parses as JSON (a number, true, false, null, a quoted string, an array or object) is sent as that type; anything else is sent as a string.
  • --data '{...}' sends a whole JSON body instead of (or in addition to) key=value fields.
  • --file PATH reads the body from a file (- for stdin).
  • Route path parameters ({id} in the operation's route) come from positional arguments, in order, before any key=value.

substrio op prints the operation's JSON result. substrio call is the same command under another name.

JSON output

Pass --json on any command to get machine-readable output instead of the human-readable default:

substrio op collection.list --json

Every result is JSON on stdout; every error is a JSON object on stderr with error, code and, where the server sent one, detail. A command that streams records (substrio data import, substrio logs --follow) writes one JSON object per line (NDJSON) under --json.

Exit codes

Code Meaning
0 Success.
1 Failure (anything not listed below).
2 Usage: bad arguments or input.
3 Auth: no credentials, or refused.
4 Not found.
5 Conflict: it exists already, or changed meanwhile.
6 Server error (5xx).
7 Network: the server could not be reached.
8 Partial: a bulk operation stored some documents and refused others.
9 Confirm: a destructive command needs --yes (no terminal to ask on, or --json).

Script against these codes instead of parsing error text: substrio op data.get collection=orders id=1 --json || exit $? exits 4 when the order does not exist, 3 when the key is refused.

Command reference

Every command substrio --help lists, by section. Run substrio COMMAND --help for one command.

Start

CommandWhat it doesNeeds
substrio init [--url URL] [--tenant SLUG] [--yes]Scaffold a project (substrio.toml holds no key; the key lives in a profile)Nothing
substrio signup --url URL --tenant SLUG [--email E] [--code CODE | --password -] [--account NAME] [--save-profile NAME] [--print]An outside developer or agent, no master key: the email is proven by a mailed code (without --code it sends one and says the next command), then an account and its first key, saved as a profile like "substrio login" doesNothing
substrio login [--url URL] --key - [--tenant SLUG] [--profile NAME] [--default]Save a profile; the key from stdin, the tenant found from it, the server https://mcp.substrio.com unless --url names another. Without --profile it is the default; with --profile the default changes only with --default (or when there is none)Nothing
substrio login --offline --url URL --tenant SLUG --key - [--profile NAME] [--default]Saves the profile with no round trip (the server need not be up yet); --tenant is required, the profile is marked unchecked until a login without --offline saves it again
substrio login --list | --remove NAMEList or remove saved profiles
substrio connect CODE|- [--url URL] [--profile NAME] [--default] [--show]An agent redeems the one-time connect code (substrio_ae_...) from the console's Agents page: the session that acts as its owner is saved as profile NAME (default agent), owner-only, and the MCP setup is printed. The secret is never printed, except with --show: stdout then carries it alone, for $(...) in an MCP client's setupNothing
substrio whoamiTenant, server and profile in use, and where each came fromA project or profile
substrio statusServer health and configA server URL
substrio openOpen the server in a browserA project or profile
substrio skills listThe server's agent skills: name, title, descriptionA server URL
substrio skills show NAMEOne skill's markdown
substrio skills install [NAME...] [--for claude|cursor|codex|agents-md|all] [--dir DIR]Write skills (default: every one) where each client reads its own (default --for all, --dir the project root)
substrio key rotate [--overlap 1h] [--expires-in 90d] [--print]Replace the tenant key; saved to the profileDepends on the arguments
substrio key listThe tenant keys: ids, created, expires, state
substrio key revoke IDEnd the previous key overlap now
substrio key export --env FILE [--var NAME] [--force]Write NAME=KEY (default SUBSTRIO_KEY) of the key in use to FILE, owner-only, never printed; for an MCP client config

Apps

CommandWhat it doesNeeds
substrio tenants list | show SLUGEvery tenant; one tenant (platform-admin key)A server URL and a key
substrio tenants create SLUG [--save-profile N] [--print]Create a tenant; its key is saved to profile N
substrio tenants delete SLUG --yesDelete a tenant and all its data
substrio tenants WORD ... [ARG ...] [key=value ...]any app.*, apps.*, tenant.* operation by its words (app.a.b: tenants a b)
substrio pull (--for PROFILE | --seal-to PUBKEY) [--out FILE]Stream the app's bundle, sealed to one server's keyA server URL and a key
substrio push-bundle FILE --to PROFILE [--slug S] [--replace]Stream a bundle into PROFILE's server as an appNothing
substrio move --to PROFILE [--slug S] [--replace] [--save-profile NAME]Pipe the app, sealed, into PROFILE's serverA server URL and a key
substrio move --live --to PROFILEMove the app to PROFILE's server while it takes writes: copy, follow, fence, drain, flip (both profiles hold their server's master key; a failed drain rolls back)
substrio move --failover --to PROFILEPROFILE's server, a replica of the app, takes its writes because this profile's server no longer answers (one that answers is moved live instead)

Ship

CommandWhat it doesNeeds
substrio push [-m MSG] [--branch NAME] [--no-build] [--dry-run] [--sandbox NAME]Build, upload a new version (functions, rules, collections, site), run it in dev; --branch commits it on that branch of the history instead of mainDepends on the arguments
substrio promote [N] [--no-backup]Make N live (default: what dev runs); the data is backed up firstA server URL and a key
substrio rollback [--no-backup]Make the version before live live againA server URL and a key
substrio restore [BACKUP_ID] [--yes] [--wait S]Put the data back from a promote's backupA server URL and a key
substrio versionsList versions: which is live, what each sandbox runs, each backupA server URL and a key
substrio versions WORD ... [ARG ...] [key=value ...]any version.* operation by its words (version.a.b: versions a b)
substrio diff [A] [B]What changed (default: live to dev)A server URL and a key
substrio deploy [NAME...] [--dry-run] [--prune]Make the declared collections (collections/NAME.json: schema, rules, indexes, expire, aggregates), deploy functions (routes, vars from substrio.toml) and set the rules. Reports a server declaration the files no longer name (drift); --prune drops it. With one or more NAME, only those functions are built and replaced: nothing else is read or sent (--prune, --functions and --assets are refused with names)A server URL and a key
substrio site deploy DIRPublish a website as a release (uploads only changes)A server URL and a key
substrio site releases | activate RELEASE_IDList releases; serve an earlier one
substrio site WORD ... [ARG ...] [key=value ...]any site.* operation by its words (site.a.b: site a b)
substrio env pull | pushSync secrets with a .env fileA server URL and a key
substrio env WORD ... [ARG ...] [key=value ...]any env.* operation by its words (env.a.b: env a b)
substrio files ls [PATH] | upload LOCAL [REMOTE] | rm PATHStatic filesA server URL and a key
substrio files sync LOCAL_DIR PREFIX [--concurrency N]Upload every file of a folder the store lacks or holds at another size, N at a time
substrio files WORD ... [ARG ...] [key=value ...]any file.* operation by its words (file.a.b: files a b)
substrio logs [--limit N] [--since D|T] [--until D|T] [--function NAME] [--request-id ID] [--level LEVEL]Cloud function logs; D is a duration ago (30s, 5m, 1h) or T a Unix-second/ISO timestampA server URL and a key
substrio logs --follow (--for D | --lines N | --until-match TEXT)Tails them live over a WebSocket until the given stop is met (ends exit 0); required with no terminal or under --json; on a terminal with none given, Ctrl+C stops it

History

CommandWhat it doesNeeds
substrio branchThe app's branches: the version each points at, when it last moved, whether it is protected (branch.list)A server URL and a key
substrio branch create NAME [--from REF]Make a branch at REF (a branch name or a version id; default: the main branch's head)
substrio branch delete NAME [--yes]Free a branch's name; its versions and its log are kept (substrio ref restore branch NAME puts it back)
substrio branch protect NAME [--off] [--checks A,B]A commit or merge onto NAME needs those checks green; --off unprotects it
substrio branch WORD ... [ARG ...] [key=value ...]any branch.* operation by its words (branch.a.b: branch a b)
substrio log [PATH] [--branch NAME] [--limit N]The commits of a branch, newest first; with PATH, only the commits that changed that one unit (version.log). Function logs are substrio logsA server URL and a key
substrio tagThe app's tags: the version each marks (tag.list)A server URL and a key
substrio tag NAME [VERSION] [--branch NAME]Mark a version with a name that never moves again (default: the head of main, or of --branch)
substrio tag WORD ... [ARG ...] [key=value ...]any tag.* operation by its words (tag.a.b: tag a b)
substrio merge FROM [--into NAME]Work out the merge of FROM into a branch (default: main) and keep it as that branch's draft; publishes nothing (merge.plan)A server URL and a key
substrio merge status [--into NAME]The merge in hand: both sides, every unit it touched and what is still conflicted (merge.get)
substrio merge resolve PATH (--file F | --text T | -) [--into NAME]Settle one conflicted unit with these bytes (merge.resolve)
substrio merge commit [-m MSG] [--into NAME] [--checks-green]Publish the merge as one commit on the branch (merge.commit)
substrio merge abort [--into NAME] [--yes]Throw the merge in hand away; the branch never moved (merge.abort)
substrio merge WORD ... [ARG ...] [key=value ...]any merge.* operation by its words (merge.a.b: merge a b)
substrio gc [--yes]Erase every object of the app's history no branch, tag, environment, ref log or merge reaches (version.gc)A server URL and a key
substrio gc --dry-run | --statusWhat a collection would take, erasing nothing; or where the last one got to (version.gc.status)

Any operation

CommandWhat it doesNeeds
substrio op list [FILTER]Every operation of the server: name, route, summaryA server URL and a key
substrio op NAME --helpIts routes and input schema (read from the server)
substrio op NAME [key=value ...] [--data '{...}' | --file F]Call it; prints JSON
substrio invoke NAME [key=value ...] [--data '{...}']Call a cloud function; --data or key=value is its JSON event (none: {}) (function.invoke; substrio op function.invoke --help for its input)A server URL and a key
substrio undo TOKENUndo a change by its undo_token (null means nothing to undo); prints the token that redoes it (undo; substrio op undo --help for its input)A server URL and a key

Registry groups

CommandWhat it doesNeeds
substrio data list [ARG ...] [key=value ...]data.listDepends on the arguments
substrio data get [ARG ...] [key=value ...]data.get
substrio data insert [ARG ...] [key=value ...]data.insert: --data '{...}' (or --file F, or key=value) is the document itself, no wrapper
substrio data update [ARG ...] [key=value ...]data.update
substrio data delete [ARG ...] [key=value ...]data.delete
substrio data rm [ARG ...] [key=value ...]data.delete
substrio data query [ARG ...] [key=value ...]data.query
substrio data count [ARG ...] [key=value ...]query.count: where.FIELD=VALUE (or --data '{"where":{...}}') filters it as in data query
substrio data aggregate [ARG ...] [key=value ...]query.aggregate
substrio data import [ARG ...] [key=value ...]data.import: --file F (NDJSON .ndjson/.jsonl, a JSON array, {"documents":[...]} or --format csv; - is stdin), streamed and sent in batches (--batch-bytes, --batch-docs, --concurrency); --checkpoint and --resume survive a crash; each rejected document is reported
substrio data export [ARG ...] [key=value ...]data.export
substrio data WORD ... [ARG ...] [key=value ...]any data.*, query.* operation by its words (data.a.b: data a b)
substrio collections list [ARG ...] [key=value ...]collection.listDepends on the arguments
substrio collections create NAME [ARG ...] [key=value ...]collection.create
substrio collections delete [ARG ...] [key=value ...]collection.delete
substrio collections rm [ARG ...] [key=value ...]collection.delete
substrio collections stats [ARG ...] [key=value ...]collection.stats
substrio collections schema [ARG ...] [key=value ...]schema.get
substrio collections WORD ... [ARG ...] [key=value ...]any collection.*, schema.* operation by its words (collection.a.b: collections a b)
substrio functions list [ARG ...] [key=value ...]function.listDepends on the arguments
substrio functions get [ARG ...] [key=value ...]function.get
substrio functions invoke [ARG ...] [key=value ...]function.invoke
substrio functions delete [ARG ...] [key=value ...]function.delete
substrio functions rm [ARG ...] [key=value ...]function.delete
substrio functions toggle [ARG ...] [key=value ...]function.toggle
substrio functions source [ARG ...] [key=value ...]function.source.read
substrio functions logs [ARG ...] [key=value ...]function.logs
substrio functions WORD ... [ARG ...] [key=value ...]any function.* operation by its words (function.a.b: functions a b)
substrio secrets list [ARG ...] [key=value ...]secret.listDepends on the arguments
substrio secrets set [ARG ...] [key=value ...]secrets set KEY: the value from stdin (or -), --from-file PATH, or --from-env NAME; never a plain argument
substrio secrets delete KEY [ARG ...] [key=value ...]secret.delete
substrio secrets rm KEY [ARG ...] [key=value ...]secret.delete
substrio secrets WORD ... [ARG ...] [key=value ...]any secret.* operation by its words (secret.a.b: secrets a b)
substrio cron list [ARG ...] [key=value ...]schedule.listDepends on the arguments
substrio cron create [ARG ...] [key=value ...]schedule.create
substrio cron update [ARG ...] [key=value ...]schedule.update
substrio cron enable [ARG ...] [key=value ...]schedule.update
substrio cron disable [ARG ...] [key=value ...]schedule.update
substrio cron delete [ARG ...] [key=value ...]schedule.delete
substrio cron rm [ARG ...] [key=value ...]schedule.delete
substrio cron WORD ... [ARG ...] [key=value ...]any schedule.* operation by its words (schedule.a.b: cron a b)
substrio triggers list [ARG ...] [key=value ...]trigger.listDepends on the arguments
substrio triggers create [ARG ...] [key=value ...]trigger.create
substrio triggers update [ARG ...] [key=value ...]trigger.update
substrio triggers enable [ARG ...] [key=value ...]trigger.update
substrio triggers disable [ARG ...] [key=value ...]trigger.update
substrio triggers delete [ARG ...] [key=value ...]trigger.delete
substrio triggers rm [ARG ...] [key=value ...]trigger.delete
substrio triggers WORD ... [ARG ...] [key=value ...]any trigger.* operation by its words (trigger.a.b: triggers a b)
substrio domains list [ARG ...] [key=value ...]tenant.domain.listDepends on the arguments
substrio domains add DOMAIN [ARG ...] [key=value ...]tenant.domain.attach
substrio domains remove [ARG ...] [key=value ...]tenant.domain.detach
substrio domains rm [ARG ...] [key=value ...]tenant.domain.detach
substrio rules get [ARG ...] [key=value ...]security.rules.getDepends on the arguments
substrio rules set [ARG ...] [key=value ...]security.rules.set
substrio rules delete [ARG ...] [key=value ...]security.rules.delete
substrio rules WORD ... [ARG ...] [key=value ...]any security.* operation by its words (security.a.b: rules a b)
substrio permissions get [ARG ...] [key=value ...]permissions.getDepends on the arguments
substrio permissions set [ARG ...] [key=value ...]permissions.set
substrio permissions grant [ARG ...] [key=value ...]permissions grant USER_ID NAME ...: grants that user those declared permissions (user.permissions.set); effective at their next sign in
substrio permissions revoke [ARG ...] [key=value ...]permissions revoke USER_ID NAME ...: revokes those declared permissions (user.permissions.set); ends the user's sessions now if any was actually held
substrio permissions show [ARG ...] [key=value ...]permissions show USER_ID: that user's granted and effective declared permission names
substrio permissions WORD ... [ARG ...] [key=value ...]any permissions.* operation by its words (permissions.a.b: permissions a b)
substrio memberships grant [ARG ...] [key=value ...]memberships grant USER_ID NAME ... --in COLLECTION:ID: grants that user those declared permissions in the named organization (user.memberships.set); the gate reads it from the next requestDepends on the arguments
substrio memberships revoke [ARG ...] [key=value ...]memberships revoke USER_ID NAME ... --in COLLECTION:ID: revokes those declared permissions in the named organization (user.memberships.set); holds from the next request, no session is ended
substrio memberships show [ARG ...] [key=value ...]memberships show USER_ID [--in COLLECTION:ID]: that organization's held names, or every organization held when --in is omitted
substrio sandbox list [ARG ...] [key=value ...]sandbox.listDepends on the arguments
substrio sandbox create NAME [ARG ...] [key=value ...]sandbox.create
substrio sandbox reset [ARG ...] [key=value ...]sandbox.reset
substrio sandbox delete [ARG ...] [key=value ...]sandbox.delete
substrio sandbox rm [ARG ...] [key=value ...]sandbox.delete
substrio sandbox outbox [ARG ...] [key=value ...]sandbox.outbox
substrio sandbox allow [ARG ...] [key=value ...]sandbox.allow.list
substrio sandbox allow add [ARG ...] [key=value ...]sandbox.allow.add
substrio sandbox allow remove [ARG ...] [key=value ...]sandbox.allow.remove
substrio sandbox WORD ... [ARG ...] [key=value ...]any sandbox.* operation by its words (sandbox.a.b: sandbox a b)
substrio webhooks list [ARG ...] [key=value ...]webhook.listDepends on the arguments
substrio webhooks get [ARG ...] [key=value ...]webhook.get
substrio webhooks show [ARG ...] [key=value ...]webhook.get
substrio webhooks create [ARG ...] [key=value ...]webhook.create
substrio webhooks update [ARG ...] [key=value ...]webhook.update
substrio webhooks delete [ARG ...] [key=value ...]webhook.delete
substrio webhooks rm [ARG ...] [key=value ...]webhook.delete
substrio webhooks logs [ARG ...] [key=value ...]webhook.logs
substrio webhooks WORD ... [ARG ...] [key=value ...]any webhook.* operation by its words (webhook.a.b: webhooks a b)
substrio views list [ARG ...] [key=value ...]view.listDepends on the arguments
substrio views data [ARG ...] [key=value ...]view.get
substrio views get [ARG ...] [key=value ...]view.get
substrio views create [ARG ...] [key=value ...]view.create
substrio views update [ARG ...] [key=value ...]view.update
substrio views delete [ARG ...] [key=value ...]view.delete
substrio views rm [ARG ...] [key=value ...]view.delete
substrio views refresh [ARG ...] [key=value ...]view.refresh
substrio views WORD ... [ARG ...] [key=value ...]any view.* operation by its words (view.a.b: views a b)
substrio backups list [ARG ...] [key=value ...]backup.listDepends on the arguments
substrio backups get [ARG ...] [key=value ...]backup.get
substrio backups show [ARG ...] [key=value ...]backup.get
substrio backups create [ARG ...] [key=value ...]backup.create
substrio backups restore [ARG ...] [key=value ...]backup.restore
substrio backups delete [ARG ...] [key=value ...]backup.delete
substrio backups rm [ARG ...] [key=value ...]backup.delete
substrio backups WORD ... [ARG ...] [key=value ...]any backup.* operation by its words (backup.a.b: backups a b)
substrio accounts list [ARG ...] [key=value ...]account.listDepends on the arguments
substrio accounts show [ARG ...] [key=value ...]account.get
substrio accounts get [ARG ...] [key=value ...]account.get
substrio accounts members [ARG ...] [key=value ...]account.member.list
substrio accounts keys [ARG ...] [key=value ...]account.key.list
substrio accounts apps [ARG ...] [key=value ...]account.app.list
substrio accounts keys list [ARG ...] [key=value ...]account.key.list
substrio accounts keys create [ARG ...] [key=value ...]account.key.create
substrio accounts keys revoke [ARG ...] [key=value ...]account.key.revoke
substrio accounts invite [ARG ...] [key=value ...]account.invite.create
substrio accounts invites [ARG ...] [key=value ...]account.invite.list
substrio accounts revoke [ARG ...] [key=value ...]account.invite.revoke
substrio accounts role [ARG ...] [key=value ...]account.member.set
substrio accounts remove [ARG ...] [key=value ...]account.member.remove
substrio accounts attach-app ACCOUNT_ID [ARG ...] [key=value ...]account.app.attach
substrio accounts WORD ... [ARG ...] [key=value ...]any account.* operation by its words (account.a.b: accounts a b)
substrio platform settings [ARG ...] [key=value ...]platform.settings.getDepends on the arguments
substrio platform settings get [ARG ...] [key=value ...]platform.settings.get
substrio platform settings set VALUE [ARG ...] [key=value ...]platform.setting.set
substrio platform WORD ... [ARG ...] [key=value ...]any platform.* operation by its words (platform.a.b: platform a b)
substrio tools list [ARG ...] [key=value ...]tool.listDepends on the arguments
substrio tools remove NAME VERSION [ARG ...] [key=value ...]tool.remove
substrio tools install [ARG ...] [key=value ...]tools install NAME FILE|-: streams the file once to hash it (sha256) and once as the PUT body (- is stdin, buffered to an owner-only temp file first, removed after)
substrio tools WORD ... [ARG ...] [key=value ...]any tool.* operation by its words (tool.a.b: tools a b)
substrio ledger catalog [ARG ...] [key=value ...]ledger.catalog.getDepends on the arguments
substrio ledger declare [ARG ...] [key=value ...]ledger.catalog.set
substrio ledger post [ARG ...] [key=value ...]ledger.post
substrio ledger balance [ARG ...] [key=value ...]ledger.balance
substrio ledger entries [ARG ...] [key=value ...]ledger.entries
substrio ledger entry ID [ARG ...] [key=value ...]ledger.entry.get
substrio ledger clear ID [ARG ...] [key=value ...]ledger.entry.clear
substrio ledger void ID [ARG ...] [key=value ...]ledger.entry.void
substrio ledger reverse ID [ARG ...] [key=value ...]ledger.entry.reverse
substrio ledger clear-due [ARG ...] [key=value ...]ledger.clear_due
substrio ledger import [ARG ...] [key=value ...]ledger.import
substrio ledger WORD ... [ARG ...] [key=value ...]any ledger.* operation by its words (ledger.a.b: ledger a b)
substrio agent WORD ... [ARG ...] [key=value ...]any agent.* operation by its words (agent.a.b: agent a b)Depends on the arguments
substrio ai WORD ... [ARG ...] [key=value ...]any ai.* operation by its words (ai.a.b: ai a b)Depends on the arguments
substrio audit WORD ... [ARG ...] [key=value ...]any audit.* operation by its words (audit.a.b: audit a b)Depends on the arguments
substrio auth WORD ... [ARG ...] [key=value ...]any auth.* operation by its words (auth.a.b: auth a b)Depends on the arguments
substrio batch WORD ... [ARG ...] [key=value ...]any batch.* operation by its words (batch.a.b: batch a b)Depends on the arguments
substrio cluster WORD ... [ARG ...] [key=value ...]any cluster.* operation by its words (cluster.a.b: cluster a b)Depends on the arguments
substrio documentation WORD ... [ARG ...] [key=value ...]any documentation.* operation by its words (documentation.a.b: documentation a b)Depends on the arguments
substrio edge WORD ... [ARG ...] [key=value ...]any edge.* operation by its words (edge.a.b: edge a b)Depends on the arguments
substrio graph WORD ... [ARG ...] [key=value ...]any graph.* operation by its words (graph.a.b: graph a b)Depends on the arguments
substrio job WORD ... [ARG ...] [key=value ...]any job.* operation by its words (job.a.b: job a b)Depends on the arguments
substrio kv WORD ... [ARG ...] [key=value ...]any kv.* operation by its words (kv.a.b: kv a b)Depends on the arguments
substrio ref WORD ... [ARG ...] [key=value ...]any ref.* operation by its words (ref.a.b: ref a b)Depends on the arguments
substrio source WORD ... [ARG ...] [key=value ...]any source.* operation by its words (source.a.b: source a b)Depends on the arguments
substrio live_view WORD ... [ARG ...] [key=value ...]any live_view.* operation by its words (live_view.a.b: live_view a b)Depends on the arguments
substrio log_alert WORD ... [ARG ...] [key=value ...]any log_alert.* operation by its words (log_alert.a.b: log_alert a b)Depends on the arguments
substrio log_drain WORD ... [ARG ...] [key=value ...]any log_drain.* operation by its words (log_drain.a.b: log_drain a b)Depends on the arguments
substrio mcp config [ARG ...] [key=value ...]a ready MCP client config for this profile's app (--client claude|cursor|generic); the key as an environment variable referenceDepends on the arguments
substrio mcp WORD ... [ARG ...] [key=value ...]any mcp.* operation by its words (mcp.a.b: mcp a b)
substrio host WORD ... [ARG ...] [key=value ...]any host.* operation by its words (host.a.b: host a b)Depends on the arguments
substrio node_label WORD ... [ARG ...] [key=value ...]any node_label.* operation by its words (node_label.a.b: node_label a b)Depends on the arguments
substrio region WORD ... [ARG ...] [key=value ...]any region.* operation by its words (region.a.b: region a b)Depends on the arguments
substrio root_domain WORD ... [ARG ...] [key=value ...]any root_domain.* operation by its words (root_domain.a.b: root_domain a b)Depends on the arguments
substrio billing WORD ... [ARG ...] [key=value ...]any billing.* operation by its words (billing.a.b: billing a b)Depends on the arguments
substrio featured WORD ... [ARG ...] [key=value ...]any featured.* operation by its words (featured.a.b: featured a b)Depends on the arguments
substrio package WORD ... [ARG ...] [key=value ...]any package.* operation by its words (package.a.b: package a b)Depends on the arguments
substrio release WORD ... [ARG ...] [key=value ...]any release.* operation by its words (release.a.b: release a b)Depends on the arguments
substrio subscriptions WORD ... [ARG ...] [key=value ...]any subscriptions.* operation by its words (subscriptions.a.b: subscriptions a b)Depends on the arguments
substrio dashboard WORD ... [ARG ...] [key=value ...]any dashboard.* operation by its words (dashboard.a.b: dashboard a b)Depends on the arguments
substrio mesh WORD ... [ARG ...] [key=value ...]any mesh.* operation by its words (mesh.a.b: mesh a b)Depends on the arguments
substrio meta WORD ... [ARG ...] [key=value ...]any meta.* operation by its words (meta.a.b: meta a b)Depends on the arguments
substrio namespace WORD ... [ARG ...] [key=value ...]any namespace.* operation by its words (namespace.a.b: namespace a b)Depends on the arguments
substrio oauth WORD ... [ARG ...] [key=value ...]any oauth.* operation by its words (oauth.a.b: oauth a b)Depends on the arguments
substrio object WORD ... [ARG ...] [key=value ...]any object.* operation by its words (object.a.b: object a b)Depends on the arguments
substrio observability WORD ... [ARG ...] [key=value ...]any observability.* operation by its words (observability.a.b: observability a b)Depends on the arguments
substrio oidc WORD ... [ARG ...] [key=value ...]any oidc.* operation by its words (oidc.a.b: oidc a b)Depends on the arguments
substrio plans WORD ... [ARG ...] [key=value ...]any plans.* operation by its words (plans.a.b: plans a b)Depends on the arguments
substrio queue WORD ... [ARG ...] [key=value ...]any queue.* operation by its words (queue.a.b: queue a b)Depends on the arguments
substrio rag WORD ... [ARG ...] [key=value ...]any rag.* operation by its words (rag.a.b: rag a b)Depends on the arguments
substrio rate_limit WORD ... [ARG ...] [key=value ...]any rate_limit.* operation by its words (rate_limit.a.b: rate_limit a b)Depends on the arguments
substrio sql WORD ... [ARG ...] [key=value ...]any sql.* operation by its words (sql.a.b: sql a b)Depends on the arguments
substrio index WORD ... [ARG ...] [key=value ...]any index.* operation by its words (index.a.b: index a b)Depends on the arguments
substrio realtime WORD ... [ARG ...] [key=value ...]any realtime.* operation by its words (realtime.a.b: realtime a b)Depends on the arguments
substrio role WORD ... [ARG ...] [key=value ...]any role.* operation by its words (role.a.b: role a b)Depends on the arguments
substrio route WORD ... [ARG ...] [key=value ...]any route.* operation by its words (route.a.b: route a b)Depends on the arguments
substrio search WORD ... [ARG ...] [key=value ...]any search.* operation by its words (search.a.b: search a b)Depends on the arguments
substrio settings WORD ... [ARG ...] [key=value ...]any settings.* operation by its words (settings.a.b: settings a b)Depends on the arguments
substrio sync WORD ... [ARG ...] [key=value ...]any sync.* operation by its words (sync.a.b: sync a b)Depends on the arguments
substrio system WORD ... [ARG ...] [key=value ...]any system.* operation by its words (system.a.b: system a b)Depends on the arguments
substrio thread WORD ... [ARG ...] [key=value ...]any thread.* operation by its words (thread.a.b: thread a b)Depends on the arguments
substrio user WORD ... [ARG ...] [key=value ...]any user.* operation by its words (user.a.b: user a b)Depends on the arguments