OAra Labs | Docs

Using it

Builtin tools

What the agent can actually call. Read out of the tool registry and each tool's own class, so this page cannot list a tool that is gone or miss one that shipped.

Not the CLI These are agent tools — the functions the model calls mid-turn (bash, write_file, web_search). The CLI reference is a different thing: the oara subcommands you type, generated from the argument parser. Two inventories, two generators, two pages. Keep them apart.
Generated Produced by gen-tools.py from create_tool_registry in prometheus/__main__.py and the name / description each tool class declares. Descriptions are the text the model sees, verbatim. Regenerate with python3 gen-tools.py --src <checkout> > docs-src/tools.body.html. A tool nobody files under a heading aborts the build rather than disappearing.

Captured from Prometheus at feca69e: 51 tools register on every install, plus 3 that register when their subsystem is on (marked below). Dynamic MCP tools extend the set at runtime and are not listed here.

How they run

Each turn's tool calls are partitioned by is_read_only(). Read-only calls run concurrently under asyncio.gather; mutating calls run one at a time, in order. The security gate's PreToolUse and PostToolUse hooks fire on every call regardless. See Tokens and the open web API for what the gate refuses.

Files and shell

The working set. Where most calls land.

ToolWhat it does
bashRun a short shell command in the local repository. For work that outlives this turn (long builds, downloads, file watches) use task_create instead of 'nohup … &' — a backgrounded Bash job is killed at the timeout and left untracked.
read_fileRead a text file from the local repository.
write_fileCreate or overwrite a file with UTF-8 text content, written verbatim. Handles any text-based format (.md, .py, .json, .csv, .svg, .html). For binary or converted formats (.pdf, .docx, .xlsx, images), write the source as text with this tool, then convert it via bash (e.g. pandoc, python-docx, libreoffice) — do not refuse these formats.
edit_fileEdit an existing file by replacing a string.
grepSearch file contents with a regular expression.
globList files matching a glob pattern.
notebook_editEdit a cell in a Jupyter notebook (.ipynb). Can replace or append cells, and creates the notebook if it doesn't exist.

Work that outlives the turn

Managed background tasks and the sessions that run them.

ToolWhat it does
task_createCreate a managed background task instead of running a long job with 'nohup … &'. Types: local_bash (shell command), local_agent (sub-agent prompt), file_watch (wait for a file matching a glob), poll (run a predicate command until it succeeds). The daemon detects completion and sends a Telegram notification; set on_complete='reengage'/'both' to also have the agent act on the result. Returns a task id immediately.
task_getGet the status and details for a background task.
task_listList all background tasks, optionally filtered by status.
task_updateUpdate a task's description, progress percentage, or status note.
task_stopStop (terminate) a background task.
task_outputRead the tail of a background task's output log.
sessions_listList agent sessions (background tasks) with their IDs, status, and descriptions. Use to discover running agents.
sessions_sendSend a text message to a running agent session (by task ID). The message is written to the session's stdin.
sessions_spawnCreate a new background agent session with the given prompt. Returns the session/task ID for tracking.
agentLaunch a subagent to handle a complex task autonomously. The subagent runs with isolated context and returns its result.

Web and media

Fetching, searching, generating.

ToolWhat it does
web_fetchFetch any URL (web page, GitHub repo, API endpoint, raw file) and return its text content. Use this for: fetching GitHub repos, reading documentation, calling JSON APIs, reading any public URL. Handles 404/403/private URLs gracefully without crashing.
browserHeadless browser automation for pages that require JavaScript rendering, login flows, or interactive elements. Use web_fetch instead for simple URL fetching — only use browser when the page won't work without JavaScript.
youtube_transcriptFetch the transcript/subtitles from a YouTube video by URL or video ID. Returns the full text content without downloading the video.
download_fileDownload a file from a URL to local disk. Saves to ~/.prometheus/downloads/ by default. Streams with a size limit.
image_generateGenerate an image from a text prompt. Backends: 'pollinations' (free hosted, no key), 'comfyui' (local GPU, FLUX-backed, sovereign), 'dashscope' (PAID Alibaba WAN 2.5 — only when explicitly requested). Default 'auto' picks comfyui when reachable else pollinations; auto NEVER picks the paid backend. Returns the path to the saved image. Defaults: 1024x1024, flux model. Set seed for reproducible output.
video_generateGenerate a video from a text prompt via the Kling 3.0 API (PAID — requires KLING_ACCESS_KEY + KLING_SECRET_KEY). Pass image_path for image-to-video (the image becomes the first frame). Durations 5 or 10 seconds. Generation takes MINUTES — the tool waits and polls. Returns the path to the saved .mp4 in ~/.prometheus/cache/videos/.
ttsConvert text to speech audio using a local engine (espeak-ng or piper). Returns the path to the generated audio file.
dashboardStart a lightweight HTTP server that serves the provided HTML content. Returns the URL to view the dashboard. Binds to localhost by default, so the URL is reachable from this machine only; an operator can widen it with the security.dashboard_tool_bind_host config key, in which case the URL names the Tailscale or LAN address.

Memory, wiki and context

What the daemon remembers, and how the agent reads it back.

ToolWhat it does
memoryManage persistent memory entries. Call 'add' when the user shares a durable fact about themselves (preferences, key contacts, ongoing projects) or about the system (infrastructure, conventions, decisions) that should persist across sessions. Use 'replace' to update, 'remove' to delete, 'list' to read all entries.
wiki_compileCompile extracted memory facts into the Prometheus wiki. Pass an entity_name to compile facts for a single entity, or omit it to compile all facts since the last compilation.
wiki_querySearch the Prometheus wiki for answers to knowledge questions. Returns relevant wiki page content. Substantial multi-page answers are saved to wiki/queries/ for future reference.
wiki_lintScan the wiki for health issues: orphan pages, broken links, stale pages, duplicate entities, missing cross-references, and category imbalance. Optionally auto-fix safe issues.
lcm_grepSearch conversation history and summaries using FTS5 full-text search. Returns matching messages and/or summary nodes ranked by relevance.
lcm_expandExpand an LCM summary node to see its source content. Depth-0 summaries expand to original messages; higher-depth summaries expand to child summary nodes.
lcm_describeShow metadata for a specific LCM summary node (depth, parents, source count, token count, etc.) or overall LCM statistics (total messages, summaries, max depth, compression ratio).
lcm_expand_querySearch compressed conversation history for context relevant to a question, then expand the most relevant summary nodes back to their original messages. Use this when you need to recall details from earlier in the conversation that may have been compressed by LCM.
vault_readRead a file from the BRAIN VAULT by its vault-relative path — compiled pages under wiki/, original sources under raw/, human notes under notes/. Read-only. Large files come in windows: a partial read names the true size, the next offset, and an outline of '@offset heading' jump targets. Use vault_search first to find the path (its context lines carry @offset for jumping).

Scheduling and people

Cron, messages out, questions back.

ToolWhat it does
cron_createCreate or replace a local cron job. Accepts standard 5-field cron expressions OR natural-language phrases like 'every Monday at 9am' or 'in 30 minutes'. Jobs are executed by the Prometheus cron scheduler.
cron_deleteDelete a local cron job by its unique name.
cron_listList all registered cron jobs with schedule, status, and next run time.
messageSend a text message to Discord (webhook), Slack (webhook/bot), Telegram (bot API), or a generic webhook endpoint.
ask_userAsk the user a question and wait for their response. Use when you need clarification before proceeding.
todo_writeAppend a TODO item to a project markdown checklist.

Introspection

The daemon looking at itself.

ToolWhat it does
anatomyQuery Prometheus infrastructure state — hardware, loaded model, VRAM, services, project configurations, and architecture diagrams.
sentinel_statusReturns the current state of the SENTINEL proactive subsystem: observer state, dream engine state, recent signals, pending nudges, and last dream cycle results.
audit_queryQuery recent security gate decisions. Use to debug why something was blocked. — registers when the security gate has an audit log (it does by default)
skillRead a builtin or user-defined skill by name.
mcp_statusShow MCP server connection status and available tools. — daemon only, when MCP servers are configured
lspCode intelligence: get definitions, references, type info, diagnostics, and document symbols via LSP. Use the 'context' action to get definition + references + type info in a single call (recommended). — daemon only, when lsp.enabled is true

SYMBIOTE

Code assimilation. Experimental, off by default; the tools register but the coordinator behind them only runs when symbiote.enabled is true.

ToolWhat it does
symbiote_scoutSearch GitHub for open-source solutions to a capability gap. Returns a ranked candidate list. Read-only; no clones, no writes.
symbiote_harvestClone an approved GitHub repository, scan its source, extract relevant modules. Requires Trust Level 1 approval upstream.
symbiote_graftApply the harvest's adaptation plan: write adapted files with provenance headers, generate tests, run the suite, update PROMETHEUS.md. Requires Trust Level 1 approval upstream.
symbiote_statusReturn the current SYMBIOTE session state (or a named session). Optionally include the most recent N past sessions.

If a tool here reads wrong, the fix is its description in the source — this page follows it.