Tools
Tools are what give your delegate its capabilities beyond conversation. Think of them like apps on a phone — each one lets it do something specific, from searching the web to sending a message to checking your calendar.
You don’t invoke tools directly. Just talk naturally — “search for the latest news on X” or “send a text to Alex saying I’m running late” — and the delegate figures out which tool to use.
Built-in capabilities
These tools are available out of the box:
| What you can ask for | What it does |
|---|---|
| Search the web | Looks up current information online |
| Send an SMS | Sends a text message via your configured Twilio number |
| Send an email | Sends an email on your behalf |
| Save a note | Stores a note you can refer back to later |
| Read notes | Retrieves notes saved in previous conversations |
| Save a memory | Persists something important about you across sessions |
| Read memories | Recalls what the delegate knows about you |
| Calendar access | Available when a calendar MCP server is connected |
Extending with MCP servers
MCP (Model Context Protocol) servers plug in additional tools — for example, a Google Calendar integration, a task manager, or a custom internal system. Once connected, those tools become available to your delegate automatically. See the MCP Servers page for setup instructions.
Permissions (agent policies)
Not every tool needs to be enabled. Policies control what the base agent is allowed to use — you can scope down messaging, memory, calendar, etc. on a per-tool basis.
You can review and adjust these permissions in runtime-data/agent-policies.json or via the settings UI. See Agents & Policies for details.
Technical details
Tool registry
Every tool — whether built-in, local, or from an MCP server — flows through a single registry (src/tools/registry.ts) populated at startup by three providers:
| Provider | Source | Examples |
|---|---|---|
local |
TypeScript handlers in src/tools/handlers/ |
web_search, send_sms, send_email, save_note, save_memory |
mcp |
Remote MCP servers | Whatever the connected servers expose |
src/tools/init.ts runs at startup, loads all providers, and applies policies.
Listing registered tools
| Endpoint | Purpose |
|---|---|
GET /tools |
All registered tools |
GET /agents/:id/tools |
Tools visible to a specific agent after policy filtering |
Adding a custom local tool
- Write a handler in
src/tools/handlers/your_tool.tsexporting adefinitionand ahandler. - Import it in the local provider so it registers at startup.
- Add it (or its tag) to
runtime-data/agent-policies.jsonto grant agent access.
Tools are tagged (e.g. messaging, memory, calendar) so policies can grant access by category rather than by individual tool name.