Built-in Tools
Ryvos ships with 12 built-in tools covering file operations, shell execution, web access, memory, and agent spawning. Each tool has a security tier, JSON schema input, and configurable timeout.
File Operations
read (T0)
Read file contents. Returns the full file or a line range.
{ "path": "src/main.rs", "start_line": 1, "end_line": 50 }write (T2)
Create or overwrite a file.
{ "path": "output.txt", "content": "Hello, world!" }edit (T2)
Line-based file editing — insert, replace, or delete lines.
{
"path": "src/main.rs",
"operations": [
{ "type": "replace", "start": 10, "end": 12, "content": "new code here" }
]
}glob (T0)
Find files matching a glob pattern.
{ "pattern": "**/*.rs", "base_dir": "." }grep (T0)
Full-text regex search across files.
{ "pattern": "fn main", "path": "src/", "include": "*.rs" }apply_patch (T2)
Apply a unified diff patch to one or more files.
{ "patch": "--- a/file.rs\n+++ b/file.rs\n@@ -1,3 +1,3 @@\n-old\n+new" }Shell
bash (T3)
Execute a shell command. This is the most powerful tool and has the most security controls:
{ "command": "cargo test --release" }- Passes through SecurityGate (tier + pattern detection + approval)
- Optionally runs in Docker sandbox
- Configurable timeout (default: 30s)
- stdout and stderr captured
Web
web_fetch (T1)
Fetch a URL and return the content as markdown/text.
{ "url": "https://docs.rs/tokio/latest/tokio/" }web_search (T1)
Search the web using Tavily API. Requires TAVILY_API_KEY.
{ "query": "rust async best practices 2025" }Memory
memory_search (T0)
Full-text search across all session history using SQLite FTS5.
{ "query": "deployment configuration" }memory_write (T1)
Write a persistent memory entry that persists across sessions.
{ "key": "project_context", "content": "This is a Rust workspace with 10 crates" }Agents
spawn_agent (T3)
Spawn a child agent with its own session, tool set, and stricter security policy.
{
"prompt": "Research the best Rust HTTP frameworks and write a comparison",
"tools": ["web_search", "web_fetch", "read", "write"]
}Child agents inherit a subset of tools and run under [security.sub_agent_policy] — typically T0 auto-approve only, deny above T2.
Tool Trait
All tools implement the same Rust trait:
pub trait Tool: Send + Sync + 'static {
fn name(&self) -> &str;
fn description(&self) -> &str;
fn input_schema(&self) -> serde_json::Value;
fn execute(&self, input: Value, ctx: ToolContext) -> BoxFuture<Result<ToolResult>>;
fn timeout_secs(&self) -> u64 { 30 }
fn requires_sandbox(&self) -> bool { false }
fn tier(&self) -> SecurityTier { T1 }
}This trait is also used by MCP bridged tools and drop-in skills.