Skip to main content
Sorat’s agent uses Google ADK FunctionTools. Each tool is independently configurable via the tools section of config.json.

Shell

Execute system commands directly (no shell interpretation).

run_command

ArgTypeDescription
commandstringThe command to execute
argsstring[]Command arguments
Returns: {command, stdout, stderr, exit_code, error}
whitelist_enabled: false — any command allowed.
Commands are executed via 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/.
ToolArgsReturnsDescription
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
All paths are resolved relative to the workspace root. Attempts to escape via .. are blocked. Writes use the atomic pattern (write to .tmp, then rename).

Web

ArgTypeDescription
querystringSearch query
Returns: {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

ArgTypeDescription
urlstringURL to fetch (must be http/https)
Returns: {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

ArgTypeDescription
factstringFact to remember
Returns: {ok, error} Appends a timestamped fact to ~/.sorat/memory/facts.md.

Skills

ToolArgsDescription
skill_listList 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

ToolArgsDescription
create_cron_job{name, kind, every_ms, at_ms, expr, message}Create scheduled job
list_cron_jobsList 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

kindRequired fieldDescription
everyevery_msInterval in ms (minimum 60,000)
onceat_msUnix timestamp in ms
cronexprCron 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}