Cal.com variables in the AI agent prompt
If your agent uses the Cal.com integration, tools aren't activated automatically — you have to declare them explicitly in the prompt using {{cal_*}} variables. This guide explains which ones exist, how they work and when to use them.
Golden rule — Cal.com is explicit opt-in
For each Cal.com tool you want the agent to be able to use, you must mention its variable in the agent's prompt. If you don't mention it, the tool is not offered to the model even though Cal.com is configured.
This is by design — it lets the operator limit what the bot can do per channel. For example, the WhatsApp bot can check and book but not cancel, simply by mentioning only the first two variables.
The 6 available variables
| Variable | What it lets the agent do |
|---|---|
{{cal_check_availability}} |
Check free slots in the calendar for a date range. |
{{cal_create_booking}} |
Create a new booking. |
{{cal_list_bookings}} |
List the client's appointments (by email). |
{{cal_cancel_booking}} |
Cancel an existing appointment. |
{{cal_modify_booking}} |
Change the date/time of an existing appointment. |
{{cal_get_booking}} |
Look up the details of a specific appointment by its identifier. |
Important: before sending the prompt to the model, MuseRelay replaces each {{cal_*}} with a technical description of the function. The client never sees those placeholders — they only exist in the internal prompt.
Complete prompt example
You are the salon's receptionist.
Friendly and professional tone. Answer in English.
When the client asks about slots, use {{cal_check_availability}}.
To book, use {{cal_create_booking}}.
To list their appointments, use {{cal_list_bookings}}.
To cancel, use {{cal_cancel_booking}}.
To reschedule, use {{cal_modify_booking}}.
With this prompt, the agent can do 5 things with Cal.com: check, book, list, cancel and modify. If you also wanted to give it the ability to look up a booking by ID, you'd add {{cal_get_booking}}.
Common use cases
Check and book only
Useful when you don't want the bot to be able to cancel or move appointments — all that is handled by a human operator:
You are the receptionist.
To check slots use {{cal_check_availability}}.
To book use {{cal_create_booking}}.
If the client wants to cancel or change an appointment, tell them
they should speak with an operator — do not try to do it yourself.
WhatsApp more restrictive than Web
You can have two separate agents (one per channel) with different prompts — the WhatsApp one with fewer capabilities and the web one with all of them:
- WhatsApp agent: only mentions
{{cal_check_availability}}and{{cal_create_booking}}. - Web agent: mentions all 6 variables.
Cal.com + native calendar at the same time
If your plan allows both and you enable them, the model receives:
- The 5 native tools of the MuseRelay calendar (activated by the panel toggle).
- The
{{cal_*}}variables you mentioned in the prompt.
In that case it's worth clarifying in the prompt when to use each one:
You are the salon's receptionist.
IMPORTANT: for appointments with salon staff ALWAYS use the MuseRelay
calendar tools. Cal.com tools are only for external meetings with
the director — use them only if the client asks to speak with her.
For external meetings with the director you can use
{{cal_check_availability}} and {{cal_create_booking}}.
Common mistakes
- Writing
{cal_check_availability}with a single brace: it's not replaced and shows up as plain text in the model's prompt. Always double braces:{{ }}. - Making up variables that don't exist (e.g.
{{cal_reschedule}}): the system doesn't recognize them and leaves them in the prompt, confusing the model. Only the 6 variables listed above are available. - Mentioning variables but not having Cal.com configured: the system strips them from the prompt before sending — nothing happens, they simply have no effect.
See also
- AI agent configuration — timezone, format, general options.
- Prompt context variables — date, time, locale and other automatic block variables.