Expanded Tool Suite
PR #630 expanded the assistant from 26 to 50+ tools. The new tools cover every remaining platform area, so users can manage their entire Loquent setup through conversation.
All write tools follow the two-step confirmation pattern — call with confirmed: false to preview, then confirmed: true to execute.
Task Tools
Section titled “Task Tools”Seven tools in tools/tasks/ let users manage tasks without leaving the assistant.
| Tool | Action | Permission |
|---|---|---|
get_tasks | List/filter tasks by status, category, contact, assignee | Task:Collection:List |
get_task_details | Full task details by ID | Task:Instance:View |
create_task | Create a task with due date, priority, assignee | Task:Collection:Create |
update_task | Update task fields | Task:Instance:Update |
complete_task | Mark a task complete | Task:Instance:Update |
dismiss_task | Dismiss a task | Task:Instance:Update |
reopen_task | Reopen a completed/dismissed task | Task:Instance:Update |
get_tasks parameters
Section titled “get_tasks parameters”{ status?: "open" | "done" | "dismissed", category?: "follow-up" | "callback" | "send-info" | "meeting" | "general", contact_id?: string, // UUID assigned_to?: string, // UUID — member ID sort?: "due_date" | "created_at", // default: created_at desc limit?: number, // 1–200, default 50 offset?: number // default 0}create_task parameters
Section titled “create_task parameters”{ contact_id: string, // UUID — required title: string, description?: string, category: "follow-up" | "callback" | "send-info" | "meeting" | "general", priority?: "urgent" | "high" | "medium" | "low", due_date?: string, // "YYYY-MM-DDTHH:MM" (org-local) or "YYYY-MM-DD" assigned_to?: string, // UUID — member ID confirmed: boolean}Analyzer Tools
Section titled “Analyzer Tools”Four tools in tools/infrastructure/ for managing call analyzers.
| Tool | Action | Permission |
|---|---|---|
get_analyzers | List all analyzers with config summary | Analyzer:Collection:List |
get_analyzer_details | Full analyzer config by ID | Analyzer:Instance:View |
create_analyzer | Create a new analyzer | Analyzer:Collection:Create |
update_analyzer | Update analyzer config | Analyzer:Instance:Update |
create_analyzer parameters
Section titled “create_analyzer parameters”{ name: string, // e.g. "Sentiment Analysis" prompt: string, // analysis prompt — use get_prompt_writing_guide first phone_ids?: string[], // UUIDs — phones to assign to default?: boolean, // auto-assign to new phones confirmed: boolean}Voice Agent Tools
Section titled “Voice Agent Tools”Four tools in tools/infrastructure/ for voice agent management.
| Tool | Action | Permission |
|---|---|---|
get_agent_details | Full agent config with knowledge bases | Agent:Instance:View |
create_agent | Create a voice agent | Agent:Collection:Create |
update_agent | Update agent config | Agent:Instance:Update |
get_prompt_writing_guide | Reference guide for writing agent/analyzer prompts | Agent:Collection:List |
The get_prompt_writing_guide tool accepts an entity_type parameter ("agent" or "analyzer") and returns the prompt structure guide for that entity type. The assistant calls this before creating or updating agents/analyzers to produce well-structured prompts.
Text Agent Tools
Section titled “Text Agent Tools”Four tools in tools/infrastructure/ for text communication agent management.
| Tool | Action | Permission |
|---|---|---|
get_text_agents | List text agents | TextAgent:Collection:List |
get_text_agent_details | Full text agent config | TextAgent:Instance:View |
create_text_agent | Create a text agent | TextAgent:Collection:Create |
update_text_agent | Update text agent config | TextAgent:Instance:Update |
Phone Assignment Tools
Section titled “Phone Assignment Tools”Three tools for assigning agents and analyzers to phone numbers. All require Phone:Instance:Update.
| Tool | Action |
|---|---|
assign_phone_agent | Assign or clear the voice agent on a phone |
assign_phone_text_agent | Assign or clear the text agent on a phone |
assign_phone_analyzers | Replace the full set of analyzers on a phone |
Phone Provisioning Tools
Section titled “Phone Provisioning Tools”Five tools for searching, purchasing, and configuring phone numbers.
| Tool | Action | Permission |
|---|---|---|
search_available_numbers | Search Twilio for available US numbers by area code | Twilio:Collection:Manage |
buy_phone_number | Purchase and register a number | Phone:Collection:Create |
get_phone_details | Full phone details with resolved agents and analyzers | Phone:Instance:View |
update_phone | Update phone friendly name | Phone:Instance:Update |
set_phone_agent | Set voice agent on a phone (requires voice_agent_id) | Phone:Instance:Update |
buy_phone_number behavior
Section titled “buy_phone_number behavior”When a number is purchased, the tool automatically:
- Registers the number in the organization via Twilio API
- Assigns all default analyzers
- Configures the voice webhook URL (
TWILIO_VOICE_PATH)
{ phone_number: string, // E.164 format, e.g. "+14155551234" confirmed: boolean}Registry and System Prompt
Section titled “Registry and System Prompt”All new tools are registered in tool_registry_service.rs behind has_any_of() permission gates. The system prompt in build_system_prompt_service.rs was updated to describe the new capabilities, so the assistant knows when and how to use each tool.
Key Files
Section titled “Key Files”| Path | Purpose |
|---|---|
src/mods/assistant/tools/tasks/ | Task tool handlers (7 files) |
src/mods/assistant/tools/infrastructure/ | Analyzer, agent, text agent, phone tools (19 files) |
src/mods/assistant/services/tool_registry_service.rs | Permission-gated tool registration |
src/mods/assistant/services/build_system_prompt_service.rs | Dynamic system prompt with new capabilities |