https://retellai.com/?utm_source=discord&utm_medium=seo logo
Retell MCP tool sending in empty brackets
# ❓・ai-evy-support
b
@AI Evy Retell MCP tool sending in empty brackets? {}, what is the best way to prompt for correct MCP usage for retell LLMs?
a
Thanks for tagging me @Bobster2002. I'll look through relevant sources and get back to you shortly.
Best Practices for Tool Instructions: 1. Use trigger words: List specific words/phrases that should trigger tool calls 2. Define sequences: Specify when tools should be called in order 3. Set boundaries: Clarify when NOT to call certain tools 4. Provide context: Explain why each tool is being called Parameter Extraction [(2) ]() The agent extracts required information from the conversation before executing the function. If parameters are missing, the LLM may call the function with empty arguments. Make sure your prompt explicitly instructs the agent to collect all necessary information before invoking the MCP tool. For example, if your tool requires a
customer_name
parameter, your prompt should say: "Before calling the function, ensure you have collected the customer's name." [(3) ]()
### Answer When MCP tools send empty brackets
{}
, it typically means the LLM isn't extracting the required parameters from the conversation. Here's how to prompt for correct MCP usage with Retell LLMs: Define Clear Triggers for Tool Usage [(1) ]() Always specify exact conditions for when tools should be called in your prompts. Reference tools by their exact names. Example Tool Usage Instructions:
Copy code
///## Tool Usage Instructions
1. Gather initial information about the customer's issue.
2. Determine the type of request:
 - If customer mentions "refund" or "money back":
   → Call function `transfer_to_support` immediately
 - If customer needs order status:
   → Call function `check_order_status` with order_id
 - If customer wants to change their order:
   → First call `check_order_status`
   → Then transition to modification_state
3. After retrieving information:
 - Always summarize what you found
 - Ask if they need additional help
​ To learn more, see the sources I considered: [[1] Prompt Engineering Guide](https://docs.retellai.com/build/prompt-engineering-guide) [[2] Function Calling Overview](https://docs.retellai.com/build/single-multi-prompt/function-calling) [[3] Custom function not executing despite being configured as tool in state](https://community.retellai.com/t/custom-function-not-executing-despite-being-configured-as-tool-in-state/705) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
b
@AI Evy I'm using the conversational flow agent
a
Thanks for the follow-up, @Bobster2002. I'll get back to you soon.
### Answer --- For Conversation Flow agents, MCP tool usage works differently than Single/Multi Prompt agents. With Conversation Flow, you have deterministic tool calling through node configuration rather than relying solely on prompts. [(1) ]() In Conversation Flow: Each node focuses on one specific task, and tool coordination happens through the node structure itself. The Conversation Flow provides more fine-grained control over dialogue paths and handles function calls deterministically through their node configuration. [(2) ]() To fix empty bracket issues in Conversation Flow: 1. Use the Global Prompt for context - Configure your Global Prompt in the global settings to specify the agent's persona and guardrails that influence all response generation. [(3) ]() 2. Structure your nodes properly - Each conversational node defines a small set of logic, and the transition condition determines which node to transition to. [(4) ]() 3. Ensure parameter collection happens before function nodes - Design your flow so that information gathering nodes come before nodes that call MCP tools. This way, the required parameters are collected in earlier conversation turns. 4. Check your node-level prompts - Within individual nodes, you can write specific instructions about what information needs to be collected before proceeding to the next node. The key advantage of Conversation Flow is that it minimizes hallucination risks through built-in ultra-guidance mechanisms and provides deterministic tool calling. [(1) ](
ith-retell-ais-conversation-flow) This means you have more control over when and how tools are called compared to prompt-based approaches. **
​ To learn more, see the sources I considered: [[1] Retell AI’s Advanced Conversation Flow | Retell AI](https://www.retellai.com/blog/unlocking-complex-interactions-with-retell-ais-conversation-flow) [[2] Prompt Engineering Guide](https://docs.retellai.com/build/prompt-engineering-guide) [[3] Step 1: Configure global settings](https://docs.retellai.com/build/conversation-flow/global-setting) [[4] How to Deploy Conversational AI | Retell AI](https://www.retellai.com/blog/how-to-deploy-conversational-ai) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
b
@AI Evy Tool Invocation: GOOGLESHEETS_UPSERT_ROWS 0:22 tool_call_id: mcp_624c7e "{}" is whats happening can you see why this is happening?
a
Thanks for the follow-up, @Bobster2002. I'll get back to you soon.
### Answer Based on the empty brackets
"{}"
you're seeing with your MCP tool invocation, there are several likely causes specific to Conversation Flow agents: 1. Node Functions vs Function Nodes - Configuration Issue [(1) ]() In Conversation Flow, there's a critical distinction between how tools execute. When you add MCP tools as Node Functions, the LLM decides when to call them based on conversation context. If the LLM calls the tool before gathering required parameters, you'll get empty brackets. Node Functions are LLM-driven and called when the LLM decides it's appropriate, while Function Nodes execute deterministically on node entry. For guaranteed parameter collection, consider using a dedicated Function Node or MCP Node instead. [(2) ]() 2. Missing Parameter Collection in Node Instruction [(1) ]() Your conversation node instruction must explicitly guide the LLM on when to call the function. Update your node's prompt to be more specific:
Copy code
When user provided the city name, please get the weather for that city by calling the `get_weather` function.
For your Google Sheets tool, ensure your prompt states exactly what information must be collected before calling
GOOGLESHEETS_UPSERT_ROWS
. 3. MCP Tool Parameter Schema [(3) ]() Verify your MCP tool's parameter definition. When you select an MCP tool, you need to properly configure which parameters the tool expects. The LLM extracts these parameters from the conversation, so if the schema doesn't match what's being discussed, you'll get empty arguments. 4. Known MCP Variable Extraction Issue [(4) ]() There's a documented issue where MCP tools may not properly extract parameters even when configured correctly. Users have reported that variables defined in MCP tool responses don't appear in
collected_dynamic_variables
, and transitions based on these variables fail. Recommended Fix: Create a dedicated MCP Node in your flow: [(2) ]() - Place a conversation node before it to collect all required parameters - Configure the MCP Node with your
GOOGLESHEETS_UPSERT_ROWS
tool - Set up proper parameter mapping - Add a transition condition to the next node This ensures parameters are collected before the MCP tool executes, preventing empty bracket calls.
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.