This article provides the complete reference for all 12 built-in NAF tools. Each tool is documented with its purpose, activation conditions, conversation history requirements, conflict policies, and the execution flow that handles it. For an explanation of how tools are compiled, detected, and executed, see The Supervisor and Tool Caller system.
Tool definition structure
Every tool follows the same definition schema in get_naf_defined_tools.nsl:
{
"tool_name": {
"description": "What the tool does",
"conditions": {
"condition_name": {
"type": "boolean",
"description": "Natural language description of when this is true"
}
},
"useConversationHistory": true,
"conflictPolicy": {
"tag": "group_tag"
},
"action": {
"type": "send_event",
"options": {}
}
}
}
Field
Description
conditions
All conditions must evaluate to true for the tool to be called. Conditions are evaluated by an LLM against the conversation context.
useConversationHistory
When true, the LLM receives the full conversation history during condition evaluation. When false, only the <LatestConvoAgentAnswer> is analyzed.
conflictPolicy.tag
Tools sharing the same tag are mutually exclusive — only one per tag can execute per turn.
action.type
The execution method: send_event (fire a system event to a handler flow) or send_webhook (HTTP request).
The agent clearly states that they are going to submit a booking or make a reservation right now. The latest answer should contain phrases like: "I'm submitting your booking now...", "I will make your reservation now...", "I will submit your booking in a moment..."
search_booking_tool
Property
Value
Purpose
Search the user's existing bookings created via the agent.
The agent clearly states they are going to check the user's existing reservations right now. The latest answer should contain phrases like: "Give me a moment to search your previous bookings...", "Let me search your bookings..."
cancel_booking_tool
Property
Value
Purpose
Cancel an existing reservation in the booking system.
Activation attribute
project_attributes_setting_booking_cancellation_enabled = "True" AND project_attributes_setting_booking_cancellation_type is endpoint or project
Conversation history
true
Conflict tag
None
Execution flow
CABookingManagementFlow
Conditions:
Condition
Description
agentPromised
The agent clearly states they are going to cancel an existing booking right now. Phrases like: "Give me a moment to cancel your booking...", "Let me cancel your booking..."
bookingExist
During the conversation, the agent actually checked existing user bookings and found the exact one it is going to cancel.
send_manage_booking_url_tool
Property
Value
Purpose
Send an SMS with a URL for the user to manage their previously made booking.
Activation attribute
Enabled as fallback when cancel_booking_tool is not available (booking cancellation disabled or type is default).
Conversation history
true
Conflict tag
sms
Execution flow
CAActionSendSMSInformationFlow
Conditions:
Condition
Description
agentPromised
The latest answer includes a clear statement that the agent is going to send an SMS with a link for the user to manage a specific existing booking. For example: "I will send you an SMS with the link to cancel this booking."
bookingExist
The agent has already checked the user's existing bookings and identified the exact booking for which the manage-link SMS will be sent.
The agent clearly states they are going to send an email. The latest answer must contain the explicit keyword "email". Phrases like: "I will send you an email shortly...", "I'm sending an email...", "Let me try sending it (email) again..."
The agent clearly states they are going to send an SMS. The latest answer must contain the explicit keywords "SMS" or "text message". Phrases like: "I will send you an SMS shortly...", "I'm sending a text message..."
notRelatedToExistingBooking
(Conditional) The SMS is not related to cancelling or managing an existing reservation. If it is, send_manage_booking_url_tool should be used instead.
Phone only (not available on chat or web channels)
Conversation history
false
Conflict tag
None
Execution flow
CAActionCallTransferFlow
Conditions:
Condition
Description
agentPromised
The agent clearly states that right now they are going to connect, transfer, forward, or put the user through. Phrases like: "I will connect you with a manager right away...", "I am transferring you to...", "I will put you through to..."
:::
🗒️ NOTE
The transfer_call_tool supports an additional statement via the project_attributes_setting_transfer_call_additional_statement attribute. This allows adding custom conditions to the transfer behavior.
:::
end_conversation_tool
Property
Value
Purpose
End the conversation from the agent side as concluded and finished.
Activation attribute
Always available (no attribute gate)
Conversation history
true
Conflict tag
None
Execution flow
CAEndSessionFlow
This is the most complex tool. Its conditions evaluate the full conversation to determine if the session should end:
Conditions:
Condition
Description
mutualGoodbye
The agent and user said goodbye to each other. The dialogue contains explicit farewell phrases from both sides, OR the user expresses intent to end ("Thank you", "No, thank you") and the agent acknowledges it ("You're welcome", "Have a great day"), OR the user is an automated voicemail system and the agent has finished leaving a message.
noMoreQuestions
The agent and user have no outstanding questions or unresolved topics, and both parties are ready to conclude. In voicemail scenarios, a callback request is considered a closing instruction, not an unresolved topic.
agentFarewell
The latest answer includes a clear farewell or closing phrase ("Goodbye", "Have a great day", "You're welcome, take care") and does not introduce any new questions, requests, or topics.
explicitConversationEnd
In some cases the agent explicitly says they are going to end the conversation right now.
:::
❗❗ IMPORTANT
The end_conversation_tool requires useConversationHistory: true because it must evaluate the full conversation to determine whether both parties have exchanged farewells and all topics are resolved. This is the only tool where the full conversation context is essential for every evaluation.
:::
The agent clearly states they are going to create a meeting right now. Phrases like: "Give me a moment, I will set up the meeting...", "I will create a meeting right now...", "I will send the calendar invite right now..."
:::
🗒️ NOTE
The setup phrase for meeting creation can be customized via project_attributes_setting_meeting_setup_phrase. The default is "I will set up an appointment request."
:::
Validation tools
check_zip_code_served_tool
Property
Value
Purpose
Verify if the user's provided ZIP code is served by the business.
LLM determines whether the agent is checking time-slot availability or product/service availability.
When two or more tools from the same conflict group are selected in the same turn, the rerank_conflict skill evaluates the full conversation context and selects the single most relevant tool.
Tool execution flows
Each tool maps to a ConvoAgent flow that handles the actual execution:
Tool
Execution flow
Description
check_availability_tool
CACheckingAvailabilityFlow
Checks booking system for available slots and stores results in persona attributes.
create_booking_tool
CABookingManagementFlow
Submits a booking to the booking system.
search_booking_tool
CASearchBookingFlow
Searches for existing user bookings.
cancel_booking_tool
CABookingManagementFlow
Cancels an existing booking.
send_manage_booking_url_tool
CAActionSendSMSInformationFlow
Sends SMS with booking management URL.
send_email_tool
CAActionSendEmailInformationFlow
Composes and sends email via EmailWorker agent.
send_sms_tool
CAActionSendSMSInformationFlow
Composes and sends SMS via SmsWorker agent.
transfer_call_tool
CAActionCallTransferFlow
Initiates call transfer to human representative.
end_conversation_tool
CAEndSessionFlow
Terminates the conversation session.
create_meeting_tool
CAScheduleFlow
Creates calendar event via Google Calendar integration.
Tools that require conversation history need the full context to evaluate multi-turn conditions (e.g., verifying that a booking was previously searched before allowing cancellation). Tools without this requirement can be evaluated solely from the latest agent answer, which is faster and more efficient.
Changelog
Tools reference: initial publication
Published complete reference for all 12 built-in NAF tools with conditions, activation attributes, conflict policies, execution flows, and conversation history requirements.