BotBrush 🌴
06/23/2026, 5:32 PMbook_appointment added to my node_book Subagent Node. The built-in book_appointment_cal is NOT listed in the node's functions.
However, during testing, the agent is still invoking book_appointment_cal instead of my custom book_appointment tool.
I've confirmed:
- book_appointment_cal does not appear in node_book's Node Functions
- book_appointment_cal does not appear anywhere in my agent JSON export
- My prompt explicitly says to call book_appointment
- My custom book_appointment tool IS listed in Node Functions
It seems like book_appointment_cal is being triggered as a global built-in tool that overrides node-level settings.
Could you help me:
1. Confirm if book_appointment_cal is enabled globally by default
2. Explain how to disable it so my custom tool is used instead
Thank you!AI Evy
06/23/2026, 5:33 PMAI Evy
06/23/2026, 5:33 PMbook_appointment_cal being enabled globally by default or how to disable it in favor of your custom tool.
However, I can confirm the proper configuration for Subagent Nodes in Conversation Flow:
Subagent Node Tool Configuration:
In a Subagent Node, you attach tools/functions that the agent can use during conversation [(1) ]() . The node settings include a Tools field where you attach the tools/functions this subagent can use during the conversation .
Best Practices from the documentation:
- Be explicit in your node instruction and tell the agent when each tool/function should be used
- Use function nodes for guaranteed execution—if a tool/function must always run at a certain point in the flow, use a function node instead
- Avoid adding too many tools/functions to one subagent node
Potential Issue:
There was a recent report in the Discord community about function nodes not working properly in Conversation Flow, specifically on telephony/voice (though they worked fine in text chat) [(2) ]() . The Retell team acknowledged spotting an issue and was working on a fix .
Recommended Actions:
1. Double-check that your custom book_appointment tool is properly attached in the Subagent Node's Tools settings
2. Verify your node instruction explicitly tells the agent to use book_appointment
3. Consider using a Function Node instead of relying on the Subagent Node to call the tool, as Function Nodes guarantee execution [(1) ]()
For specific troubleshooting of the book_appointment_cal override behavior, I recommend reaching out to Retell support direcAI Evy
06/23/2026, 5:33 PMAI Evy
06/23/2026, 5:33 PMAI Evy
06/23/2026, 5:33 PMBotBrush 🌴
06/24/2026, 10:51 AMbook_appointment added to my node_book Subagent Node. However, during voice calls, the agent consistently invokes the built-in book_appointment_cal instead of my custom tool.
I have confirmed:
- book_appointment_cal is NOT listed in node_book's Node Functions
- book_appointment_cal does NOT appear anywhere in my agent JSON export
- My prompt explicitly says: "CRITICAL: You MUST use book_appointment tool. NEVER use book_appointment_cal"
- My custom book_appointment tool IS listed in Node Functions
- This only happens on voice/telephony calls — not in text/simulation
This matches the bug reported in your Discord community (message from @momsramen on 2025-07-22) where Subagent Nodes invoke built-in tools even when not listed, specifically on telephony.
QUESTIONS:
1. Is there a fix or workaround available for this?
2. Is there a way to completely disable built-in tools like book_appointment_cal at the agent level?
3. Will Function Nodes work reliably on telephony as an alternative?
Agent ID: agent_7dc753d9673b167b9d5b365de8
This is blocking me from going to production. Any help is appreciated.
Thank you!AI Evy
06/24/2026, 10:51 AMAI Evy
06/24/2026, 10:51 AMbook_appointment_cal at the agent level.
However, I can provide guidance on the recommended approach based on Conversation Flow best practices:
Function Node vs. Subagent Node [(1) ]() [(2) ]()
The key difference is:
- **Function Nodes**: Deterministic — executes on node entry [(1) ]()
- **Subagent Nodes**: LLM-driven — called when the LLM decides it's appropriate
Use function nodes when you want guaranteed execution every time the flow reaches that step. Use subagent nodes when the agent should decide whether and when to call a tool/function based on what the user says.
Recommended Workaround
Given your issue occurs specifically on telephony and you need guaranteed execution of your custom book_appointment tool, consider switching to a Function Node instead of a Subagent Node [(1) ]() [(2) ]() :
1. Function Nodes execute deterministically on node entry [(2) ]()
2. They support one tool per node [(1) ]()
3. They're designed for "always-execute actions"
Function Node Configuration [(2) ]()
When the function node has wait for result turned on, the agent will wait for the function to finish executing before attempting to transition to any other node, guaranteeing that when you reach the next node, theAI Evy
06/24/2026, 10:51 AMbook_appointment_cal override behavior with your agent ID, I recommend contacting Retell support directly through their support channels, as this appears to be a configuration issue not fully covered in the available documentation.AI Evy
06/24/2026, 10:51 AMAI Evy
06/24/2026, 10:51 AMBotBrush 🌴
07/01/2026, 7:00 AMAI Evy
07/01/2026, 7:00 AMAI Evy
07/01/2026, 7:00 AMAI Evy
07/01/2026, 7:00 AMAI Evy
07/01/2026, 7:00 AMBotBrush 🌴
07/01/2026, 7:01 AMAI Evy
07/01/2026, 7:01 AMAI Evy
07/01/2026, 7:01 AMuser_number) that will contain the caller's phone number
2. Pass the caller's number when initiating the call - When you create or register the call, include the caller's phone number in the default_dynamic_variables object
3. Reference it in your prompts - Use {{user_number}} (or whatever you named your variable) in your node instructions
Example Configuration
In your conversation flow configuration, you would include:
json
{
"default_dynamic_variables": {
"user_number": "+12137771234"
}
}
Why Your Current Setup Isn't Working
Based on your prompt snippet, you're correctly trying to use {{user_number}}, but the variable likely isn't being populated with the actual caller's phone number. The dynamic variable needs to be set when the call is initiated, not just referenced in the prompt.
Recommended Solution
Use a Code Node early in your conversation flow to capture and format the caller's number [(2) ]() :
javascript
// Assuming the caller's number is available in metadata
const callerNumber = metadata.from_number || metadata.caller_phone;
return { user_number: callerNumber };AI Evy
07/01/2026, 7:01 AM{{user_number}} [(1) ]() .
Alternative: Extract Dynamic Variable Node
You could also use an Extract Dynamic Variable Node to capture the phone number if the user speaks it aloud, storing it as a Text variable [(3) ]() .AI Evy
07/01/2026, 7:01 AMAI Evy
07/01/2026, 7:01 AM