Using Retell’s built‑in book_appointment_cal function.
The agent correctly extracts, transforms, and repeats the caller’s phone number in conversation, but the first tool-call never includes the attendeePhoneNumber field required by cal.com, even when:
- the user provides the phone number upfront
- the agent repeats the phone number back
- the agent confirms all booking details
- the phone number is transformed to E.164
- the agent believes it is sending the number
The JSON sent by Retell on the first tool invocation always looks like:
{
"time": "...",
"timezone": null,
"name": "...",
"email": "an@email.com"
}
The attendeePhoneNumber field is missing every time on the first send, which causes Cal.com to return:
{attendeePhoneNumber}invalid_number
The agent at first reports the appointment as booked to the caller, but immediately declares something is wrong with the number and retries.
On the second attempt, the agent does apparently include attendeePhoneNumber and the booking succeeds.
This proves the LLM has the number — it’s just not being serialized into the first tool call.
What to do?