Assistant tools are defined in assistant_agent/tools.py and executed through ToolRuntime.run(name, arguments).
- Core tools: always present at loop start (
task_complete,task_failed,request_input, plusemail_sendwhen SMTP available). - Meta tool:
get_tool_specsfor lazy loading. - Loadable tools: everything else (files, reminders, research, etc.).
Availability is computed by available_function_names(...) from runtime config and job context.
file_listfile_readfile_writefile_appendfile_movefile_copyfile_convertfile_delete(soft delete to trash)file_searchfile_semantic_search
Guardrails:
- paths must resolve under shared root,
.assistantis read-only for writes/deletes,- cache/source-archive visibility is restricted,
- workspace index is updated on file mutations.
email_searchemail_read(character or line paging)email_send
email_send behavior:
- recipient domain allowlist enforcement,
- per-hour send rate limiting,
- optional threading (
in_reply_to,References), - markdown-to-HTML multipart generation,
- attachment handling from file path or inline content,
- optional append to IMAP Sent folder when configured,
- disclosure footer handling for external domains.
Memory:
memory_remember— create a durable memory with optionalkind(decision, agreement, incident, preference, operating_rule, project_context) andimportance(1-5)memory_search— semantic search when query is non-empty, keyword search when blankmemory_updatememory_forget
Notes:
note_createnote_searchnote_readnote_updatenote_delete
Notes are private to explicit tool access and never injected into prompt context.
Auto-Entity Linking: When enabled (agent.entities.auto_link_on_create), newly created memories and notes are automatically linked to 1-3 high-level entities via LLM classification. This grouping is best-effort and never blocks object creation.
contact_searchcontact_readcontact_createcontact_updatecontact_delete
Contacts are deliberately separate from memory records.
Auto-Entity Linking: When enabled, newly created contacts are automatically linked to high-level entities based on name, company, title, and notes fields.
reminder_createreminder_listreminder_updatereminder_cancel
Recurrence supports hour|day|week|month with interval and anchor-day logic.
Auto-Entity Linking: When enabled, newly created reminders are automatically linked to high-level entities based on title and task description.
Projects:
project_createproject_status
Deep research:
deep_research_requestdeep_research_status
project_create and deep_research_request are async request tools; parent job transitions to waiting.
Auto-Entity Linking: When enabled, newly created projects are automatically linked to high-level entities based on project title and first few task descriptions.
Command:
command_execute
Calendar:
calendar_sync— triggers a refresh from all configured calendar API providers; no-op when no providers are activecalendar_list_busy— lists busy windows across all configured providers within a date/time range; titles are redacted unlessallow_read_event_detailsis enabledcalendar_list_events— lists calendar events from all configured providers; titles and details subject to the same policycalendar_create_event— creates an event on the specified provider (or the default provider whenprovideris omitted); supportsalert_minutesoverridecalendar_update_event— updates a managed event by its assistant-assigned ID; acceptsalert_minutesoverridecalendar_delete_event— deletes a managed event; no-ops gracefully when the event is already gone on the provider
Calendar tools are exposed only when at least one provider has credentials configured in the environment. Write operations (create/update/delete) are restricted to events the assistant itself created — non-managed events appear in free/busy results but cannot be modified. See docs/calendar-providers.md for provider setup.
context_search— semantic search across all sources (emails, jobs, memories, notes, reminders, contacts, projects); acceptsrecent_only=trueto limit to last 7 daysjob_search— search past job history by query and status
web_searchis a function tool.openrouter:web_searchis attached server-side when non-Perplexity search model is used.openrouter:fusionis attached when fusion is configured.
Terminal:
task_completetask_failedrequest_input
Meta:
get_tool_specs
request_limit_increase is an auxiliary tool dynamically injected by task-agent when near configured resource limits.