Tools
v1 status: hand-written from
src/tools/mod.rs. Will be generated by introspecting the tool registry — each tool’sname(),description(), andparameters_schema()— in a later iteration.
Always-on tools
These register unconditionally:
| Name | Description |
|---|---|
shell | Execute a shell command. Sandboxed (via the auto-detected sandbox) and command-allowlisted. |
file_read | Read a file from the workspace |
file_write | Write a file to the workspace |
glob_search | Glob over workspace paths |
cron_add | Schedule a recurring job |
cron_list | List scheduled jobs |
cron_remove | Remove a scheduled job |
cron_update | Update a scheduled job |
cron_run | Run a scheduled job ad-hoc |
cron_runs | Inspect job run history |
memory_store | Persist a fact to long-term memory |
memory_recall | Hybrid lexical+vector search over memory |
memory_forget | Delete a memory entry |
schedule | Schedule an action |
proxy_config | Read or update HTTP proxy config |
git_operations | Git commands wrapped as tool calls |
pushover | Send a Pushover notification |
pdf_read | Extract text from a PDF |
screenshot | Capture a screenshot |
image_info | Inspect image metadata |
skills_list | List installed skills |
skill_view | Read the prompt/metadata of an installed skill |
skills_search | Search across installed skill prompts |
skills_install | Install a skill from a git URL or local path |
skills_install_deps | Run a skill’s brew/npm/uv/go/download install recipes |
Conditional tools
These only register when their gate is satisfied:
| Tool | Gate |
|---|---|
browser_open, browser | [browser].enabled = true |
http_request | [http_request].enabled = true |
web_search_tool | [web_search].enabled = true (note the _tool suffix) |
composio | [composio].api_key is set (gives access to ~150 app integrations) |
delegate | [[agents]] is configured (multi-agent dispatch) |
list_tasks, get_task, create_task, update_task_status, create_subtask, complete_subtask, review_task, add_comment, read_comments | [tasks].enabled = true |
Default vs all
default_tools()—shell,file_read,file_write,glob_search. Used when the agent runs in minimal mode.all_tools_with_runtime()— every always-on tool plus all conditionals whose gates are satisfied.
The factory functions live in src/tools/mod.rs.
Notes on validation
Tool parameter schemas (returned by parameters_schema()) are what the LLM is told about. They are not validated by the runtime at execute time — tools manually pull args via args.get("foo").and_then(...) patterns. Consequently:
- Schema correctness is a discipline matter, not a runtime guarantee.
- Tools handle their own missing-arg / wrong-type errors; they return
ToolResult { success: false, error: Some(...) }rather than panicking.
For full parameter schemas of each tool, see the implementation at src/tools/<name>.rs.
Peripheral-contributed tools
When [peripherals] is configured, each registered board contributes additional tools via its Peripheral::tools() implementation. Common ones:
| Tool | Source |
|---|---|
hardware_board_info | Any registered peripheral |
hardware_memory_map | Boards that expose a memory map |
hardware_memory_read | Boards that expose readable memory |
Boards may also contribute flash/upload tools (Arduino, Nucleo). The exact set depends on which boards are enabled — see Reference → CLI (rantaiclaw hardware, rantaiclaw peripheral) and src/peripherals/.
Skill-defined tools
Skills installed under <profile>/skills/<slug>/ can declare their own tools in SKILL.toml. These are exposed to the LLM with the prefix skill_<skill>_<tool> and run via SkillToolAdapter. Only kind = "shell" and kind = "http" are executable today; other kinds (including kind = "builtin" in legacy SKILL.md prose) are not.
See Tools & Skills for the model and Reference → Skills for the schema.