Skip to content

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.

Seven tools in tools/tasks/ let users manage tasks without leaving the assistant.

ToolActionPermission
get_tasksList/filter tasks by status, category, contact, assigneeTask:Collection:List
get_task_detailsFull task details by IDTask:Instance:View
create_taskCreate a task with due date, priority, assigneeTask:Collection:Create
update_taskUpdate task fieldsTask:Instance:Update
complete_taskMark a task completeTask:Instance:Update
dismiss_taskDismiss a taskTask:Instance:Update
reopen_taskReopen a completed/dismissed taskTask:Instance:Update
{
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
}
{
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
}

Four tools in tools/infrastructure/ for managing call analyzers.

ToolActionPermission
get_analyzersList all analyzers with config summaryAnalyzer:Collection:List
get_analyzer_detailsFull analyzer config by IDAnalyzer:Instance:View
create_analyzerCreate a new analyzerAnalyzer:Collection:Create
update_analyzerUpdate analyzer configAnalyzer:Instance:Update
{
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
}

Four tools in tools/infrastructure/ for voice agent management.

ToolActionPermission
get_agent_detailsFull agent config with knowledge basesAgent:Instance:View
create_agentCreate a voice agentAgent:Collection:Create
update_agentUpdate agent configAgent:Instance:Update
get_prompt_writing_guideReference guide for writing agent/analyzer promptsAgent: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.

Four tools in tools/infrastructure/ for text communication agent management.

ToolActionPermission
get_text_agentsList text agentsTextAgent:Collection:List
get_text_agent_detailsFull text agent configTextAgent:Instance:View
create_text_agentCreate a text agentTextAgent:Collection:Create
update_text_agentUpdate text agent configTextAgent:Instance:Update

Three tools for assigning agents and analyzers to phone numbers. All require Phone:Instance:Update.

ToolAction
assign_phone_agentAssign or clear the voice agent on a phone
assign_phone_text_agentAssign or clear the text agent on a phone
assign_phone_analyzersReplace the full set of analyzers on a phone

Five tools for searching, purchasing, and configuring phone numbers.

ToolActionPermission
search_available_numbersSearch Twilio for available US numbers by area codeTwilio:Collection:Manage
buy_phone_numberPurchase and register a numberPhone:Collection:Create
get_phone_detailsFull phone details with resolved agents and analyzersPhone:Instance:View
update_phoneUpdate phone friendly namePhone:Instance:Update
set_phone_agentSet voice agent on a phone (requires voice_agent_id)Phone:Instance:Update

When a number is purchased, the tool automatically:

  1. Registers the number in the organization via Twilio API
  2. Assigns all default analyzers
  3. Configures the voice webhook URL (TWILIO_VOICE_PATH)
{
phone_number: string, // E.164 format, e.g. "+14155551234"
confirmed: boolean
}

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.

PathPurpose
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.rsPermission-gated tool registration
src/mods/assistant/services/build_system_prompt_service.rsDynamic system prompt with new capabilities