Cal.com
CalComTools enable an Agent to check availability, create, reschedule, and cancel Cal.com bookings.
Prerequisites
The following example requires the pytz, requests, and openai libraries.
uv pip install agno requests pytz openaiexport CALCOM_API_KEY="your_api_key"
export CALCOM_EVENT_TYPE_ID="your_event_type_id"The Agent model uses an OpenAI key, separately from any toolkit provider credentials.
Set OpenAI Key
Set your OPENAI_API_KEY as an environment variable. You can get one from OpenAI.
export OPENAI_API_KEY=sk-***Example
The following agent will use Cal.com to list all events in your Cal.com account for tomorrow.
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 |