Skip to main content

Built-in Tools

Some tools are exposed to the agent without declaring a tools.modules entry - they're either always-available primitives provided by the context_builder module, or short-named aliases the runtime adds when the corresponding module is loaded.

This page is the authoritative list. Every entry maps to a real @action in the codebase; entries are cited with file + line.

Always-available primitives (context_builder)

context_builder is auto-loaded by the runtime (no YAML declaration needed). It exposes 9 actions plus 1 action. Every agent in every mode (direct / compact / discovery) gets access to these.

ToolSourceDescription
search_toolsHybrid (semantic + keyword) search over the agent's visible tool index.
get_toolFull JSON schema + examples + side-effects + aliases for one tool.
execute_toolExecute a tool by name with parameters. The agent loop also auto-routes direct calls (e.g. filesystem.read({...})) through this action.
list_categoriesList all tool domains (modules) currently visible to this agent.
browse_categoryPaginated list of tools in one domain.
run_parallelExecute multiple tool calls concurrently via asyncio.gather.
use_skillInvoke a /command skill from dev.skills or the bundle's skills/ dir.
call_appCall another deployed Digitorn app as a tool (composition pattern).
ask_userPause the loop and ask the user a typed question (HITL).
background_runLaunch any tool as a background task. One action, five modes dispatched by params: launch (name+params), status (task_id), cancel (task_id+cancel=true), wait (task_id+wait=true+timeout), list (list_tasks=true).

Short-name aliases registered in:

Short aliasFQN
AskUsercontext_builder.ask_user
BackgroundRuncontext_builder.background_run
Agentagent_spawn.agent (when the agent_spawn module is loaded - see below)

Watcher primitives (gated by runtime.watchers: true). Seven

actions appear in the agent's tool index when runtime.watchers is enabled.

ToolSourceDescription
watch_startStart a periodic watcher that runs a tool every N seconds and records the result.
watch_stopStop a watcher (frees its slot).
watch_pausePause a running watcher.
watch_resumeResume a paused watcher.
watch_statusGet a single watcher's status, last result, run count, error rate.
watch_listList all watchers (active + paused).
watch_historyLast N check results for one watcher.

Watchers are persistent - they survive across turns. Disable them explicitly when the app no longer needs them (set runtime.watchers: false and redeploy, or call watch_stop from a turn).

Scheduler primitives (gated by runtime.scheduler: true)

Provided by the cron_native module. Three actions:

ToolSourceDescription
scheduleSchedule a tool call. Accepts at: <ISO timestamp> (one-shot), delay: <seconds> (one-shot), or cron: <expr> (recurring).
cancel_scheduleCancel a scheduled job by id.
remindConvenience wrapper that schedules a "self-prompt" reminder back to the agent at a given time.

runtime.scheduler: true requires runtime.watchers: true (RuntimeBlock.scheduler).

The legacy schedule_once, schedule_cron, schedule_cancel, schedule_list, schedule_status action names referenced in older docs do not exist in the code. Use the three actions above.

Memory tools (gated by tools.modules.memory)

When memory is declared under tools.modules, four actions become available (all four @action decorators).

ToolShort aliasSourceDescription
memory.task_createTaskCreateCreate a task in the agent's working-memory todo list.
memory.task_updateTaskUpdateUpdate a task's status (pending, in_progress, done, blocked) or other fields.
memory.set_goal-Set or update the agent's current high-level goal.
memory.rememberRememberStore a long-term fact that survives compaction. Searchable via the same module's recall layer at runtime.

Short aliases come. Anything else (set_plan, update_plan_step, add_todo, add_fact, recall, forget, track_entity, add_relationship, checkpoint, cache_content, get_snapshot, add_episode, ...) does not exist as an @action - those names appeared in older drafts and were never implemented. The four actions above are the entire surface of the memory module today.

See Cognitive Memory for how the agent uses these in practice.

Agent-spawn tool (gated by agent_spawn module loaded)

The agent_spawn module exposes a single @action named agent. Eight modes are dispatched by params (the implementation routes through the _mode_* private methods).

# Compile-time config: load the module via capabilities or per-agent grant
tools:
capabilities:
grant:
- { module: agent_spawn }
ModeParamsResult
Spawn (sync)prompt (+ optional specialist, wait=true default)Returns the spawned agent's final result. Blocks the parent turn.
Spawn (async)prompt, wait=falseReturns agent_id immediately. Background.
Statusagent_idCurrent state (running / done / failed / cancelled).
Wait oneagent_id, wait=true, timeoutBlock until that agent finishes.
Wait manyagent_ids: [a, b, ...] (or omit for all)Block until each is done; returns each result.
Cancelagent_id, cancel=trueForce-cancel a running spawn.
Reassignagent_id, reassign: <new prompt>Cancel + respawn the same id with a new task.
Listlist=trueAll current spawns and their status.

Short alias: Agentagent_spawn.agent.

The legacy short names AgentWait, AgentWaitAll, AgentResult, AgentStatus, AgentCancel, AgentList, ReassignAgent referenced in older docs do not exist as separate tools. Every mode is reached via the single Agent/agent_spawn.agent action with the appropriate params.

See Multi-Agent for orchestration patterns.

Workspace tools (gated by tools.modules.workspace)

When the workspace module is loaded, six short-named actions () appear in the agent's index. They operate on the in-memory virtual filesystem streamed to the client via Socket.IO, not the OS filesystem.

ShortFQN
WsWriteworkspace.write
WsReadworkspace.read
WsEditworkspace.edit
WsGlobworkspace.glob
WsGrepworkspace.grep
WsDeleteworkspace.delete

See Workspace & Preview for the renderer modes (react / vue / latex / slides / code) and the live-preview pipeline.

Web-preview tools (gated by tools.modules.web_preview)

When the web_preview module is loaded, four short-named actions appear in the agent's index. They drive the iframe preview pane - the agent attaches it to a dev server it spawned (proxy) or to a directory it built (static), per session.

ShortFQNPurpose
PreviewProxyweb_preview.proxyProxy the iframe to a TCP port the agent's dev server is listening on.
PreviewPublishweb_preview.publishBuild the project once and serve the static output same-origin under /api/apps/{id}/sessions/{sid}/published/.
PreviewDetachweb_preview.detachDrop a previously-registered attachment by name.

The agent is responsible for spawning dev servers itself (Bash(run_in_background=true)) and resolving port conflicts. The daemon never spawns servers on its own. See Workspace & Preview → web_preview for the three regimes (proxy / static / declarative) and the LLM communication contract.

Other short-name aliases

Defined and active when the corresponding module is loaded:

ShortFQNModule
Read, Write, Edit, Grep, Globfilesystem.<name>filesystem (5 actions; use Bash for ls / mv / cp / rm)
Bashshell.bashshell
WebSearch, WebFetchweb.search, web.fetchweb (4 actions; the 2 unaliased - extract, download - are called via FQN)
LintCheck, LintFilelsp.diagnostics, lsp.checklsp
DbConnect, DbDisconnect, DbList, DbQuery, DbTransaction, DbBulkInsert, DbSchema, DbBrowse, DbRelations, DbSearchdatabase.<name> (high-level aliases)database (16 actions total; the 6 lower-level ones - execute_query, fetch_results, list_tables, introspect, describe, extract_for_index - are called via FQN)

The full mapping (single source of truth) is in the runtime tool catalog.

Tool injection - what the agent actually sees

Whether a built-in shows up in the agent's tool index depends on the tool injection mode:

InjectionMeta + always-available primitivesModule tools (gated short aliases above)Domain tools (filesystem, database, http, ...)
directDirect (full schemas)DirectDirect
compact_directDirect (full schemas)Direct (compact: name + 1-line)Direct (compact)
discoveryDirect (always)Direct (the gated short aliases stay direct)Behind search_tools / browse_category / get_tool / execute_tool

In every mode the meta-tools and the watcher / scheduler / agent_spawn / memory / workspace gated tools are always directly callable - the agent never has to "discover" them. Discovery mode only hides non-strategic domain tools.

Cross-references