Aegis Orchestrator
Reference

MCP Tool Reference

Complete input and output schemas for all 86 AEGIS MCP tools — 83 built-in orchestrator tools and the Zaru-only zaru.init, zaru.mode, and zaru.docs tools — with availability by context and Zaru conversation mode.

This page is the authoritative schema reference for all AEGIS MCP tools. For the skip_judge policy and inner-loop judge optimization, see Built-in Tools. For usage patterns and examples, see Management Tools.

Tool count: 86 total — 83 built-in orchestrator tools + 3 Zaru client tools (zaru.init, zaru.mode, zaru.docs).


Tool Access Tiers

AEGIS tools are divided into three access tiers. The tier determines which callers may invoke a tool.

User tools — available to all agents and Zaru users: fs.read, fs.write, fs.list, fs.create_dir, fs.delete, fs.edit, fs.multi_edit, fs.grep, fs.glob, web.search, web.fetch, cmd.run, aegis.agent.list, aegis.agent.export, aegis.agent.generate, aegis.agent.logs, aegis.agent.search, aegis.agent.wait, aegis.workflow.list, aegis.workflow.validate, aegis.workflow.export, aegis.workflow.run, aegis.workflow.generate, aegis.workflow.logs, aegis.workflow.wait, aegis.workflow.cancel, aegis.workflow.signal, aegis.workflow.executions.list, aegis.workflow.executions.get, aegis.workflow.status, aegis.workflow.search, aegis.task.execute, aegis.task.status, aegis.task.list, aegis.task.cancel, aegis.task.logs, aegis.task.wait, aegis.execute.intent, aegis.execute.status, aegis.execution.file, aegis.execute.wait, aegis.tools.list, aegis.tools.search, aegis.schema.get, aegis.schema.validate, aegis.runtime.list, aegis.file.list, aegis.file.read, aegis.file.write, aegis.file.delete, aegis.file.mkdir, aegis.volume.create, aegis.volume.list, aegis.volume.delete, aegis.volume.quota, aegis.git.clone, aegis.git.list, aegis.git.status, aegis.git.refresh, aegis.git.delete, aegis.git.commit, aegis.git.push, aegis.git.diff, aegis.script.save, aegis.script.list, aegis.script.get, aegis.script.update, aegis.script.delete, zaru.init, zaru.mode, zaru.docs

Volume, file, git, and script tools are available to every tier — Free, Pro, Business, and Enterprise. The backend enforces per-tier storage, bandwidth, and count quotas; the tool-availability gate itself is uniform across tiers.

System tools — only available to agents with security_context: aegis-system-agent-runtime registered by platform operators: aegis.agent.create, aegis.agent.update, aegis.workflow.create, aegis.workflow.update, aegis.workflow.promote, aegis.workflow.demote

Operator-only tools — only available via operator SEAL sessions: aegis.agent.delete, aegis.workflow.delete, aegis.workflow.remove, aegis.task.remove, aegis.system.info, aegis.system.config


Tool Availability by Context

AEGIS tools are available across three distinct execution contexts. The tool set exposed to a caller varies by context.

ContextTool groups availableNotes
Zaru Chat — chat modezaru.init + zaru.mode + zaru.docs onlyMode switching and docs search; no orchestrator tools
Zaru Chat — agentic modezaru.init + zaru.mode + zaru.docs + agent/task management subsetSee mode table below
Zaru Chat — execute modezaru.init + zaru.mode + zaru.docs + execute pipeline toolsSee mode table below
Zaru Chat — workflow modezaru.init + zaru.mode + zaru.docs + workflow/agent design subsetSee mode table below
Zaru Chat — operator modeAll 86 toolsNo filtering applied
AEGIS agent inner loopAll 83 built-in toolsSubject to agent spec.tools allowlist and SecurityContext
External SEAL callerAll 83 built-in toolsFiltered by SecurityContext only; no mode concept

See Tool Routing Architecture for the full routing pipeline.


Zaru Conversation Mode Tool Sets

The tool sets below are enforced by the Zaru client — not the orchestrator. Outside of Zaru, inside agent inner loops and via direct SEAL calls, all built-in tools are available subject to SecurityContext and the agent's spec.tools allowlist.

Chat Mode

Only zaru.init, zaru.mode, and zaru.docs are exposed. The model cannot invoke any orchestrator tools directly from chat mode.

Agentic Mode

  • zaru.init
  • zaru.mode
  • zaru.docs
  • aegis.agent.generate
  • aegis.agent.wait
  • aegis.agent.list
  • aegis.agent.logs
  • aegis.task.execute
  • aegis.task.wait
  • aegis.task.list
  • aegis.task.logs
  • aegis.task.cancel
  • aegis.execution.file
  • aegis.tools.list
  • aegis.tools.search

Execute Mode

  • zaru.init
  • zaru.mode
  • zaru.docs
  • aegis.execute.intent
  • aegis.execute.status
  • aegis.execute.wait
  • aegis.execution.file
  • aegis.workflow.wait

Architect Mode

  • zaru.init
  • zaru.mode
  • zaru.docs
  • aegis.workflow.generate
  • aegis.workflow.list
  • aegis.workflow.logs
  • aegis.agent.generate
  • aegis.agent.wait
  • aegis.agent.list
  • aegis.agent.logs
  • aegis.schema.get
  • aegis.schema.validate
  • aegis.task.execute
  • aegis.task.wait
  • aegis.execution.file
  • aegis.workflow.wait

Operator Mode

All 86 tools are available — no filtering is applied.


Quick-Reference Table

Zaru mode abbreviations: C = chat, Ag = agentic, Ex = execute, Ar = architect, Op = operator. Operator always has full access; only additional modes are listed per tool.

ToolGroupskip_judgeRequired paramsZaru modes
cmd.rundispatchfalsecommandOp
fs.readfstruepathOp
fs.writefsfalsepath, contentOp
fs.listfstruepathOp
fs.create_dirfsfalsepathOp
fs.deletefsfalsepathOp
fs.editfsfalsepath, target_content, replacement_contentOp
fs.multi_editfsfalsepath, editsOp
fs.grepfstruepattern, pathOp
fs.globfstruepattern, pathOp
web.searchwebtruequeryOp
web.fetchwebtrueurlOp
aegis.schema.getschematruekeyAr, Op
aegis.schema.validateschematruekind, manifest_yamlAr, Op
aegis.agent.createagenttruemanifest_yamlOp
aegis.agent.listagenttrueAg, Ar, Op
aegis.agent.updateagenttruemanifest_yamlOp
aegis.agent.exportagenttruenameOp
aegis.agent.deleteagenttrueagent_idOp
aegis.agent.generateagentfalseinputAg, Ar, Op
aegis.agent.logsagenttrueagent_idAg, Ar, Op
aegis.agent.searchagenttruequeryOp
aegis.agent.waitagenttrueexecution_idAg, Ar, Op
aegis.workflow.createworkflowtruemanifest_yamlOp
aegis.workflow.listworkflowtrueAr, Op
aegis.workflow.validateworkflowtruemanifest_yamlOp
aegis.workflow.updateworkflowtruemanifest_yamlOp
aegis.workflow.exportworkflowtruenameOp
aegis.workflow.deleteworkflowfalsenameOp
aegis.workflow.runworkflowfalsenameOp
aegis.workflow.generateworkflowfalseinputAr, Op
aegis.workflow.logsworkflowtrueexecution_idAr, Op
aegis.workflow.waitworkflowtrueexecution_idEx, Ar, Op
aegis.workflow.cancelworkflowtrueexecution_idOp
aegis.workflow.signalworkflowtrueexecution_id, responseOp
aegis.workflow.removeworkflowtrueexecution_idOp
aegis.workflow.promoteworkflowfalsenameOp
aegis.workflow.demoteworkflowfalsenameOp
aegis.workflow.executions.listworkflowtrueOp
aegis.workflow.executions.getworkflowtrueexecution_idOp
aegis.workflow.statusworkflowtrueexecution_idOp
aegis.workflow.searchworkflowtruequeryOp
aegis.task.executetaskfalseagent_idAg, Ar, Op
aegis.task.statustasktrueexecution_idOp
aegis.task.listtasktrueAg, Op
aegis.task.canceltaskfalseexecution_idAg, Op
aegis.task.removetaskfalseexecution_idOp
aegis.task.logstasktrueexecution_idAg, Op
aegis.task.waittasktrueexecution_idAg, Ar, Op
aegis.execution.fileexecutiontrueexecution_id, pathAg, Ex, Ar, Op
aegis.execute.intentexecutefalseintentEx, Op
aegis.execute.statusexecutetruepipeline_execution_idEx, Op
aegis.execute.waitexecutetrueexecution_idEx, Op
aegis.tools.listtoolstrueAg, Op
aegis.tools.searchtoolstrueAg, Op
aegis.system.infosystemtrueOp
aegis.system.configsystemtrueOp
aegis.runtime.listruntimetrueOp
aegis.file.listfiletruevolume_id, pathOp
aegis.file.readfiletruevolume_id, pathOp
aegis.file.writefilefalsevolume_id, path, contentOp
aegis.file.deletefilefalsevolume_id, pathOp
aegis.file.mkdirfilefalsevolume_id, pathOp
aegis.volume.createvolumefalselabel, size_limit_bytesOp
aegis.volume.listvolumetrueOp
aegis.volume.deletevolumefalsevolume_idOp
aegis.volume.quotavolumetrueOp
aegis.git.clonegitfalserepo_url, labelOp
aegis.git.listgittrueOp
aegis.git.statusgittruebinding_idOp
aegis.git.refreshgitfalsebinding_idOp
aegis.git.deletegitfalsebinding_idOp
aegis.git.commitgitfalsebinding_id, messageOp
aegis.git.pushgitfalsebinding_idOp
aegis.git.diffgittruebinding_idOp
aegis.script.savescriptfalsename, codeOp
aegis.script.listscripttrueOp
aegis.script.getscripttrueidOp
aegis.script.updatescriptfalseid, name, codeOp
aegis.script.deletescriptfalseidOp
zaru.initzaruN/AC, Ag, Ex, Ar, Op
zaru.modezaruN/Atarget_mode, reasonC, Ag, Ex, Ar, Op
zaru.docszaruN/AqueryC, Ag, Ex, Ar, Op

Filesystem Tools (fs.*)

Interact with the agent's mounted Workspace volume via the FSAL layer. All paths must be within the agent's path_allowlist. Absolute POSIX paths are recommended.

fs.read

Read the contents of a file at the given POSIX path from the mounted Workspace volume.

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
pathstringYesAbsolute or relative POSIX path of the file to read.

Output:

{
  "status": "success",
  "path": "/workspace/src/main.rs",
  "content": "...",
  "size_bytes": 1024
}

fs.write

Write content to a file at the given POSIX path in the Workspace volume. Automatically creates missing parent directories.

Access: User

skip_judge: false

PropertyTypeRequiredDefaultDescription
pathstringYesAbsolute or relative POSIX path of the file to write.
contentstringYesString content to write to the file.

Output:

{
  "status": "success",
  "path": "/workspace/src/main.rs",
  "bytes_written": 1024
}

fs.list

List the contents of a directory in the Workspace volume.

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
pathstringYesAbsolute or relative POSIX path of the directory to list.

Output:

{
  "status": "success",
  "path": "/workspace/src",
  "entries": [
    { "name": "main.rs", "file_type": "file" },
    { "name": "lib", "file_type": "directory" }
  ]
}

Each entry has a file_type of either "file" or "directory".

fs.create_dir

Creates a new directory along with any necessary parent directories.

Access: User

skip_judge: false

PropertyTypeRequiredDefaultDescription
pathstringYesAbsolute or relative POSIX path of the directory to create.

Output:

{
  "status": "success",
  "path": "/workspace/output/reports"
}

fs.delete

fs.delete is destructive and irreversible. To delete a non-empty directory, set recursive: true. Without it, deletion of a non-empty directory will fail with an error.

Deletes a file or directory.

Access: User

skip_judge: false

PropertyTypeRequiredDefaultDescription
pathstringYesAbsolute or relative POSIX path of the file or directory to delete.
recursivebooleanNofalseSet to true to delete a directory and all its contents.

Output:

{
  "status": "success",
  "path": "/workspace/tmp/cache"
}

fs.edit

Performs an exact string replacement in a file.

Access: User

skip_judge: false

PropertyTypeRequiredDefaultDescription
pathstringYesAbsolute or relative POSIX path of the file to edit.
target_contentstringYesExact string content to find and replace. Must match exactly once in the file.
replacement_contentstringYesNew string content to insert in place of target_content.

target_content must appear exactly once in the file. If the string is not found or appears more than once, the tool returns an error without modifying the file.

Output:

{
  "status": "success",
  "path": "/workspace/src/main.rs",
  "message": "File edited successfully"
}

fs.multi_edit

Performs multiple sequential string replacements in a file.

Access: User

skip_judge: false

PropertyTypeRequiredDefaultDescription
pathstringYesAbsolute or relative POSIX path of the file to edit.
editsarrayYesArray of edit objects applied sequentially. Each object requires target_content (string) and replacement_content (string).

Edits are applied sequentially in array order. Each edit operates on the result of the previous edit, so target_content values for later edits must account for earlier replacements.

Output:

{
  "status": "success",
  "path": "/workspace/src/main.rs",
  "applied": 3
}

The applied field is the count of replacements successfully performed.

fs.grep

Recursively searches for a regex pattern within files in a given directory.

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
patternstringYesRegex pattern to search for.
pathstringYesDirectory path to start the recursive search from.

Output: Formatted string of matches, one per line in path:line_number:content format.

fs.glob

Recursively matches files against a glob pattern.

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
patternstringYesGlob pattern to match files (e.g. **/*.rs).
pathstringYesDirectory path to start the recursive search from.

Output: Newline-separated list of matching file paths.


Web Tools (web.*)

Access external URLs and perform internet searches. These tools are subject to the agent's network_profile and any egress restrictions configured at the node level.

web.search

Performs an internet search query.

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
querystringYesSearch query.

Output: Formatted list of results, each containing title, URL, and snippet text.

web.fetch

Fetches content from a URL, optionally converting HTML to Markdown.

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
urlstringYesURL to fetch content from.

Output: Response body as a string. HTML responses are converted to Markdown when the to_markdown conversion option is in effect.


Dispatch Protocol Tool (cmd.run)

cmd.run is routed via the Dispatch Protocol — not the FSAL layer. Commands execute inside the agent's ephemeral container. To expose cmd.run to an agent, the agent manifest must declare a subcommand_allowlist under spec.builtin_dispatchers:

spec:
  builtin_dispatchers:
    - name: cmd
      capabilities:
        - name: cmd.run
          subcommand_allowlist:
            - "python"
            - "pip"
            - "bash"

Only commands whose first token appears in subcommand_allowlist will be permitted.

cmd.run

Executes a shell command inside the agent's ephemeral container environment. Use this to build, run, or analyze code locally.

Access: User

skip_judge: false

PropertyTypeRequiredDefaultDescription
commandstringYesCommand to execute. The first token must appear in the agent's subcommand_allowlist.

Output:

{
  "stdout": "Hello, world!\n",
  "stderr": "",
  "exit_code": 0
}

A non-zero exit_code is returned as a successful tool response — the agent is responsible for interpreting the exit code and deciding whether to retry or fail.


Agent Management Tools (aegis.agent.*)

These tools manage the agent registry: creating, reading, updating, deleting, and searching agent definitions. For task execution (running agents), see Task Management Tools.

aegis.agent.create

Parses, validates, and deploys an Agent manifest to the registry.

Access: System

skip_judge: true

PropertyTypeRequiredDefaultDescription
manifest_yamlstringYesFull Agent manifest YAML to parse, validate, and deploy.
forcebooleanNofalseOverwrite an existing deployed agent with the same name/version.

Output:

{
  "agent_id": "a1b2c3d4-...",
  "deployed": true,
  "name": "my-agent",
  "version": "1.0.0"
}

aegis.agent.list

Lists currently deployed agents and metadata.

Access: User

skip_judge: true

No parameters — accepts an empty object {}.

Output:

{
  "agents": [
    {
      "id": "a1b2c3d4-...",
      "name": "my-agent",
      "version": "1.0.0",
      "status": "active",
      "description": "...",
      "labels": {}
    }
  ]
}

aegis.agent.update

Updates an existing Agent manifest in the registry.

Access: System

skip_judge: true

PropertyTypeRequiredDefaultDescription
manifest_yamlstringYesFull Agent manifest YAML to update an existing agent.
forcebooleanNofalseOverwrite an existing version if it already exists.

Output:

{
  "agent_id": "a1b2c3d4-...",
  "deployed": true,
  "name": "my-agent",
  "version": "1.0.1"
}

aegis.agent.export

Exports an Agent manifest by name.

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
namestringYesName of the agent to export.

Output:

{
  "manifest_yaml": "kind: Agent\n...",
  "id": "a1b2c3d4-...",
  "name": "my-agent",
  "version": "1.0.0"
}

aegis.agent.delete

Deletion is permanent and cannot be undone. Running executions are not affected, but the agent definition will no longer be available for new task dispatch.

Removes a deployed agent from the registry by UUID.

Access: Operator

skip_judge: true

PropertyTypeRequiredDefaultDescription
agent_idstringYesUUID of the agent to remove.

Output:

{
  "agent_id": "a1b2c3d4-...",
  "deleted": true
}

aegis.agent.generate

Generates an Agent manifest from a natural-language intent.

Access: User

skip_judge: false

PropertyTypeRequiredDefaultDescription
inputstringYesNatural-language intent for the agent to create.

This tool returns an execution_id immediately and starts an async authoring loop. Use aegis.agent.wait or aegis.task.wait to block until the generated agent is deployed.

Output:

{
  "execution_id": "e1f2a3b4-...",
  "status": "started"
}

aegis.agent.logs

Retrieve agent-level activity log snapshot.

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
agent_idstringYesUUID of the agent whose activity log should be retrieved.
limitintegerNo50Maximum number of events to return.
offsetintegerNo0Zero-based starting offset into the activity log.

Output:

{
  "tool": "aegis.agent.logs",
  "agent_id": "a1b2c3d4-...",
  "events": [
    {
      "event_type": "task_started",
      "payload": {},
      "recorded_at": "2026-04-05T12:00:00Z"
    }
  ],
  "total": 42,
  "limit": 50,
  "offset": 0
}

aegis.agent.search

Semantic search over deployed agents by natural-language query.

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
querystringYesNatural-language description of the agent you are looking for.
tenant_idstringNocurrent tenantTenant ID to search within.
limitintegerNo10Maximum results (1–100, tier-dependent cap).
min_scorenumberNo0.3Minimum relevance score threshold (0.0–1.0).
labelsobjectNoLabel key-value pairs to filter by. All must match.
statusstringNoFilter by agent status. One of: active, paused, failed.
include_platform_templatesbooleanNotrueInclude platform-provided template agents.

aegis.agent.search requires a Cortex connection. Results are returned sorted by score descending.

Output:

{
  "tool": "aegis.agent.search",
  "query": "image resizer",
  "results": [
    {
      "id": "a1b2c3d4-...",
      "name": "image-resizer",
      "version": "1.0.0",
      "description": "...",
      "labels": {},
      "score": 0.92
    }
  ],
  "total": 5
}

aegis.agent.wait

aegis.agent.wait is an alias for aegis.task.wait. Both tools share identical parameters and output shape.

Alias for aegis.task.wait. Blocks until an agent execution completes.

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
execution_idstringYesUUID of the execution to wait for.
poll_interval_secondsintegerNo10Seconds between status polls (minimum: 1).
timeout_secondsintegerNo300Maximum seconds to wait before returning a timeout (minimum: 1).

Output:

{
  "execution_id": "e1f2a3b4-...",
  "status": "completed",
  "iteration_count": 3,
  "last_output": "...",
  "last_error": null,
  "started_at": "2026-04-05T12:00:00Z",
  "ended_at": "2026-04-05T12:01:30Z"
}

The status field will be one of completed, failed, cancelled, or timed_out.


Workflow Management Tools (aegis.workflow.*)

These tools manage the workflow registry and control workflow execution lifecycle. For workflow authoring and schema, see the Workflow Manifest Reference.

aegis.workflow.create

Performs strict deterministic and semantic workflow validation, then registers on pass.

Access: System

skip_judge: true

PropertyTypeRequiredDefaultDescription
manifest_yamlstringYesFull Workflow manifest YAML to parse, validate, semantically judge, and register.
forcebooleanNofalseOverwrite an existing version if it already exists.
task_contextstringNoOptional task context to guide semantic judges.
judge_agentsarrayNoJudge agent names to use for semantic validation.
min_scorenumberNoMinimum consensus score required for deployment.
min_confidencenumberNoMinimum consensus confidence required for deployment.

Output:

{
  "workflow_id": "w1b2c3d4-...",
  "deployed": true,
  "name": "my-workflow",
  "version": "1.0.0"
}

aegis.workflow.list

Lists currently registered workflows and metadata.

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
tenant_idstringNolocal tenantOptional tenant identifier.
scopestringNoScope filter. One of: global (global workflows only), visible (user + tenant + global). Omit to list all for the tenant.
user_idstringNoOptional user ID for visible scope filter.

Output:

{
  "workflows": [
    {
      "id": "w1b2c3d4-...",
      "name": "my-workflow",
      "version": "1.0.0",
      "initial_state": "start"
    }
  ]
}

aegis.workflow.validate

Validate a workflow manifest against the schema.

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
manifest_yamlstringYesFull Workflow manifest YAML to parse and deterministically validate.

Output:

{
  "valid": true,
  "errors": null
}

On failure: { "valid": false, "errors": ["error message 1", "error message 2"] }

aegis.workflow.update

Updates an existing Workflow manifest in the registry.

Access: System

skip_judge: true

PropertyTypeRequiredDefaultDescription
manifest_yamlstringYesFull Workflow manifest YAML to update an existing workflow.
forcebooleanNofalseOverwrite an existing version if it already exists.

Output:

{
  "workflow_id": "w1b2c3d4-...",
  "deployed": true,
  "name": "my-workflow",
  "version": "1.0.1"
}

aegis.workflow.export

Exports a Workflow manifest by name.

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
namestringYesName of the workflow to export.

Output:

{
  "manifest_yaml": "kind: Workflow\n...",
  "id": "w1b2c3d4-...",
  "name": "my-workflow",
  "version": "1.0.0"
}

aegis.workflow.delete

Deleting a workflow removes the definition from the registry. In-progress executions are not terminated, but new executions of this workflow will no longer be possible.

Removes a registered workflow from the registry by name.

Access: Operator

skip_judge: false

PropertyTypeRequiredDefaultDescription
namestringYesName of the workflow to delete.

Output:

{
  "workflow_id": "w1b2c3d4-...",
  "deleted": true
}

aegis.workflow.run

Executes a registered workflow by name with optional input parameters.

Access: User

skip_judge: false

PropertyTypeRequiredDefaultDescription
namestringYesName of the workflow to execute.
intentstringNoNatural-language description of the goal for this run. Injected into workflow input and available to agentic states and task activities.
inputobjectNoWorkflow input parameters.
blackboardobjectNoOptional blackboard overrides merged into the execution before startup.
versionstringNolatestSemantic version of the workflow to execute. When omitted, the latest deployed version is used.
tenant_idstringNolocal tenantOptional tenant identifier.

Output:

{
  "execution_id": "e1f2a3b4-...",
  "status": "started"
}

Use aegis.workflow.wait to block until completion.

aegis.workflow.generate

Generates a Workflow manifest from a natural-language objective.

Access: User

skip_judge: false

PropertyTypeRequiredDefaultDescription
inputstringYesNatural-language workflow objective.

Returns an execution_id immediately and starts an async authoring loop. Use aegis.workflow.wait to block until the generated workflow is registered.

Output:

{
  "execution_id": "e1f2a3b4-...",
  "status": "started"
}

aegis.workflow.logs

Returns paginated workflow execution events.

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
execution_idstringYesUUID of the workflow execution whose event log should be retrieved.
limitintegerNo50Maximum number of events to return (max 200).
offsetintegerNo0Number of events to skip for pagination.

Output:

{
  "tool": "aegis.workflow.logs",
  "execution_id": "e1f2a3b4-...",
  "status": "running",
  "events": [
    {
      "sequence": 1,
      "event_type": "state_entered",
      "state_name": "start",
      "iteration_number": null,
      "payload": {},
      "recorded_at": "2026-04-05T12:00:00Z"
    }
  ],
  "total": 12,
  "limit": 50,
  "offset": 0
}

aegis.workflow.wait

Polls a workflow execution until it reaches a terminal state and returns the result.

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
execution_idstringYesUUID of the workflow execution to wait for.
poll_interval_secondsintegerNo5Seconds between polls.
timeout_secondsintegerNo300Maximum wait time in seconds.

Output (completed):

{
  "execution_id": "e1f2a3b4-...",
  "workflow_id": "w1b2c3d4-...",
  "status": "completed",
  "current_state": "end",
  "blackboard": {},
  "started_at": "2026-04-05T12:00:00Z",
  "last_transition_at": "2026-04-05T12:02:00Z"
}

Output (timed out):

{
  "execution_id": "e1f2a3b4-...",
  "status": "running",
  "current_state": "processing",
  "timed_out": true
}

The status field upon completion will be one of completed, failed, or cancelled.

aegis.workflow.cancel

Cancel a running workflow execution.

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
execution_idstringYesUUID of the workflow execution to cancel.

Output:

{
  "tool": "aegis.workflow.cancel",
  "cancelled": true,
  "execution_id": "e1f2a3b4-..."
}

On failure: { "cancelled": false, "error": "execution already in terminal state" }

aegis.workflow.signal

Send human input response to a paused workflow execution.

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
execution_idstringYesUUID of the workflow execution to signal.
responsestringYesHuman input response text to send to the paused workflow.

Output:

{
  "tool": "aegis.workflow.signal",
  "signalled": true,
  "execution_id": "e1f2a3b4-..."
}

On failure: { "signalled": false, "error": "execution is not in a waiting state" }

aegis.workflow.remove

Remove a workflow execution record.

Access: Operator

skip_judge: true

PropertyTypeRequiredDefaultDescription
execution_idstringYesUUID of the workflow execution to remove.

The execution must be in a terminal state (completed, failed, or cancelled) before it can be removed.

Output:

{
  "tool": "aegis.workflow.remove",
  "removed": true,
  "execution_id": "e1f2a3b4-..."
}

On failure: { "removed": false, "error": "execution is not in a terminal state" }

aegis.workflow.promote

Promote a workflow from user scope to tenant scope.

Access: System

skip_judge: false

PropertyTypeRequiredDefaultDescription
namestringYesWorkflow name or ID to promote.
target_scopestringNoglobalTarget scope. One of: tenant, global.
tenant_idstringNolocal tenantOptional tenant identifier.

Promotion elevates a workflow's visibility scope, making it available to a wider set of users. Promoting to global makes the workflow visible to all tenants on the platform.

Output:

{
  "workflow_id": "w1b2c3d4-...",
  "name": "my-workflow",
  "promoted": true,
  "target_scope": "global"
}

aegis.workflow.demote

Demote a workflow from tenant scope to user scope.

Access: System

skip_judge: false

PropertyTypeRequiredDefaultDescription
namestringYesWorkflow name or ID to demote.
target_scopestringNotenantTarget scope. One of: tenant, user.
user_idstringNoOwner user ID when demoting to user scope.
tenant_idstringNolocal tenantOptional tenant identifier.

Demotion narrows a workflow's visibility scope, restricting access to a smaller audience.

Output:

{
  "workflow_id": "w1b2c3d4-...",
  "name": "my-workflow",
  "demoted": true,
  "target_scope": "tenant"
}

aegis.workflow.executions.list

Lists workflow executions, optionally filtered.

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
limitintegerNo20Maximum number of results to return.
offsetintegerNo0Pagination offset.
workflow_idstringNoOptional workflow UUID or workflow name filter.
tenant_idstringNolocal tenantOptional tenant identifier.

Output:

{
  "executions": [
    {
      "execution_id": "e1f2a3b4-...",
      "workflow_id": "w1b2c3d4-...",
      "status": "completed",
      "current_state": "end",
      "started_at": "2026-04-05T12:00:00Z"
    }
  ],
  "total": 42,
  "limit": 20,
  "offset": 0
}

aegis.workflow.executions.get

Returns details of a specific workflow execution.

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
execution_idstringYesUUID of the workflow execution to inspect.
tenant_idstringNolocal tenantOptional tenant identifier.

Output:

{
  "execution_id": "e1f2a3b4-...",
  "workflow_id": "w1b2c3d4-...",
  "status": "completed",
  "input": {},
  "blackboard": {},
  "state_outputs": {},
  "current_state": "end",
  "started_at": "2026-04-05T12:00:00Z",
  "last_transition_at": "2026-04-05T12:02:00Z"
}

aegis.workflow.status

Returns current status of a workflow execution.

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
execution_idstringYesUUID of the workflow execution to inspect.
tenant_idstringNolocal tenantOptional tenant identifier.

Output:

{
  "execution_id": "e1f2a3b4-...",
  "workflow_id": "w1b2c3d4-...",
  "status": "running",
  "current_state": "processing",
  "started_at": "2026-04-05T12:00:00Z",
  "last_transition_at": "2026-04-05T12:01:00Z"
}

aegis.workflow.search

Semantic search over registered workflows.

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
querystringYesNatural-language description of the workflow you are looking for.
tenant_idstringNocurrent tenantTenant ID to search within.
limitintegerNo10Maximum results (1–100, tier-dependent cap).
min_scorenumberNo0.3Minimum relevance score threshold (0.0–1.0).
labelsobjectNoLabel key-value pairs to filter by. All must match.
include_platform_templatesbooleanNotrueInclude platform-provided template workflows.

aegis.workflow.search requires a Cortex connection. Results are returned sorted by score descending.

Output:

{
  "tool": "aegis.workflow.search",
  "query": "data pipeline",
  "results": [
    {
      "id": "w1b2c3d4-...",
      "name": "etl-pipeline",
      "version": "1.0.0",
      "description": "...",
      "labels": {},
      "score": 0.88
    }
  ],
  "total": 3
}

Task Management Tools (aegis.task.*)

These tools start and monitor individual agent executions (tasks). An agent must be deployed before a task can be dispatched against it. For agent lifecycle management, see Agent Management Tools.

aegis.task.execute

Starts a new agent execution (task) by agent UUID or name.

Access: User

skip_judge: false

PropertyTypeRequiredDefaultDescription
agent_idstringYesUUID or name of the agent to execute.
intentstringNoNatural-language description of what the agent should accomplish. Steers the LLM prompt directly. Complementary to structured input.
inputobjectNoStructured data for the agent, validated against spec.input_schema when declared. The well-known sub-field input.prompt (string) holds the full task instructions or user request.
versionstringNolatestSemantic version of the agent to execute. When omitted, the latest deployed version is used.

Use intent for natural-language steering and input.prompt for structured task instructions. Both can be provided together.

Output:

{
  "execution_id": "e1f2a3b4-...",
  "status": "started"
}

Use aegis.task.wait to block until completion.

aegis.task.status

Returns the current status and output of an execution by UUID.

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
execution_idstringYesUUID of the execution to check.

Output:

{
  "execution_id": "e1f2a3b4-...",
  "agent_id": "a1b2c3d4-...",
  "status": "completed",
  "iteration_count": 2,
  "last_output": "...",
  "last_error": null,
  "started_at": "2026-04-05T12:00:00Z",
  "ended_at": "2026-04-05T12:01:00Z"
}

The status field is one of pending, running, completed, failed, or cancelled.

aegis.task.list

Lists recent executions, optionally filtered by agent.

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
agent_idstringNoOptional UUID to filter executions by agent.
limitintegerNo20Maximum number of results.

Output:

{
  "executions": [
    {
      "id": "e1f2a3b4-...",
      "agent_id": "a1b2c3d4-...",
      "status": "completed",
      "started_at": "2026-04-05T12:00:00Z"
    }
  ]
}

aegis.task.cancel

Cancels an active agent execution by UUID.

Access: User

skip_judge: false

PropertyTypeRequiredDefaultDescription
execution_idstringYesUUID of the execution to cancel.

Output:

{
  "execution_id": "e1f2a3b4-...",
  "cancelled": true
}

aegis.task.remove

Removes a completed or failed execution record by UUID.

Access: Operator

skip_judge: false

PropertyTypeRequiredDefaultDescription
execution_idstringYesUUID of the execution to remove.

The execution must be in a terminal state. Use aegis.task.cancel first if the execution is still running.

Output:

{
  "execution_id": "e1f2a3b4-...",
  "removed": true
}

aegis.task.logs

Returns paginated execution events for a task by UUID.

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
execution_idstringYesUUID of the execution whose event log should be retrieved.
limitintegerNo50Maximum number of events to return (capped at 200).
offsetintegerNo0Zero-based starting offset into the persisted event log.

Output:

{
  "tool": "aegis.task.logs",
  "execution_id": "e1f2a3b4-...",
  "status": "completed",
  "events": [
    {
      "sequence": 1,
      "event_type": "iteration_started",
      "payload": {},
      "recorded_at": "2026-04-05T12:00:00Z"
    }
  ],
  "total": 8,
  "limit": 50,
  "offset": 0
}

aegis.task.wait

Polls an execution until it reaches a terminal state and returns the result.

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
execution_idstringYesUUID of the execution to wait for.
poll_interval_secondsintegerNo10Seconds between status polls (minimum: 1).
timeout_secondsintegerNo300Maximum seconds to wait before returning a timeout (minimum: 1).

Output:

{
  "execution_id": "e1f2a3b4-...",
  "status": "completed",
  "iteration_count": 3,
  "last_output": "...",
  "last_error": null,
  "started_at": "2026-04-05T12:00:00Z",
  "ended_at": "2026-04-05T12:01:30Z"
}

The status field will be one of completed, failed, cancelled, or timed_out.

aegis.execution.file

Read a file from a completed execution's workspace volume. Use this to retrieve output files after an agent or task execution finishes. Supports both text and binary files.

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
execution_idstringYesThe execution ID to retrieve a file from.
pathstringYesFile path relative to /workspace (e.g. output.md or /workspace/output.md).

Available in: Agentic, Execute, Workflow modes

The path is automatically normalized — both /workspace/report.md and report.md resolve to the same file. Works after execution completes, while the volume is still available (ephemeral volumes are cleaned up based on TTL).

Output schema:

FieldTypeDescription
execution_idstringThe execution ID the file was retrieved from.
pathstringNormalized file path relative to /workspace.
contentstringFile contents as text. Present only for text files.
content_typestringMIME type of the file (e.g. text/plain, image/png, application/pdf).
is_binarybooleantrue if the file is binary, false for text files.
download_urlstringSigned URL for out-of-band file download. Present only for binary files.
size_bytesnumberSize of the file in bytes.

Text files include their content inline in the content field so LLMs can consume it directly. Binary files (images, PDFs, archives, etc.) omit content and instead provide a download_url for out-of-band retrieval by the client application.

Text file example:

{
  "execution_id": "e1f2a3b4-...",
  "path": "output.md",
  "content": "# Report\n\nAnalysis complete. Found 3 issues...",
  "content_type": "text/markdown",
  "is_binary": false,
  "size_bytes": 1847
}

Binary file example:

{
  "execution_id": "e1f2a3b4-...",
  "path": "chart.png",
  "content_type": "image/png",
  "is_binary": true,
  "download_url": "https://aegis.example.com/v1/executions/e1f2a3b4-.../files/chart.png?token=...",
  "size_bytes": 245120
}

The download URL points to the REST endpoint GET /v1/executions/:id/files/*path, which streams the file directly from the storage backend. The URL includes a short-lived authentication token and expires after the volume's TTL.


Execute Pipeline Tools (aegis.execute.*)

These tools power Execute mode in Zaru and the intent-to-execution API. They run a multi-step pipeline: intent → agent discovery or generation → code generation → execution → result. No pre-existing agent is required.

aegis.execute.intent

Starts the intent-to-execution pipeline: discovers or generates an agent, writes code, executes in a container, and returns the formatted result.

Access: User

skip_judge: false

PropertyTypeRequiredDefaultDescription
intentstringYesNatural-language description of what to execute (e.g. "resize images in /workspace to 800x600").
inputsobjectNoOptional structured inputs passed to the pipeline.
volume_idstringNoephemeralOptional persistent volume ID to use as workspace. When omitted, an ephemeral volume is created.
languagestringNopythonExecution language. One of: python, javascript, bash.
timeout_secondsintegerNoOptional execution timeout in seconds.
tenant_idstringNolocal tenantOptional tenant identifier.

Output:

{
  "pipeline_execution_id": "p1b2c3d4-...",
  "status": "started",
  "stream_url": "https://..."
}

Use aegis.execute.status or aegis.execute.wait to track completion.

aegis.execute.status

Returns the current status of an intent-to-execution pipeline run.

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
pipeline_execution_idstringYesUUID of the pipeline execution to check.
tenant_idstringNolocal tenantOptional tenant identifier.

Output (running):

{ "status": "running" }

Output (completed):

{
  "status": "completed",
  "final_result": "...",
  "duration_ms": 4523,
  "reused_existing_agent": false
}

Output (failed):

{
  "status": "failed",
  "reason": "...",
  "failed_at_state": "code_generation"
}

aegis.execute.wait

aegis.execute.wait is an alias for aegis.workflow.wait. Pass the pipeline_execution_id returned by aegis.execute.intent as the execution_id parameter.

Alias for aegis.workflow.wait. Blocks until pipeline execution completes.

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
execution_idstringYesUUID of the workflow/pipeline execution to wait for. Pass the pipeline_execution_id from aegis.execute.intent.
poll_interval_secondsintegerNo5Seconds between polls.
timeout_secondsintegerNo300Maximum wait time in seconds.

Output: Same shape as aegis.workflow.wait.


Tool Discovery (aegis.tools.*)

These tools enumerate the available MCP tool catalog. Results are filtered by the caller's SecurityContext — different tiers see different subsets of tools.

These tools have no formally enforced input schema in the orchestrator (the schema falls through to a generic { "type": "object" }). The parameters below are the de facto accepted values.

aegis.tools.list

List all MCP tools available to your security context with pagination and optional source/category filtering.

Access: User

skip_judge: true

No parameters — accepts an empty object {}.

Output:

{
  "tool": "aegis.tools.list",
  "tools": [
    {
      "name": "fs.read",
      "description": "Read the contents of a file...",
      "source": "builtin",
      "skip_judge": true
    }
  ],
  "total": 60
}

aegis.tools.search

Search for MCP tools by keyword, name pattern, source, category, or tags. Returns tools matching your query within your security context.

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
querystringNoSearch term matched against tool names and descriptions.

Output:

{
  "tool": "aegis.tools.search",
  "query": "workflow",
  "tools": [
    {
      "name": "aegis.workflow.create",
      "description": "...",
      "source": "builtin",
      "skip_judge": true
    }
  ],
  "total": 19
}

System Tools (aegis.system.*)

aegis.system.info

Returns system version, status, and capabilities.

Access: Operator

skip_judge: true

No parameters — accepts an empty object {}.

Output:

{
  "version": "0.12.0",
  "status": "healthy",
  "capabilities": ["workflows", "cortex", "seal_gateway"]
}

The status field is one of healthy or unhealthy.

aegis.system.config

Returns the current node configuration.

Access: Operator

skip_judge: true

No parameters — accepts an empty object {}.

Returns the raw YAML of the active node-config.yaml. See the Node Configuration Reference for the full schema.

Output:

{
  "config_path": "/etc/aegis/node-config.yaml",
  "content_yaml": "..."
}

Schema Tools (aegis.schema.*)

aegis.schema.get

Returns the canonical JSON Schema for a manifest kind (agent or workflow).

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
keystringYesSchema key to retrieve. Supported values: "agent/manifest/v1", "workflow/manifest/v1".

Output: The full JSON Schema object for the requested manifest type.

aegis.schema.validate

Validates a manifest YAML string against its canonical JSON Schema.

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
kindstringYesManifest kind to validate against. Supported values: "agent", "workflow".
manifest_yamlstringYesFull manifest YAML text to validate against the canonical schema.

Output:

{
  "valid": true,
  "errors": null
}

On failure: { "valid": false, "errors": ["error message 1"] }


Runtime Discovery (aegis.runtime.*)

aegis.runtime.list

List all supported standard runtime environments (language/version pairs). Call this before creating an agent manifest to ensure the declared runtime is valid.

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
languagestringNoFilter by language name (e.g. "python", "go").

Call aegis.runtime.list before writing spec.runtime in agent manifests to verify the exact language + version identifiers accepted by the platform. See the Standard Runtime Registry for the full list.

Output:

{
  "tool": "aegis.runtime.list",
  "runtimes": [
    {
      "language": "python",
      "version": "3.12",
      "image": "ghcr.io/100monkeys/runtime-python:3.12",
      "description": "CPython 3.12",
      "deprecated": false
    }
  ],
  "custom_runtime_supported": true
}

Volume Filesystem Tools (aegis.file.*)

These tools operate on files inside tenant-scoped persistent volumes. Every call is authorized against the caller's bearer token — callers can only reach volumes they own. Paths are resolved relative to the volume root. Volume ownership, quota, and tier limits are enforced by the orchestrator backend; the tool-availability gate itself is uniform across all tiers.

The aegis.file.* family is distinct from the agent-workspace fs.* family. fs.* operates on the mounted ephemeral workspace inside a running agent container; aegis.file.* operates on the caller's persistent user volumes by volume_id.

aegis.file.list

List directory contents in a user volume.

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
volume_idstringYesUUID of the target volume.
pathstringYesDirectory path relative to the volume root.

Output: Directory listing with entry names and file / directory type discriminators.

aegis.file.read

Read the contents of a file in a user volume.

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
volume_idstringYesUUID of the target volume.
pathstringYesFile path relative to the volume root.

Output: File contents. Text files return inline string content. Binary files return a base64-encoded payload or a short-lived download URL depending on size.

aegis.file.write

Write content to a file in a user volume. Creates the file if it does not exist and overwrites it if it does.

Access: User

skip_judge: false

PropertyTypeRequiredDefaultDescription
volume_idstringYesUUID of the target volume.
pathstringYesFile path relative to the volume root.
contentstringYesFile content. Binary payloads must be base64-encoded by the caller.

Output: Confirmation with path and bytes written. Fails if the write would exceed the volume's quota.

aegis.file.delete

aegis.file.delete is destructive and irreversible.

Delete a file or directory in a user volume.

Access: User

skip_judge: false

PropertyTypeRequiredDefaultDescription
volume_idstringYesUUID of the target volume.
pathstringYesFile or directory path relative to the volume root.

Output: Confirmation with the deleted path.

aegis.file.mkdir

Create a directory in a user volume, including any missing parent directories.

Access: User

skip_judge: false

PropertyTypeRequiredDefaultDescription
volume_idstringYesUUID of the target volume.
pathstringYesDirectory path relative to the volume root.

Output: Confirmation with the created path.


Git Repository Tools (aegis.git.*)

Manage SeaweedFS-backed git repository bindings. A binding pairs a remote repository with a persistent volume mounted at /workspace/{label}. The clone is performed asynchronously — aegis.git.clone returns immediately with the binding in a Pending/Cloning state; use aegis.git.status to poll until ready. aegis.git.commit, aegis.git.push, and aegis.git.diff enable canvas-style write-back against the bound volume.

aegis.git.clone

Create a git repo binding and trigger an asynchronous clone into a workspace volume.

Access: User

skip_judge: false

PropertyTypeRequiredDefaultDescription
repo_urlstringYesRepository URL (https://... or git@...).
labelstringYesHuman-readable binding name; the clone is mounted at /workspace/{label}.
credential_binding_idstringNoUUID of a credential binding (SSH key or API key) for private repos.
git_refobjectNo{ kind: "branch", value: "main" }Git ref to check out. Fields: kind (branch / tag / commit) and value.
sparse_pathsarrayNoOptional list of sparse-checkout paths.
auto_refreshbooleanNofalseEnable webhook-driven auto-refresh.
shallowbooleanNotruePerform a shallow clone.

Output: The newly created binding DTO with status Pending or Cloning.

aegis.git.list

List the caller's git repo bindings.

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
pageintegerNoPagination page number.
limitintegerNoMaximum results per page.

Output: Paginated list of binding DTOs.

aegis.git.status

Get clone/refresh status for a git repo binding. Returns the binding with its current status, last commit SHA, and last_cloned_at timestamp.

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
binding_idstringYesUUID of the git repo binding.

Output: Binding DTO with status and most recent commit information.

aegis.git.refresh

Trigger a fetch + checkout to update the bound volume to the latest remote HEAD (for branch refs) or re-verify the pinned ref (for tag / commit refs).

Access: User

skip_judge: false

PropertyTypeRequiredDefaultDescription
binding_idstringYesUUID of the git repo binding.

Output: Confirmation with updated status fields.

aegis.git.delete

Deletes the binding and cascade-deletes the associated volume. Any uncommitted or unpushed work in the bound volume is lost.

Soft-delete a git repo binding and cascade-delete the associated volume.

Access: User

skip_judge: false

PropertyTypeRequiredDefaultDescription
binding_idstringYesUUID of the git repo binding.

Output: Confirmation of deletion.

aegis.git.commit

Stage all changes in the bound volume and commit with the given message. Returns the new commit SHA. Fails if there are no changes to commit.

Access: User

skip_judge: false

PropertyTypeRequiredDefaultDescription
binding_idstringYesUUID of the git repo binding.
messagestringYesCommit message.

Output: Object containing the new commit SHA.

aegis.git.push

Push committed changes to the remote. Requires a credential_binding_id set on the binding for authenticated remotes.

Access: User

skip_judge: false

PropertyTypeRequiredDefaultDescription
binding_idstringYesUUID of the git repo binding.
remotestringNooriginRemote name.
refstringNocurrent branchRef to push.

Output: Confirmation of push with remote and ref details.

aegis.git.diff

Return the unified diff of the bound volume's working tree (or index, if staged: true). Read-only.

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
binding_idstringYesUUID of the git repo binding.
stagedbooleanNofalseIf true, return the diff of the index against HEAD.

Output: Unified-diff text.


Script Library Tools (aegis.script.*)

Persist and retrieve saved TypeScript programs in the caller's script library. Scripts are tenant-scoped; names are unique per tenant. Updates bump a monotonic version number and append to the script's version history. Deletes are soft — version history is retained for audit and the name reservation is released.

aegis.script.save

Persist a TypeScript program to the caller's script library.

Access: User

skip_judge: false

PropertyTypeRequiredDefaultDescription
namestringYesUnique script name (≤128 bytes; no / or \). Duplicate names return 409.
codestringYesTypeScript program source (≤256 KiB).
descriptionstringNoOptional free-form description (≤2 KiB).
tagsarrayNoOptional tags — lowercase alphanumeric plus - / _, ≤32 chars each, ≤16 tags.

Output: The saved script DTO with its assigned id and version: 1.

aegis.script.list

List the caller's saved scripts with optional filters.

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
tagstringNoFilter scripts that contain this tag.
qstringNoCase-insensitive substring filter on script name.

Output: Array of script DTOs (without the versions field).

aegis.script.get

Retrieve a saved script by ID, including its full version history.

Access: User

skip_judge: true

PropertyTypeRequiredDefaultDescription
idstringYesUUID of the saved script.

Output: Script DTO with versions array. Returns 404 for scripts the caller does not own.

aegis.script.update

Update a saved script. Bumps the version monotonically and appends to the script's version history.

Access: User

skip_judge: false

PropertyTypeRequiredDefaultDescription
idstringYesUUID of the saved script.
namestringYesScript name (≤128 bytes).
codestringYesTypeScript program source (≤256 KiB).
descriptionstringNoOptional free-form description.
tagsarrayNoOptional tags.

Output: Updated script DTO with the new version number.

aegis.script.delete

aegis.script.delete is a soft delete — the name reservation is released and new scripts may reuse the name, but the version history is retained for audit.

Soft-delete a saved script.

Access: User

skip_judge: false

PropertyTypeRequiredDefaultDescription
idstringYesUUID of the saved script.

Output: Empty body on success.


Volume Management Tools (aegis.volume.*)

Create, list, and manage tenant-scoped persistent volumes. Volumes are backed by SeaweedFS and subject to per-tier quotas enforced by the orchestrator backend. Every call is authorized against the caller's bearer token — callers can only see and modify volumes they own.

aegis.volume.create

Provision a new persistent volume with a specified storage quota.

Access: User

skip_judge: false

PropertyTypeRequiredDefaultDescription
labelstringYesHuman-readable volume name.
size_limit_bytesintegerYesStorage quota in bytes. Must fall within the caller's tier quota.

Output: The created volume DTO, including its volume_id.

aegis.volume.list

List all persistent volumes owned by the current user.

Access: User

skip_judge: true

No parameters — accepts an empty object {}.

Output: Array of volume DTOs.

aegis.volume.delete

Deleting a volume is destructive and irreversible. All files stored in the volume are removed.

Delete a persistent user volume and all of its contents.

Access: User

skip_judge: false

PropertyTypeRequiredDefaultDescription
volume_idstringYesUUID of the volume to delete.

Output: Confirmation of deletion.

aegis.volume.quota

Get storage quota usage for the current user.

Access: User

skip_judge: true

No parameters — accepts an empty object {}.

Output: Quota summary — total bytes allowed by the caller's tier and bytes currently used across their volumes.


Zaru UI Tools

zaru.init, zaru.mode, and zaru.docs are intercepted by the zaru-mcp-server and are never forwarded to the AEGIS orchestrator. They are only available when using the StreamableHTTP transport and are injected by the Zaru MCP server at the point of tool advertisement.

zaru.init

Activate Zaru in any MCP client. Call this tool at the start of a session to retrieve the current mode, system prompt, available tools, and server version. Any MCP client (Claude Code, Claude Desktop, or the Zaru web UI) should call zaru.init on connection to bootstrap the session.

Access: User

skip_judge: N/A (never reaches the orchestrator)

PropertyTypeRequiredDefaultDescription
modestringNochatThe initial mode to activate. One of: chat, agentic, architect, operator, execute.

Output:

{
  "mode": "chat",
  "system_prompt": "You are Zaru, a helpful AI assistant...",
  "available_tools": ["zaru.init", "zaru.mode"],
  "version": "0.8.0"
}

zaru.mode

Switch to a different conversation mode. Use this when the user's request cannot be fulfilled in the current mode. In the Zaru web UI this renders a confirmation card inline in the chat — the user can accept, refuse, or dismiss. In headless MCP clients the mode switch is applied immediately.

Access: User

skip_judge: N/A (never reaches the orchestrator)

PropertyTypeRequiredDefaultDescription
target_modestringYesThe mode to switch to. One of: chat, agentic, architect, operator, execute.
reasonstringYesShort, plain-language explanation for the user. One sentence.

Output:

{
  "action": "mode_switch_requested",
  "target_mode": "agentic",
  "reason": "This request requires running an agent."
}

In the Zaru web UI, this response renders as an inline confirmation card. The user can accept, refuse, or dismiss the mode switch. In headless MCP clients (Claude Code, Claude Desktop), the mode switch is applied immediately and the response confirms the new mode.

zaru.docs

Search AEGIS and Zaru documentation. Results are fetched from docs.100monkeys.ai and cached for 5 minutes. Available in every conversation mode.

Access: User

skip_judge: N/A (never reaches the orchestrator)

PropertyTypeRequiredDefaultDescription
querystringYesWhat the user wants to know about AEGIS or Zaru.

Output:

{
  "query": "how to create an agent",
  "sections": [
    {
      "title": "Creating Your First Agent",
      "content": "To create an agent, define a manifest YAML...",
      "url": "https://docs.100monkeys.ai/docs/guides/creating-agents"
    }
  ],
  "total_matches": 3
}

Example call:

zaru.docs({ query: "how to create an agent" })

zaru.docs is handled entirely by the zaru-mcp-server. It searches the published documentation at docs.100monkeys.ai and returns matching sections with titles, content excerpts, and direct URLs. Results are cached per query for 5 minutes to reduce latency on repeated lookups.

On this page

Tool Access TiersTool Availability by ContextZaru Conversation Mode Tool SetsChat ModeAgentic ModeExecute ModeArchitect ModeOperator ModeQuick-Reference TableFilesystem Tools (fs.*)fs.readfs.writefs.listfs.create_dirfs.deletefs.editfs.multi_editfs.grepfs.globWeb Tools (web.*)web.searchweb.fetchDispatch Protocol Tool (cmd.run)cmd.runAgent Management Tools (aegis.agent.*)aegis.agent.createaegis.agent.listaegis.agent.updateaegis.agent.exportaegis.agent.deleteaegis.agent.generateaegis.agent.logsaegis.agent.searchaegis.agent.waitWorkflow Management Tools (aegis.workflow.*)aegis.workflow.createaegis.workflow.listaegis.workflow.validateaegis.workflow.updateaegis.workflow.exportaegis.workflow.deleteaegis.workflow.runaegis.workflow.generateaegis.workflow.logsaegis.workflow.waitaegis.workflow.cancelaegis.workflow.signalaegis.workflow.removeaegis.workflow.promoteaegis.workflow.demoteaegis.workflow.executions.listaegis.workflow.executions.getaegis.workflow.statusaegis.workflow.searchTask Management Tools (aegis.task.*)aegis.task.executeaegis.task.statusaegis.task.listaegis.task.cancelaegis.task.removeaegis.task.logsaegis.task.waitaegis.execution.fileExecute Pipeline Tools (aegis.execute.*)aegis.execute.intentaegis.execute.statusaegis.execute.waitTool Discovery (aegis.tools.*)aegis.tools.listaegis.tools.searchSystem Tools (aegis.system.*)aegis.system.infoaegis.system.configSchema Tools (aegis.schema.*)aegis.schema.getaegis.schema.validateRuntime Discovery (aegis.runtime.*)aegis.runtime.listVolume Filesystem Tools (aegis.file.*)aegis.file.listaegis.file.readaegis.file.writeaegis.file.deleteaegis.file.mkdirGit Repository Tools (aegis.git.*)aegis.git.cloneaegis.git.listaegis.git.statusaegis.git.refreshaegis.git.deleteaegis.git.commitaegis.git.pushaegis.git.diffScript Library Tools (aegis.script.*)aegis.script.saveaegis.script.listaegis.script.getaegis.script.updateaegis.script.deleteVolume Management Tools (aegis.volume.*)aegis.volume.createaegis.volume.listaegis.volume.deleteaegis.volume.quotaZaru UI Toolszaru.initzaru.modezaru.docs