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. 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. See Tasks & Cronjobs.
resume_taskSend a follow-up answer back to a paused task (one that asked a question).
list_tasksList background tasks with status filters.
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).
edit_cronjobUpdate a cronjob's prompt, name, schedule, action_type, provider, 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.

User delivery

ToolNotes
send_file_to_userDeliver a file (≤ 50 MB) to the active user's channel — web chat or Telegram. Refuses to run in background contexts where there is no active user (e.g. cronjob task runs); use the chat session as the delivery surface in those cases.

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).

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.

Three 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.

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"
    }
  }
}

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 is stored encrypted at rest.

See also

Released under the MIT License.