Built-in Tools
Every turn the agent receives a tool registry — the concrete list of functions it can call. Most tools are always on because they're load-bearing for how Axiom works (memory, files, chat history, background tasks). A few are opt-in because they need an external service or a key.
The complete list below is what the agent sees in <available_tools> (see System Prompt → Available Tools). When you toggle a tool off in the UI, its line literally disappears from the prompt — there is no out-of-band capability list.
Filesystem & shell
These are the agent's hands. They run inside the workspace dir (/workspace in Docker) and are unrestricted — there is no allow-list, no per-command confirmation. Treat the agent as a non-root shell user.
| Tool | Notes |
|---|---|
shell | Execute a shell command and return stdout/stderr. Honors cwd = /workspace and a 60s default timeout. Use sudo for privileged ops (apt-get install, systemctl, …). |
read_file | Read a file by path. Text output is capped at 2000 lines or 50 KB per call; offset / limit page through longer files. Images (PNG, JPEG, GIF, WebP, TIFF, AVIF; not HEIC) are attached so a vision-capable model can see them, rotated and downscaled the same way as chat uploads. Other binary files are not dumped as text. Has special handling for SKILL.md files under /data/skills/ and /data/skills_agent/ — auto-injects {baseDir} and tracks usage. |
write_file | Overwrite or create a file (creates parent dirs). Prefer edit_file for surgical changes — it diffs cleanly in the UI and is harder to misuse. |
edit_file | Exact-text replacement: {oldText, newText} pairs. oldText must be unique and present in the file. Preferred over write_file for surgical changes. |
list_files | List a directory's entries with a [dir] / [file] prefix. |
Memory & history
The agent's read-side into its own past. These tools are what make the Memory System actually queryable instead of just static files in the prompt.
| Tool | Notes |
|---|---|
read_chat_history | Full-text search over past chat messages with filters for datetime range, source (web / telegram / task), role (user / assistant / tool / system), and session id. Pagination via limit (default 100, max 500) and offset. |
search_memories | Searches the atomic facts produced by fact extraction. Returns up to 50 facts per query. |
list_agent_skills | Browse every self-created skill under /data/skills_agent/ with its description, location, last-used date, and any missing required env vars. The 10 most recent are already injected into the prompt; this tool reaches the rest. See Skills. |
Tasks, cronjobs & reminders
The agent can spawn its own background workers and schedule recurring or one-shot work without touching the host's cron. Defaults (provider, max duration, loop detection, telegram delivery) live under Settings → Tasks.
| Tool | Notes |
|---|---|
create_task | Spawn a background agent with a self-contained prompt. Optional provider / model to pin a specific runtime, optional thinking_level for the reasoning effort, optional attached_skills to bake skill rules into the task prompt. See Tasks & Cronjobs. |
resume_task | Send a follow-up answer back to a paused task (one that asked a question). |
list_tasks | List your background tasks with status filters. Admins also see other users' tasks, but only title, owner and status. |
stop_task | Stop a running background task. Regular users can stop their own tasks; admins can stop any task. |
create_cronjob | Create a recurring scheduled task. Standard 5-field cron expression, evaluated in the configured timezone. Two action_types: task (full agent run) or injection (deliver a static message verbatim). Optional thinking_level and attached_skills. |
edit_cronjob | Update a cronjob's prompt, name, schedule, action_type, provider, thinking level, or enabled flag. |
remove_cronjob | Permanently delete a cronjob. |
list_cronjobs | List all cronjobs with schedules, status, and next run times. |
get_cronjob | Fetch a single cronjob's full configuration including its complete prompt. |
create_reminder | One-shot scheduled message delivered to the chat at a specific time. Lighter than a cronjob — no agent spawned, no recurrence. |
Provider quota
| Tool | Notes |
|---|---|
provider_quota | Returns the current subscriber usage quota — or, for credit-based gateways such as Radius and OpenRouter, the prepaid credit balance — for LLM providers (Anthropic Claude Pro/Max, ChatGPT Codex, OpenCode, z.ai, Radius, OpenRouter, …). Accepts an optional providerId to scope to one provider and an optional refresh flag to force a live fetch (for the selected provider, or all of them when providerId is omitted). Without refresh, returns the cached snapshot from the subscriber usage quota monitor (polled in the background). Like the provider API, the tool answers admin users only; a provider refreshed less than a minute ago keeps serving cached data. |
User delivery
| Tool | Notes |
|---|---|
send_file_to_user | Deliver a file (≤ 50 MB) to the active user's channel — web chat or Telegram. Chat only: background tasks (including cronjob task runs and the heartbeat) don't get this tool, because nothing would deliver the file; they report the path and the chat agent sends it. |
Optional built-in tools
These tools are part of Axiom but off (or behind a config) by default — usually because they need an API key, an external service, or because not every install needs them. They show up in the prompt only when enabled.
transcribe_audio
Whisper-compatible speech-to-text. Disabled by default, since it needs either an OpenAI key, a self-hosted Whisper server, or an Ollama provider with a Whisper model.
When enabled, the agent gets a transcribe_audio tool that takes an audio file path (relative to the workspace), an optional language hint, and an optional cleanup flag to strip filler words and fix punctuation via the configured rewrite provider.
Where to configure: Settings → Speech-to-Text (/settings?tab=stt).
generate_image
Generates or edits images with an image generation model. Registered only while image generation is switched on under Settings → Image Generation (default: on) and at least one image model is enabled under Providers → Image models; the interactive agent picks up changes before the next turn, background agents as soon as the setting or the image model list changes.
Parameters: prompt (required), model (optional, defaults to the default image model), aspect_ratio, quality and background (optional; how they apply depends on the image backend), n (optional, 1 to the configured max variants per call, default limit 4) and input_images (optional workspace paths to edit or combine). Images are saved under the configured output folder (default /workspace/images/) in a YYYY-MM-DD/ subfolder with a JSON sidecar; the result reports paths, format, size, the cost (billed, estimated or included in a ChatGPT subscription), the duration and any parameter adjustments — never image data. Deliver files with send_file_to_user. The tool description points the agent to the built-in image-generation skill. Details: Image Generation.
Where to configure: Providers (models) and Settings → Image Generation (on/off, default model, limits, output folder).
web_fetch
Fetches a single URL and returns extracted readable text — scripts, styles, and HTML chrome are stripped, whitespace is normalized. Enabled by default, no provider choice and no key required.
Designed to pair with web_search: the agent searches first, picks a result, then fetches the full page. It also works standalone for any URL the user pastes into chat.
Where to configure: Web UI → Skills → Built-in Tools tab. Only one knob: enabled or not. Persisted to settings.json:
{
"builtinTools": { "webFetch": { "enabled": true } }
}web_search
Runs a search query and returns a list of {title, url, snippet} results. Enabled by default with the DuckDuckGo backend, which needs zero configuration.
Four backends are available — pick one in the UI:
| Provider | Setup | Notes |
|---|---|---|
duckduckgo | nothing | Default. Zero config, no key, no external account. Rate-limited; fine for casual use. |
brave | needs braveSearchApiKey | Enter the key in the same UI card. Stored encrypted in builtinTools.webSearch.braveSearchApiKey. Better quality and structured snippets; sign up at https://api-dashboard.search.brave.com. |
searxng | needs searxngUrl | Point at your own SearXNG instance, e.g. http://searxng:8080. Best for self-hosted/private setups; no third-party calls. |
tavily | needs tavilyApiKey | AI-optimized search API. Sign up at https://app.tavily.com (1,000 queries/month free). Stored encrypted in builtinTools.webSearch.tavilyApiKey. |
Switching the provider takes effect on the next prompt — no restart needed.
Where to configure: Web UI → Skills → Built-in Tools tab. Persisted to settings.json — the full shape with every key:
{
"builtinTools": {
"webSearch": {
"enabled": true,
"provider": "duckduckgo",
"braveSearchApiKey": "<encrypted>",
"searxngUrl": "http://searxng:8080",
"tavilyApiKey": "<encrypted>"
}
}
}Only the keys relevant to the chosen provider are read — the others are ignored but kept around so you can switch back without re-entering them. braveSearchApiKey and tavilyApiKey are stored encrypted at rest.
codemode
Experimental, off by default. A script tool: the agent writes a JavaScript script that calls its own tools — in parallel, chained, filtered — and only the script's output reaches the model. It is registered separately for the interactive agent and for background task agents, and each cronjob can override the task-side switch (inherit / on / off). When active, the agent's system prompt gets a short guideline telling it when a script pays off (batching, chaining, filtering) and when a single call should go direct.
Where to configure: Settings → Agent → Codemode (interactive agent), Settings → Tasks → Codemode (background tasks) and the per-cronjob three-way control. Full details — use cases, limits, the spill folder: Codemode.
See also
- System Prompt → Available Tools — how the active tool list is rendered into the prompt every turn.
- Tasks & Cronjobs — the state machine behind
create_task/create_cronjob/create_reminder. - Memory System — what
read_chat_historyandsearch_memoriesactually search. - Provider Management → Subscriber usage quota — how the quota monitor polls providers behind the scenes.
- Skills — how to extend the agent beyond the built-in tool list.
- Image Generation — image models, the
generate_imagetool and its output files. - Codemode — the experimental script tool that batches, chains and filters tool calls.