Reference

Every tool the server offers, and every environment variable it reads. Each tool takes one JSON object; inputs are name: type, required ones marked. Every tool answers with a summary line, then a json block when the result is structured; a failure is one readable line marked as an error. Tools that sign send a transaction from AIOUM_PRIVATE_KEY and return the hash; tools that spend pay from the session key capped by AIOUM_BUDGET, from an agent's own budget, or from the private node's wallet. Amounts are decimal strings ("12000" ZAI, "0.05" USDC) unless a type says number.

Tools

ToolWhat it doesInputsSigns or spends
aioum_<serviceId>__<tool>Calls one live marketplace service tool, paying per callthe tool's own argumentsspends from the session key
aioum_statusProbes every part of the stack and reports the available AI planners–no
aioum_activityThe runner's totals and the latest runslimit: integer (default 20)no
aioum_walletBalances of the runner's wallet and, with a key, yours–no
aioum_servicesSearches the marketplace indexq: string, category: string, liveOnly: boolean, limit: integerno
aioum_serviceOne listing in fullserviceId: string (required)no
aioum_operatorOne operator: stake, reputation, listingsaddress: string (required)no
aioum_toolsThe callable tools with their argument names and pricesq: string, refresh: booleanno
aioum_refresh_indexMakes the index re-read the chain and re-probe every node now–no
aioum_plannersWho can plan an assistant: the planner listings on the marketplace, and whether the runner has a key or a local model of its own–no
aioum_startersThe ready-made agents and pipelines (agent networks with a project), each with what it still needskind: string (agent, pipeline, all)no
aioum_skillsSearches the skills an agent can load: the open-source index (repo, commit, licence) and skills listed on nodes (per use or one-time)q: string, category: string (crypto, media, writing, research, code, data, social, ai, ops, other), tag: string, limit: integer (default 50)no
aioum_pipeline_createCreates a pipeline: its agents in hiring order, the hired ones published, its project on the lead, with the budgets you set; refused with the missing parts named (a GPU among them)id: string (required), budgetUsdc: number (required, the project's cap), agentBudgetsUsdc: object (required, a cap per agent key), input: string, start: boolean (default false)no (starting spends)
aioum_superPrompt first: builds a Super Agent from a prompt and the budget you are willing to spend (fully loose, pay in any token, the best live planner, the highest model tier live, said back with why) with a project whose stages that planner proposes, and starts itprompt: string (required), budgetUsdc: number (required), planner: string (marketplace:<serviceId>, anthropic, openai), start: boolean (default true)no (spends from the budget)
aioum_agentsLists agentsowner: string (default AIOUM_OWNER)no
aioum_agent_getOne agent in fullid: string (required)no
aioum_agent_createCreates an agent from a spec, or from a starter with the spec's fields on topspec: object (name, description, instructions, mode, planner, plannerService, tools, access, deny, skills, skillsAccess, data: {memory, files}, dataAccess, steps, outputTemplate, budget, schedule, payAcross), starter: string; one of spec.name or starter is requiredno
aioum_agent_updateReplaces the fields sentid: string (required), spec: object (required)no
aioum_agent_deleteDeletes an agent that is not publishedid: string (required)no
aioum_agent_runStarts a run and waits for it, up to the timeoutid: string (required), input: string, timeoutSeconds: integer (default 300)the agent spends from its own budget
aioum_agent_scheduleSets, changes or disables the scheduleid: string (required), enabled: boolean (required), everyMinutes: integer, input: stringscheduled runs spend from the agent's budget
aioum_agent_publishLists the agent as a serviceid: string (required), priceUsdc: number (required), stakeZai: numberno; the runner stakes ZAI and registers the listing with its own wallet
aioum_agent_unpublishDelists itid: string (required)no
aioum_runsLists runs, newest firstagentId: string, limit: integer (default 30)no
aioum_run_getOne run: steps, paid calls, receipts, outputrunId: string (required)no
aioum_run_stopStops a run in progressrunId: string (required)no
aioum_run_watchWatches a run over its event stream until it ends: every step with its doing line, service, cost and media, then the spend per servicerunId: string (required), timeoutSeconds: integer (default 300), from: integerno
aioum_spendSpend per service: one run, or an agent or a project over a period, with a per-day lineone of runId, agentId, projectId: string; period: "24h" (default), "7d" or "all"no
aioum_project_listYour projects, or one agent'sowner: string, agentId: stringno
aioum_project_getOne project in full: its brief, every stage with its status, run, spend, output and linksid: string (required)no
aioum_project_createCreates a project as a draft: one brief, one budget, stages (each {title?, instruction, after?}, after the positions of the stages it waits for; absent, every stage before it) or "auto" for the agent's planner to propose them with their after (a planner listing is paid one turn, a run of kind plan on the agent)agentId: string (required), brief: string (required), stages: object[], string[] or "auto" (required), title: string, budgetUsdc: numberno
aioum_project_startRuns the stages not done yet, each as soon as the stages it waits for are done and the ready ones at the same time, and waitsid: string (required), wait: boolean (default true), timeoutSeconds: integer (default 600)the project spends from its budget
aioum_project_pauseLets the running stages finish, then stops before the nextid: string (required)no
aioum_project_resumeContinues from the first stage not done; a failed stage runs againid: string (required), wait: boolean, timeoutSeconds: integerspends from the project's budget
aioum_project_stagesReplaces the stages still to run and/or the budget; done stages stayid: string (required), stages: string[], budgetUsdc: numberno
aioum_project_deleteDeletes a project; a running stage is stopped, its runs stayid: string (required)no
aioum_sell_templatesThe template galleryq: stringno
aioum_sell_configAssembles a services.json from templatesnames: string[] (required)no
aioum_sell_previewRuns one tool of a spec once, without listingspec: object (required), tool: string (required), args: object, env: objectno
aioum_sell_addLists a service on the catalogue nodespec: object or template: string (one required); price: string, pricingMax: string (let the price follow demand up to this), stake: string, env: objectno; the node stakes and registers with its own wallet
aioum_sell_skillPuts a folder with SKILL.md on the node and lists it, per use or one-timemode: "per-use" or "one-time" (required), price: string (required), one of dir: string (a folder here, uploaded), files: object[], nodeDir: string (a folder on the node); name, description, category, key, stake: stringno; the node stakes and registers with its own wallet
aioum_sell_listWhat the node sells–no
aioum_sell_removeDelists one servicekey: string (required)no
aioum_sell_verify_domainThe DNS TXT record or /.well-known/aioum.json to add for the node's operator, and what each check finds nowdomain: string (required)no
aioum_stake_operatorsOperators with their stake, liveness and listings–no
aioum_stake_positionsYour delegations and claimable rewards–no
aioum_stake_delegateApproves and delegates ZAI to an operatoroperator: string (required), amountZai: string (required)signs
aioum_stake_claimClaims your USDC rewards from an operatoroperator: string (required)signs
aioum_stake_unstakeStarts unbondingoperator: string (required), amountZai: string (required)signs
aioum_stake_withdrawWithdraws after the unbonding periodoperator: string (required)signs
aioum_stake_requestAsks the network's staking node to review a listing and back it so it goes live; follows the states to the end and returns the final one with the reasonsserviceId: string (required), wait: boolean (default true), timeoutSeconds: integer (default 600)no; the staking node's pool delegates
aioum_stake_requestsBacking requests on the staking node, newest first, with their state, reasons and stakeoperator: string, serviceId: string, state: string (requested, reviewing, approved, rejected, backing, live, failed, withdrawn), limit: integer (default 100)no
aioum_jury_statusThe jury's rules and your seat–no
aioum_jury_joinApproves and stakes on the arbitratoramountZai: string (required)signs
aioum_jury_casesDisputes, newest first, with your state on eachlimit: integer (default 50)no
aioum_jury_commitSeals a vote; saves the salt to ~/.aioum/jury-salts.jsondisputeId: integer (required), nodeAtFault: boolean (required)signs
aioum_jury_revealReveals the vote sealed on this machinedisputeId: integer (required)signs
aioum_jury_finalizeCloses a case after the reveal perioddisputeId: integer (required)signs
aioum_jury_escalateSettles a case that reached no quorumdisputeId: integer (required), nodeAtFault: boolean (required)signs
aioum_jury_rewardClaims your reward for a casedisputeId: integer (required)signs
aioum_jury_leaveStarts unstaking from the juryamountZai: string (required)signs
aioum_jury_withdrawWithdraws once unlocked–signs
aioum_node_statusThe private node's health and connections–no
aioum_node_connectConnects a provider; OAuth ones return a link to openprovider: string (required), apiKey: string, baseUrl: string, header: string, prefix: stringno
aioum_node_disconnectRemoves a connection and its stored credentialsprovider: string (required)no
aioum_node_toolsThe node's tools with their arguments–no
aioum_node_callCalls one of them, freetool: string (required), args: objectno
aioum_node_memory_addStores a memory itemtext: string (required), kind: string, tags: string (comma-separated)no
aioum_node_memory_listLists memory–no
aioum_node_memory_deleteForgets one itemid: string (required)no
aioum_node_memory_forget_allWipes memory–no
aioum_node_schedulesLists scheduled jobs and their runs–no
aioum_node_schedule_createCreates a jobjob: object (required): name (required), steps (required), intervalSeconds, budgetUsdthe node spends from its own wallet when the job runs
aioum_node_schedule_runRuns a job now and waitsid: string (required)the node spends up to the job's budget
aioum_node_schedule_togglePauses or resumes a jobid: string (required)no
aioum_node_schedule_deleteDeletes a jobid: string (required)no
aioum_node_backup_exportWrites an encrypted backup to a file on the server's machinepath: string (required), passphrase: string (required, 12 characters at least)no
aioum_node_backup_restoreRestores a backup filepath: string (required), passphrase: string (required)no
aioum_deposit_addressThe deposit address for an AI wallet, deployed or not, with the chain, the fee and the service's mode (route, or direct with the sentence to send USDC to the address)wallet: stringno
aioum_deposit_chainsThe chains a deposit can route from; 501 with one sentence on a direct network, as for tokens and quote–no
aioum_deposit_tokensThe assets on one of those chainschain: integer (required), q: string, limit: integerno
aioum_deposit_quoteA route from an asset on a chain to USDC here: what arrives, the fee, the creditchain: integer (required), token: string (required; an address, "native", or a symbol), amount: string (required, in units), wallet: string, fromAddress: stringno
aioum_deposit_sendQuote, then send from your wallet on the source chain and record the depositsame as the quotesigns and spends
aioum_deposit_listEvery deposit of a wallet, with its statuswallet: stringno
aioum_deposit_statusOne deposit, status refreshedid: string (required)no
aioum_deposit_sweepForward the USDC that has arrived at the deposit address to the wallet now, less the fee; the path that works on every networkwallet: stringno (the service signs the sweep)
aioum_deposit_card_partnersPay by card: the on-ramp partners with keys, how each reports delivery, its fee, and whether this network can take a card paymentnoneno
aioum_deposit_cardPay by card: a partner's link that delivers USDC to the deposit address, tracked as a depositpartner: string, wallet: stringno

The CLI's aioum jury salts export and import, and aioum config, have no MCP counterpart.

Environment variables

VariableDefaultWhat it does
AIOUM_DEPLOYMENTS, DEPLOYMENTS–Path to the network's deployments.json: chain id and contract addresses. Either name works; with neither set, the management tools look for ./deployments.json, ./offchain/deployments.json and ../offchain/deployments.json. Without one there are no chain tools (staking, the jury, balances) and no paid tools, and the rest still works.
AIOUM_CHAIN_ID, AIOUM_PAYMENT, AIOUM_USDC, AIOUM_ACCOUNT_FACTORY, AIOUM_ENTRYPOINT, AIOUM_PAYMASTER–Without a deployments file: the chain and the five addresses the paid tools need.
AIOUM_RPC_URLhttp://127.0.0.1:8545, or rpcUrl from the deployments fileChain RPC.
OWNER_KEY–Owner wallet for the paid tools: funds and authorizes the session key.
SESSION_KEY, SMART_ACCOUNT–Session mode: a key authorized elsewhere; no owner key in the process; no renewal.
AIOUM_BUDGET10 USDCCap on the session key, enforced on-chain.
AIOUM_EXPIRES24hSession-key lifetime.
AIOUM_AUTO_RENEW1Re-authorize a lapsed key automatically; 0 fails paid calls instead.
AIOUM_RENEW_SKEW_SECONDS60Renew this many seconds before expiry.
AIOUM_MINT–Local development network: 1 mints mock USDC to the owner.
NODE_TOKEN–Bearer token for a token-gated node the paid tools call.
AIOUM_PRIVATE_KEYfalls back to OWNER_KEYWallet for staking, the jury, your balances and paid calls made by the management tools.
AIOUM_OWNERcliThe owner your agents are created under and listed by.
AIOUM_INDEXER_URLhttp://127.0.0.1:8549The marketplace index.
AIOUM_AGENTS_URLhttp://127.0.0.1:8770/runnerYour runner: your own inside your private node, or a shared one you signed in to.
AIOUM_NODE_URLhttp://127.0.0.1:8546The single demo node; where paid calls default to.
AIOUM_MULTINODE_URLhttp://127.0.0.1:8556The catalogue node whose admin API lists and delists.
AIOUM_NODE_TOKEN–Bearer token for that admin API.
AIOUM_FACILITATOR_URLhttp://127.0.0.1:8547The facilitator (probed by aioum_status).
AIOUM_BUNDLER_URLhttp://127.0.0.1:8548The ERC-4337 bundler.
AIOUM_PRIVATE_NODE_URLhttp://127.0.0.1:8770Your private node.
AIOUM_PRIVATE_NODE_TOKENthe file $PRIVATE_NODE_DIR/token, default ~/.aioum-private/tokenIts bearer token (PRIVATE_NODE_DIR names the node's data directory).
AIOUM_DEPOSITS_URLhttp://127.0.0.1:8551The deposit service: deposits from any chain, credited as USDC.
AIOUM_BACKER_URLhttp://127.0.0.1:8552The network's staking node (aioum_stake_request, aioum_stake_requests).
AIOUM_DEBUG–1 logs the resolved configuration, secrets masked, to stderr at start.

Next: Why receipts beat API keys — the case for the receipt every one of these calls carried.