Paco
10/08/2026, 7:36 AMAI Evy
10/08/2026, 7:36 AMAI Evy
10/08/2026, 7:36 AMmessages[6].tool_calls[0].function.name because it doesn't match the pattern ^[a-zA-Z0-9_\.-]+$ (or ^[a-zA-Z0-9_-]+$ on some providers) . Only letters, numbers, underscores, hyphens, and (on some providers) periods are allowed. The handoff itself reported "successful":true, and the failure happened on the next LLM call, when the tool call from the transcript was replayed to the model.
The likely cause is the name you gave the Agent Transfer tool. The LLM sees the tool under the name you set, so it must be a clean identifier like transfer_to_appointment_agent. [(1) ]()
The log shows the tool as "agent_swap_XXXXXX Agent Transfer Node". That display label contains spaces, which isn't a valid function name. I can't confirm from the available sources whether that's the name stored in the tool call or just a display label, so check the tool's actual name in your config.
To fix it:
- Rename the Agent Transfer tool or node to use only letters, numbers, underscores, and hyphens, with no spaces or special characters.
- Avoid periods, since one of the providers tried here uses a pattern that doesn't allow them.
- If you're building in Conversation Flow, check the name on the [Agent Transfer node](/build/conversation-flow/transfer-agent-node) as well. It has the same behavior, configured as a node.
- Re-test in the playground or a web call before going live.
If the name is already clean, share the tool's name as configured (in the tool config or the agent's JSON) and I can look further.AI Evy
10/08/2026, 7:36 AMAI Evy
10/08/2026, 7:36 AM