A Tool component packages a function or API capability that an agent calls during task execution. When an agent decides it needs to search for papers, read a file, fetch a URL, or execute a shell command, it reaches for a tool. Tools are stateless per invocation — each call is independent — and are always agent-initiated, not user-triggered.Documentation Index
Fetch the complete documentation index at: https://agentvolumes.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Tool vs. Command
The key distinction is who initiates the call:| Tool | Command | |
|---|---|---|
| Invoked by | Agent (programmatically) | User (explicitly) |
| Trigger | Function call by agent | Slash command pattern |
| Input | Structured parameters | User-provided context |
| Statefulness | Stateless per call | May maintain workflow state |
Entrypoint format
Tool entrypoints can be:- JSON (
.json) — a function descriptor object - YAML (
.yaml) — a function descriptor object - Executable script — any regular executable file
- JSON and YAML descriptor entrypoints must exist and parse successfully.
- Script entrypoints must exist and be regular files. Host executability and local policy are checked at load time, not during portable validation.
Agent Volumes v0.1 does not standardize a full tool ABI. If your entrypoint is a JSON or YAML
descriptor and it includes
name and inputSchema fields, those are interpreted as
function-description metadata. The spec does not define the complete execution contract — that
remains runtime-local.Declaring a tool in volume.toml
Add a [[components]] entry with type = "tool" and point entrypoint to your tool descriptor or script.
JSON descriptor example
A JSON tool descriptor describes the function’s name, what it does, and the shape of its inputs:Portable capability classes
Agent Volumes describes tools in terms of portable capability classes — stable cross-runtime concepts that work regardless of which runtime loads your volume. When you design a tool, consider which capability class it belongs to:| Capability class | Typical permission requirements |
|---|---|
| Shell execution | shell = "allow" |
| File read | filesystem = "read" |
| File write/edit | filesystem = "write" or "read-write" |
| File discovery | filesystem = "read" |
| Content search | filesystem = "read" |
| Web fetch | network = "read" |
| Web search | network = "read" |
| Code intel | filesystem = "read" |
| External bridge | network, shell, or both |
| Delegation | Depends on the delegated tool’s permissions |
Bash, WebFetch, or run_shell_command are profile-facing names. The portable capability class is what matters for cross-runtime compatibility.