Prerequisites

The following example requires the pytz and requests libraries.

pip install requests pytz
export CALCOM_API_KEY="your_api_key"
export CALCOM_EVENT_TYPE_ID="your_event_type_id"

Example

The following agent will use Cal.com to list all events in your Cal.com account for tomorrow.

cookbook/tools/calcom_tools.py

agent = Agent(
    name="Calendar Assistant",
    instructions=[
        f"You're scheduing assistant. Today is {datetime.now()}.",
        "You can help users by:",
        "- Finding available time slots",
        "- Creating new bookings",
        "- Managing existing bookings (view, reschedule, cancel) ",
        "- Getting booking details",
        "- IMPORTANT: In case of rescheduling or cancelling booking, call the get_upcoming_bookings function to get the booking uid. check available slots before making a booking for given time",
        "Always confirm important details before making bookings or changes.",
    ],
    model=OpenAIChat(id="gpt-4"),
    tools=[CalCom(user_timezone="America/New_York")],
    show_tool_calls=True,
    markdown=True,
)

agent.print_response("What are my bookings for tomorrow?")

Toolkit Params

ParameterTypeDefaultDescription
api_keystrNoneCal.com API key
event_type_idintNoneEvent type ID for scheduling
user_timezonestrNoneUser’s timezone (e.g. “America/New_York”)
get_available_slotsboolTrueEnable getting available time slots
create_bookingboolTrueEnable creating new bookings
get_upcoming_bookingsboolTrueEnable getting upcoming bookings
reschedule_bookingboolTrueEnable rescheduling bookings
cancel_bookingboolTrueEnable canceling bookings

Toolkit Functions

FunctionDescription
get_available_slotsGets available time slots for a given date range
create_bookingCreates a new booking with provided details
get_upcoming_bookingsGets list of upcoming bookings
get_booking_detailsGets details for a specific booking
reschedule_bookingReschedules an existing booking
cancel_bookingCancels an existing booking

Information