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 openai
export 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.

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