tools section of config.json.
Shell
Execute system commands directly (no shell interpretation).run_command
| Arg | Type | Description |
|---|---|---|
command | string | The command to execute |
args | string[] | Command arguments |
{command, stdout, stderr, exit_code, error}
- Unrestricted
- Whitelisted
- Disabled
whitelist_enabled: false — any command allowed.exec.Command() directly — no bash -c interpretation. Path traversal (..) in arguments is detected and blocked.
show_allowed_commands
No arguments. Returns the current shell access mode and allowed commands list.
Filesystem
File operations confined to~/.sorat/workspace/.
| Tool | Args | Returns | Description |
|---|---|---|---|
read_file | {path} | {content, error} | Read file contents |
write_file | {path, content} | {ok, error} | Write file (atomic) |
create_dir | {path} | {ok, error} | Create directory recursively |
list_dir | {path} | {entries: [{name, is_dir, size}], error} | List directory |
delete_file | {path} | {ok, error} | Delete file or directory |
.. are blocked. Writes use the atomic pattern (write to .tmp, then rename).
Web
web_search
| Arg | Type | Description |
|---|---|---|
query | string | Search query |
{query, results: [{title, url, snippet, content}], error}
Searches DuckDuckGo and concurrently fetches page content from the top 5 results. Each page is truncated to ~4,000 characters, total limit ~12KB.
read_webpage
| Arg | Type | Description |
|---|---|---|
url | string | URL to fetch (must be http/https) |
{title, url, content, error}
Fetches a single URL and extracts readable text content (similar to browser reader mode). Content is truncated to 12,000 characters.
System
get_system_info
No arguments. Returns {os, arch, hostname, uptime, memory_used, memory_total, go_version, error}.
Memory
recall_memory
No arguments. Retrieves all stored facts from long-term memory.
Returns: {memory, error}
remember
| Arg | Type | Description |
|---|---|---|
fact | string | Fact to remember |
{ok, error}
Appends a timestamped fact to ~/.sorat/memory/facts.md.
Skills
| Tool | Args | Description |
|---|---|---|
skill_list | — | List installed skills with name, description, enabled status |
skill_search | {query, limit} | Search configured skill registries |
skill_install | {source, slug, repo} | Install from registry (by slug) or GitHub (owner/repo) |
Cron
| Tool | Args | Description |
|---|---|---|
create_cron_job | {name, kind, every_ms, at_ms, expr, message} | Create scheduled job |
list_cron_jobs | — | List all scheduled jobs |
remove_cron_job | {id} | Delete a job |
enable_cron_job | {id} | Resume a paused job |
disable_cron_job | {id} | Pause a job |
cron_job_logs | {id} | Get last 20 execution entries |
Schedule kinds for create_cron_job
kind | Required field | Description |
|---|---|---|
every | every_ms | Interval in ms (minimum 60,000) |
once | at_ms | Unix timestamp in ms |
cron | expr | Cron expression (e.g. "0 9 * * 1") |
Meta
show_tools
No arguments. Lists all currently available tools with their names and descriptions.
Returns: {tools: [{name, description}], count}