Built-in Tools
Tools are registered in two phases: static + runtime.
Static Tools (config-driven)
These are created from config without runtime context.
read_file: read local fileswrite_file: write local files under allowed dirsbash: execute local shell commandsurl_fetch: HTTP(S) fetch/downloadweb_search: web searchcontacts_send: send outbound message by contact
Runtime Tools (LLM runtime dependent)
These are injected when runtime has active LLM client/model.
plan_createtodo_update
Channel-Specific Runtime Tools
- Telegram runtime can add:
telegram_send_voicetelegram_send_phototelegram_send_filemessage_react
- Slack runtime can add:
message_react
Tool Selection in Core Embedding
You can whitelist built-ins via integration.Config.BuiltinToolNames.
go
cfg.BuiltinToolNames = []string{"read_file", "url_fetch", "todo_update"}Empty list means all known built-ins.
Key Config Sections
yaml
tools:
read_file: ...
write_file: ...
bash: ...
url_fetch: ...
web_search: ...
contacts_send: ...
todo_update: ...
plan_create: ...See docs/tools.md for deeper parameter-level behavior.