Tools
Every chat session starts with the built-in toolset, plus whatever MCP servers and local plugin tools (~/.config/kaja/tools/*.ts) you’ve added.
| Tool | Purpose |
|---|---|
read_file / list_files | read local files, list a directory |
fetch_url | fetch a URL |
view_image | look at an image file |
summarize | summarize long text |
rerank | rerank passages against a query |
current_time | current date/time |
ask_user | ask a clarifying question mid-task |
run_command | run a shell command |
switch_persona | change persona mid-conversation |
remember_note / recall_memory / forget_note / list_notes | long-term memory notes |
dataset_info | collect structured answers for a persona’s dataset |
Two more appear when configured: web_search (needs [webSearch] in secrets.toml) and generate_image (needs a models.image-generation entry).
Shell commands
run_command always asks before running. Known-risky patterns (rm -rf, sudo, git push --force, DROP TABLE, fork bombs, …) get a louder warning — an advisory cue, not a sandbox. It runs with your own shell permissions.
MCP servers
Add a server to ~/.config/kaja/mcp.toml and its tools are folded in automatically — local (stdio, needs command) or remote (HTTP, needs url):
[[servers]]
id = "playwright"
command = "bunx"
args = ["@playwright/mcp@latest", "--isolated", "--headless"]
[[servers]]
id = "geo-service"
url = "https://your-geo-service-host/mcp"
Needs a header or env var with a secret in it? Add it to secrets.toml under [mcp.<id>], keyed by that server’s id:
[mcp.geo-service]
Authorization = "Bearer your-secret-api-key"
Playwright ships enabled by default, giving the agent a headless browser.
Your own tools
Drop a .ts file exporting a tool under ~/.config/kaja/tools/ — picked up automatically, no rebuild needed.
Next: