Skip to content

Operations reference - every Studio action from the command line ​

Each operation is one Studio action. Run it as erp plugin op <name> [--field value ...], or from an AI coding agent through the MCP tool erp_plugin_op. Put structured input in --json '{...}'. Run erp login first.

This page is generated from the operation table in tools/erp-cli/plugin-builder-ops.mjs, so it lists exactly what the CLI and MCP server accept.

Plugins and workspace ​

OperationCallsWhat it does
listGETList the plugins that exist in the workspace.
infoGETName, version, and whether it has Java, Node or a backend service.
contentsGETEvery artifact in the plugin, grouped by type.
scaffoldPOSTCreate a new plugin (pluginId, name, category, ...).
clonePOSTCopy a plugin in the workspace under a new id (pluginId, newPluginId, newName).
extend-installedPOSTRecommended. Start your own plugin that builds on an installed one and keeps receiving its updates (pluginId = the installed plugin, newPluginId, newName).
copy-installedPOSTMake your own editable copy of an installed plugin, published under its own name and version. You take over merging its later changes (pluginId, newPluginId, newName).
overridesGETList this tenant's overrides of plugin-shipped artifacts.
override-reportGETHow every override stands against the current shipped artifacts (what a plugin upgrade left unapplied). Optional plugin narrows it.
override-getGETOne override and how it stands (type = page/form/dashboard/..., name = the artifact's name).
override-previewPOSTWhat the artifact would look like with these operations (type, name, operations). Nothing is saved. Operations: set, remove, replace, insertBefore, insertAfter, append, each with a target (a block's instanceId).
override-setPUTSave the override (type, name, operations, status = active/disabled).
override-clearDELETEBack to the artifact exactly as the plugin ships it.
extension-pointsGETEvery named extension point: built-in and plugin-declared, with semantics and owner.
update-manifestPOSTChange plugin.json fields (pluginId, changes).
bump-versionPOSTRaise the plugin version (pluginId, part: patch/minor/major).
validatePOSTCheck the plugin and list problems.
buildPOSTBuild the installable .spk package.
snapshotPOSTSave a snapshot (pluginId, label).
restorePOSTRestore a snapshot (pluginId, snapshot).
workspaceGETThe plugin's workspace: status, owner, expiry, starting snapshot, last scan.
build-limitsGETCPU, memory, time and network limits every build and test job runs under.
add-java-backendPOSTAdd a standalone Java backend service starter.
java-compilePOSTCompile the Java backend in a disposable container.
java-testPOSTRun the Java tests.
java-packagePOSTPackage the Java backend (service jar stays on the build host).
node-runPOSTRun a Node script (pluginId, script: ci/test/build).
java-filesGETList the Java source files.
source-filesGETList the plugin's source files in every language (java, python, nodejs, typescript, react).
source-readGETRead one source file (path relative to the plugin folder).
source-writePOSTCreate or replace one source file (pluginId, path, content, optional expectedRevision). Then run java-compile / java-test / node-run.

Designer artifacts, entities and rules ​

OperationCallsWhat it does
artifact-listGETList artifacts of one type, e.g. type=forms (latestOnly=true for the newest of each name).
artifact-getGETOne artifact with its full definition (type, id).
artifact-historyGETEvery version of an artifact by name.
artifact-createPOSTCreate a draft (type, name, description, definition = the artifact's JSON object).
artifact-updatePUTChange a draft (type, id, expectedRevision, name, definition).
artifact-publishPOSTPublish a draft as a new version.
artifact-deleteDELETEDelete a draft.
entity-listGETList entity definitions.
entity-getGETOne entity definition with its fields.
rule-listGETList entity rules (optionally for one entityType).
rule-createPOSTCreate a rule (entityType, name, triggerEvent, conditions, actions, priority, active).
rule-deleteDELETEDelete a rule.

AI Studio ​

OperationCallsWhat it does
add-ai-assetPOSTAdd an AI asset to a plugin (pluginId, kind = prompt/rag/eval/agent/knowledge, code, source = starter/workspace). workspace copies what was built in AI Studio; starter writes a template.
ai-promptsGETList the tenant's library prompts with their labels.
ai-prompt-runPOSTRun a prompt (code, label or version, values = the variable values).
ai-rag-listGETList the tenant's RAG pipelines with their labels.
ai-rag-runPOSTRun a RAG pipeline (code, question, label). Returns the answer, citations and what every stage did.
ai-kb-listGETList the tenant's knowledge bases.
ai-kb-queryPOSTSearch a knowledge base (code, query, mode = HYBRID/VECTOR/KEYWORD, topK).
ai-eval-runPOSTRun an evaluation dataset against a prompt or pipeline (code = dataset, targetCode, label).
ai-usageGETModel calls, tokens, latency and cost for the last N days (default 7).
ai-bundle-exportPOSTExport prompts, RAG pipelines, evaluation datasets, knowledge bases and agents as one portable JSON bundle (optional prompts, ragPipelines, evalDatasets, knowledgeBases, agents = lists of codes; includeDocuments).
ai-bundle-importPOSTImport a bundle (the bundle fields as the body; overwrite=true updates what exists).
ai-keysGETList app API keys for the OpenAI-compatible endpoint (never the secrets).
ai-key-createPOSTMake an app API key (name, applicationCode, allowedModels, rateLimitPerMinute). The secret is shown once in the answer.

Bots and agents ​

OperationCallsWhat it does
agent-listGETList the tenant's agents and bots.
agent-getGETOne agent or bot with its settings.
agent-savePOSTCreate an agent or bot (the agent fields as the body: code, name, instructions, tools ...).
agent-updatePUTChange an agent or bot.
agent-publishPOSTPublish the agent (its publish policy and guardrails apply).
agent-runPOSTRun an agent once (input = the message).
agent-executionsGETRecent runs of the agent.
agent-stepsGETEvery step of one run: model calls, tool calls, approvals.
agent-explainGETWhy the run did what it did.
agent-handoffsGETOpen hand-overs from bots to people.
agent-draftPOSTAsk the platform's model to draft an agent from a description (prompt).

Voice and phone calls ​

OperationCallsWhat it does
voice-linesGETThe phone lines: provider, number, answering agent (credentials are never shown).
voice-callsGETRecent calls and voice sessions with outcome and summary.
voice-callGETOne call: transcript, summary, outcome, sentiment and follow-ups.
voice-analyticsGETCall counts, outcomes and durations.
voice-campaignsGETOutbound call campaigns with their window, repeat and state.

Engagement ​

OperationCallsWhat it does
engagement-overviewGETJourneys, audiences and send counts at a glance.
engagement-audiencesGETList the saved audiences.
engagement-audience-setPUTCreate or change an audience (code, name, filter).
engagement-audience-previewPOSTCount and sample the people an audience filter picks.
engagement-journeysGETList the journeys with their status.
engagement-journeyGETOne journey with its steps.
engagement-journey-setPUTCreate or change a journey draft (code, name, audience, steps ...).
engagement-journey-draftPOSTAsk the platform's model to draft a journey from a plain goal (need, 15 to 2000 characters). Nothing is saved.
engagement-journey-checkPOSTCheck the journey and list problems before publishing.
engagement-journey-publishPOSTPublish the journey.
engagement-journey-launchPOSTStart the journey for its audience (now or on its schedule).
engagement-journey-pausePOSTPause a running journey.
engagement-journey-resumePOSTResume a paused journey.
engagement-journey-endPOSTEnd a journey.
engagement-membersGETWho is in the journey and where each person is.
engagement-contact-policyGETQuiet hours and frequency caps.
engagement-dncGETThe do-not-contact list.

Document management ​

OperationCallsWhat it does
dms-cabinetsGETList the cabinets.
dms-foldersGETFolders under a cabinet or folder (cabinetId, parentId).
dms-fileGETOne file's details.
dms-upload-startPOSTStart a chunked upload of a large file (cabinetId, folderId, name, size, chunkBytes). Parts and complete need file bytes: use client.dms.uploadLarge.
dms-upload-statusGETWhich parts of an upload have arrived.
dms-playbackPOSTA signed, expiring playback address for a video or audio file (and whether this person may download it).
dms-mediaGETStatus of the adaptive streaming copies of a file.
dms-media-preparePOSTQueue the adaptive streaming copies again (force=true to redo them).
dms-deleteDELETEDelete a file.

Portals ​

OperationCallsWhat it does
portal-membersGETThe people with access to a portal.
portal-invitationsGETOpen invitations to a portal.
portal-invitePOSTInvite one person to a portal (email, role ...).

Websites ​

OperationCallsWhat it does
website-membersGETThe website's signed-up members.
website-page-viewsGETPage views of a website.
website-feedbackGETVisitor feedback.
website-domainGETThe website's custom domain and its state.

Moving definitions between environments ​

OperationCallsWhat it does
package-kindsGETThe kinds of definition this environment can export and install (audience, journey, contact-policy, document-category, retention-policy, document-type ...).
package-exportPOSTExport definitions of one kind as JSON items (kind; optional codes = a list; empty means all). Needs that feature's manage right.
package-installPOSTInstall exported items into this environment (kind, items = [{code, json}], overwrite=true to replace what exists). Journeys arrive as drafts; the result lists warnings for anything missing here.

Backend services of a plugin ​

OperationCallsWhat it does
service-deployPOSTRun the built backend jar as its own container; rolls back if unhealthy.
service-statusGETContainer state, health and version.
service-statsGETLive CPU and memory use.
service-logsGETRecent log lines (tail, default 200).
service-versionsGETDeployed versions and which one runs.
service-configGETCPU, memory and environment settings.
service-set-configPOSTChange cpus (0.25-4), memory (128m-4g) and env. CPU/memory apply live; env restarts.
service-startPOSTStart a stopped service.
service-haltPOSTStop the service but keep it and its settings.
service-restartPOSTRestart the service.
service-rollbackPOSTRun an earlier version (pluginId, version).
service-stopPOSTRemove the service container (images stay).

Other ​

OperationCallsWhat it does
snapshotsGETList saved snapshots.
workspacesGETList the development workspaces (one per plugin) with status, owner and last scan.
workspace-startPUTStart the workspace (its starting point is snapshotted) or rename it / move its expiry (name, kind, expiresInDays).
workspace-statusPOSTMove the workspace on (action: submit/approve/reject/published/reopen/archive/restore, notes). Someone else approves.
workspace-changesGETThe change set: every file added, removed or changed since the workspace started (or between two snapshots), with line diffs.
workspace-scanPOSTSecurity scan: secrets, dependencies, permissions, tenant isolation, fixed addresses. Critical findings block publishing.
workspace-historyGETSaved history of the work (plans, steps, builds, tests, scans, publishes) so it can be resumed.
workspace-logPOSTSave one step of AI-assisted work (kind: plan/step/tool/files/build/test/scan/preview/publish/note, summary, detail).
workspace-planPOSTAsk the platform's model for a build plan from a description (description); counts against workspace AI budgets.
add-package-itemPOSTAdd an Engagement or Documents definition to a plugin (pluginId, kind = audience/journey/contact-policy/document-category/retention-policy/document-type, code, content = the item's JSON as package-export returns it, overwrite?). Writes metadata/KIND/CODE.json.