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:
- Environment variables:
SUBSTRIO_URLandSUBSTRIO_TENANT(also set by the--tenantflag). The key always comes from a saved profile. substrio.tomlin the current directory (the project filesubstrio initwrites).- The saved profile named by
SUBSTRIO_PROFILE,--profile, orprofileinsubstrio.toml. - 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=valuesets one field; dotted keys nest (data.total=42setsdata: {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=valuefields.--file PATHreads the body from a file (-for stdin).- Route path parameters (
{id}in the operation's route) come from positional arguments, in order, before anykey=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
| Command | What it does | Needs |
|---|---|---|
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" does | Nothing |
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 NAME | List 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 setup | Nothing |
substrio whoami | Tenant, server and profile in use, and where each came from | A project or profile |
substrio status | Server health and config | A server URL |
substrio open | Open the server in a browser | A project or profile |
substrio skills list | The server's agent skills: name, title, description | A server URL |
substrio skills show NAME | One 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 profile | Depends on the arguments |
substrio key list | The tenant keys: ids, created, expires, state | |
substrio key revoke ID | End 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
| Command | What it does | Needs |
|---|---|---|
substrio tenants list | show SLUG | Every 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 --yes | Delete 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 key | A server URL and a key |
substrio push-bundle FILE --to PROFILE [--slug S] [--replace] | Stream a bundle into PROFILE's server as an app | Nothing |
substrio move --to PROFILE [--slug S] [--replace] [--save-profile NAME] | Pipe the app, sealed, into PROFILE's server | A server URL and a key |
substrio move --live --to PROFILE | Move 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 PROFILE | PROFILE'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
| Command | What it does | Needs |
|---|---|---|
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 main | Depends on the arguments |
substrio promote [N] [--no-backup] | Make N live (default: what dev runs); the data is backed up first | A server URL and a key |
substrio rollback [--no-backup] | Make the version before live live again | A server URL and a key |
substrio restore [BACKUP_ID] [--yes] [--wait S] | Put the data back from a promote's backup | A server URL and a key |
substrio versions | List versions: which is live, what each sandbox runs, each backup | A 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 DIR | Publish a website as a release (uploads only changes) | A server URL and a key |
substrio site releases | activate RELEASE_ID | List 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 | push | Sync secrets with a .env file | A 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 PATH | Static files | A 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 timestamp | A 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
| Command | What it does | Needs |
|---|---|---|
substrio branch | The 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 logs | A server URL and a key |
substrio tag | The 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 | --status | What a collection would take, erasing nothing; or where the last one got to (version.gc.status) |
Any operation
| Command | What it does | Needs |
|---|---|---|
substrio op list [FILTER] | Every operation of the server: name, route, summary | A server URL and a key |
substrio op NAME --help | Its 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 TOKEN | Undo 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
| Command | What it does | Needs |
|---|---|---|
substrio data list [ARG ...] [key=value ...] | data.list | Depends 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.list | Depends 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.list | Depends 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.list | Depends 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.list | Depends 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.list | Depends 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.list | Depends 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.get | Depends 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.get | Depends 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 request | Depends 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.list | Depends 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.list | Depends 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.list | Depends 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.list | Depends 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.list | Depends 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.get | Depends 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.list | Depends 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.get | Depends 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 reference | Depends 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 |