Skip to content

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.

ToolNotes
shellExecute 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_fileRead 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_fileOverwrite 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_fileExact-text replacement: {oldText, newText} pairs. oldText must be unique and present in the file. Preferred over write_file for surgical changes.
list_filesList 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.

ToolNotes
read_chat_historyFull-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_memoriesSearches the atomic facts produced by fact extraction. Returns up to 50 facts per query.
list_agent_skillsBrowse 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.

ToolNotes
create_taskSpawn 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_taskSend a follow-up answer back to a paused task (one that asked a question).
list_tasksList your background tasks with status filters. Admins also see other users' tasks, but only title, owner and status.
stop_taskStop a running background task. Regular users can stop their own tasks; admins can stop any task.
create_cronjobCreate 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_cronjobUpdate a cronjob's prompt, name, schedule, action_type, provider, thinking level, or enabled flag.
remove_cronjobPermanently delete a cronjob.
list_cronjobsList all cronjobs with schedules, status, and next run times.
get_cronjobFetch a single cronjob's full configuration including its complete prompt.
create_reminderOne-shot scheduled message delivered to the chat at a specific time. Lighter than a cronjob — no agent spawned, no recurrence.

Provider quota ​

ToolNotes
provider_quotaReturns 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 ​

ToolNotes
send_file_to_userDeliver 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:

json
{
  "builtinTools": { "webFetch": { "enabled": true } }
}

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:

ProviderSetupNotes
duckduckgonothingDefault. Zero config, no key, no external account. Rate-limited; fine for casual use.
braveneeds braveSearchApiKeyEnter 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.
searxngneeds searxngUrlPoint at your own SearXNG instance, e.g. http://searxng:8080. Best for self-hosted/private setups; no third-party calls.
tavilyneeds tavilyApiKeyAI-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:

json
{
  "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 ​

Released under the MIT License.