Skip to main content

Prerequisites

The following example requires the pytz, requests, and openai libraries.
uv pip install requests pytz openai
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/91_tools/calcom_tools.py
from datetime import datetime

from agno.agent import Agent
from agno.models.openai import OpenAIResponses
from agno.tools.calcom import CalComTools

agent = Agent(
    name="Calendar Assistant",
    instructions=[
        f"You're scheduling assistant. Today is {datetime.now()}.",
        "You can help users by:",
        "- Finding available time slots",
        "- Creating new bookings",
        "- Managing existing bookings (view, reschedule, cancel)",
        "- 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=OpenAIResponses(id="gpt-5.2"),
    tools=[CalComTools(user_timezone="America/New_York")],
    markdown=True,
)

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

Toolkit Params

ParameterTypeDefaultDescription
api_keyOptional[str]NoneCal.com API key. Uses CALCOM_API_KEY if not set.
event_type_idOptional[int]NoneEvent type ID for scheduling. Uses CALCOM_EVENT_TYPE_ID if not set.
user_timezoneOptional[str]NoneUser’s timezone. Falls back to “America/New_York” if not set.
timeoutint30Request timeout in seconds
enable_get_available_slotsboolTrueEnable getting available time slots
enable_create_bookingboolTrueEnable creating new bookings
enable_get_upcoming_bookingsboolTrueEnable getting upcoming bookings
enable_reschedule_bookingboolTrueEnable rescheduling bookings
enable_cancel_bookingboolTrueEnable canceling bookings
allboolFalseEnable all tools

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
reschedule_bookingReschedules an existing booking
cancel_bookingCancels an existing booking

Developer Resources