tools/*.yaml Reference¶
Tool descriptors define custom tools in the tools/ directory. Each *.yaml file describes one tool.
Fields¶
| Field | Type | Default | Description |
|---|---|---|---|
name | string | — | Tool name (used in toolset) |
version | string | "0.1.0" | Tool version |
runtime | enum | process | wasm / process / container / agent / mcp / builtin |
module | string | "" | Path to module (relative to agent dir) |
timeout_ms | number | 5000 | Per-tool timeout |
retry_policy | object | {max_attempts: 1} | Retry config |
retry_policy.max_attempts | number | 1 | Max retries on failure |
capabilities | string[] | [] | e.g. [filesystem], [network] |
input_schema_ref | string | null | Optional schema reference |
output_schema_ref | string | null | Optional schema reference |
agent_ref | string | null | A2A endpoint (required when runtime: agent) |
max_depth | number | null | Max recursion depth for agent tools (unlimited when not set) |
mcp_server | string | null | MCP server name from mcp_servers: (required when runtime: mcp) |
Example (Process)¶
name: search_kb
version: 0.1.0
runtime: process
module: tools/search_kb.py
timeout_ms: 8000
retry_policy:
max_attempts: 2
capabilities:
- filesystem
Example (Agent)¶
name: delegate
version: 0.1.0
runtime: agent
agent_ref: local://worker-agent
timeout_ms: 30000
max_depth: 3
Example (MCP)¶
Manual tool descriptor for an MCP server tool. Usually auto-discovered via mcp_servers: in the Runefile — use manual descriptors only when you need fine-grained control.
name: filesystem/read_file
version: 0.1.0
runtime: mcp
mcp_server: filesystem # matches a name in mcp_servers:
timeout_ms: 5000
Built-in Tools (rune@*)¶
Built-in tools don't need a descriptor file — list them in toolset using the rune@ prefix. The LLM sees them with rune__ (double underscore).
| Category | Tool Name | Description |
|---|---|---|
| Filesystem | rune@file-read | Read a file from the filesystem |
| Filesystem | rune@file-write | Write or overwrite a file |
| Filesystem | rune@file-list | List files in a directory |
| Filesystem | rune@apply-patch | Apply a unified diff patch to files |
| Web | rune@web-search | Search the web |
| Web | rune@web-fetch | Fetch content from a URL |
| Shell | rune@shell-exec | Execute a shell command |
| System | rune@system-time | Get current date and time |
| System | rune@location-get | Get current location |
| Memory | rune@memory-list | List all keys currently stored in agent memory |
| Memory | rune@memory-store | Store a key-value pair in agent memory |
| Memory | rune@memory-recall | Recall a value from agent memory by key |
| Knowledge | rune@knowledge-add-entity | Add a node to the knowledge graph |
| Knowledge | rune@knowledge-add-relation | Add an edge to the knowledge graph |
| Knowledge | rune@knowledge-query | Query the knowledge graph |
| Tasks | rune@task-post | Post a task to the task queue |
| Tasks | rune@task-claim | Claim the next available task |
| Tasks | rune@task-complete | Mark a task as completed |
| Tasks | rune@task-list | List tasks in the queue |
| Tasks | rune@event-publish | Publish an event |
| Scheduling | rune@schedule-create | Create a one-shot scheduled action |
| Scheduling | rune@schedule-list | List scheduled actions |
| Scheduling | rune@schedule-delete | Delete a scheduled action |
| Scheduling | rune@cron-create | Create a recurring cron job |
| Scheduling | rune@cron-list | List cron jobs |
| Scheduling | rune@cron-cancel | Cancel a cron job |
| Process | rune@process-start | Start a long-running background process |
| Process | rune@process-poll | Poll the output of a background process |
| Process | rune@process-write | Write to a running process's stdin |
| Process | rune@process-kill | Kill a running process |
| Process | rune@process-list | List running background processes |
| Media | rune@image-analyze | Analyze an image |
| Media | rune@image-generate | Generate an image |
| Media | rune@media-describe | Describe a media file |
| Media | rune@media-transcribe | Transcribe audio/video to text |
| Media | rune@text-to-speech | Convert text to speech audio |
| Media | rune@speech-to-text | Convert speech audio to text |
| Agent | rune@agent-send | Send a message to another agent |
| Agent | rune@agent-list | List available agents |
| Agent | rune@agent-find | Find an agent by name or capability |
| Agent | rune@agent-spawn | Spawn a new agent instance |
| Agent | rune@agent-kill | Stop a running agent instance |
| Agent | rune@a2a-discover | Discover remote A2A agents |
| Agent | rune@a2a-send | Send a message to a remote A2A agent |
| Docker | rune@docker-exec | Execute a command in a Docker container |
| Browser | rune@browser-navigate | Navigate to a URL |
| Browser | rune@browser-click | Click an element on the page |
| Browser | rune@browser-type | Type text into an input field |
| Browser | rune@browser-screenshot | Take a screenshot of the current page |
| Browser | rune@browser-read-page | Read the text content of the current page |
| Browser | rune@browser-close | Close the browser tab |
| Browser | rune@browser-scroll | Scroll the page |
| Browser | rune@browser-wait | Wait for an element or condition |
| Browser | rune@browser-run-js | Execute JavaScript in the browser |
| Browser | rune@browser-back | Navigate back in browser history |
| Channel | rune@channel-send | Send a message to a configured channel |
| Canvas | rune@canvas-present | Present rich content on the canvas |