#best way to send available slots for bking for the agent to handle?
1 messages · Page 1 of 1 (latest)
Short answer: expose availability through a webhook tool the agent can call, then let the agent confirm and book via a second tool.
What ElevenLabs documents as the best-practice flow
- Create two tools on your agent:
- get_available_slots: a webhook tool that checks calendar availability (example: Cal.com GET https://api.cal.com/v2/slots). The agent uses this to fetch open times, verify requested times, and suggest alternatives. (elevenlabs.io)
- book_meeting: a webhook tool that creates the booking once the caller picks a slot (example: Cal.com POST https://api.cal.com/v2/bookings). (elevenlabs.io)
- Store your scheduling provider API key as a secret (use Authorization: Bearer … for Cal.com). (elevenlabs.io)
- Optional: if you use Zapier MCP or another orchestration layer, configure the same pattern—agent calls get_available_slots, suggests alternatives if unavailable, confirms details, then calls book_meeting. (elevenlabs.io)
- Calendly is also supported as an integration for real-time availability checks and bookings if that’s your provider. (elevenlabs.io)
- You can pass context like timezone, attendee name, or email into tool parameters via Dynamic Variables (runtime values injected into tools). (elevenlabs.io)
- Tools are the documented mechanism for connecting agents to external APIs (webhook/server tools). (elevenlabs.io)
If you already have precomputed slots on your backend, expose them via your own GET webhook tool (same get_available_slots pattern), return JSON, and let the agent present/confirm before invoking book_meeting. (elevenlabs.io)
Which scheduler are you using (Cal.com, Calendly, or custom)?
Sources:
Cal.com | ElevenLabs Documentation
Cal.com | ElevenLabs Documentation
Cal.com | ElevenLabs Documentation
Connect Zapier to ElevenLabs Conversational AI Voice Agents
Connect Calendly to ElevenLabs Conversational AI Voice Agents
Dynamic variables | ElevenLabs Documentation
Tools | ElevenLabs Documentation
Server tools | ElevenLabs Documentation
and within the System prompt? example of booking appointment?
Yes. You can encode the booking logic directly in the agent’s System prompt. Here’s a concise, docs-aligned example you can paste and adapt (tool names must match your Tools config):
System prompt (appointment booking via Cal.com)
- Role: You are a friendly, efficient scheduling assistant for [Company]. Your goal is to book, reschedule, or cancel meetings.
- Tooling you can use:
- get_available_slots: check live availability.
- book_meeting: create the booking once details are confirmed.
- Procedure:
- Collect requirements: meeting purpose, preferred date/time window, duration, and timezone (confirm or ask if unclear).
- Check availability: call get_available_slots with the user’s constraints. If the requested time is unavailable, propose 2–3 alternatives in the caller’s timezone. Do not guess availability.
- Confirm details: chosen slot, full name, and email. Read back the details and ask for a yes/no confirmation.
- Book: call book_meeting with the confirmed details. On success, tell the user they’ll receive a calendar invite; on failure, apologize, retry once, then offer a follow-up or human handoff.
- Guardrails:
- Never expose secrets or internal IDs; only state times returned by the tools.
- If current date/time is needed, use a time tool or supplied runtime variables instead of assuming.
- Be concise and stay on-topic; ask clarifying questions when information is missing.
This structure mirrors ElevenLabs’ guidance: define tool-use sequencing inside the System prompt, gather details, check availability with get_available_slots, then confirm and book with book_meeting, and confirm that an invite will be sent. You can also pass runtime data (e.g., timezone) via Dynamic Variables or Overrides if needed. (elevenlabs.io)
References
- Quickstart: where to set First message and System prompt. (elevenlabs.io)
- Server tools: include orchestration instructions in the System prompt; example of structuring tool use. (elevenlabs.io)
- Cal.com integration: steps to collect details, check get_available_slots, and call book_meeting; confirm invite. (elevenlabs.io)
- Dynamic Variables and Overrides: inject timezone/current time or customize the prompt at runtime. (elevenlabs.io)
Sources:
Server tools | ElevenLabs Documentation
Quickstart | ElevenLabs Documentation
Server tools | ElevenLabs Documentation
Cal.com | ElevenLabs Documentation
Dynamic variables | ElevenLabs Documentation
best format to define available_slots here: Amazing. We’re really busy in your area right now. Let me check our availability. I have the following slots available: {{available_slots}}. Would any of these times work for you: [Suggest only one slot from {{available_slots}}]?