Prerequisites
The following example requires thepytz, 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
| Parameter | Type | Default | Description |
|---|---|---|---|
api_key | Optional[str] | None | Cal.com API key. Uses CALCOM_API_KEY if not set. |
event_type_id | Optional[int] | None | Event type ID for scheduling. Uses CALCOM_EVENT_TYPE_ID if not set. |
user_timezone | Optional[str] | None | User’s timezone. Falls back to “America/New_York” if not set. |
timeout | int | 30 | Request timeout in seconds |
enable_get_available_slots | bool | True | Enable getting available time slots |
enable_create_booking | bool | True | Enable creating new bookings |
enable_get_upcoming_bookings | bool | True | Enable getting upcoming bookings |
enable_reschedule_booking | bool | True | Enable rescheduling bookings |
enable_cancel_booking | bool | True | Enable canceling bookings |
all | bool | False | Enable all tools |
Toolkit Functions
| Function | Description |
|---|---|
get_available_slots | Gets available time slots for a given date range |
create_booking | Creates a new booking with provided details |
get_upcoming_bookings | Gets list of upcoming bookings |
reschedule_booking | Reschedules an existing booking |
cancel_booking | Cancels an existing booking |