Calcom Tools
Use Calcom scheduling with Agno Agents.
"""
Calcom Tools
=============================
Demonstrates calcom tools.
"""
from datetime import datetime
from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.tools.calcom import CalComTools
# ---------------------------------------------------------------------------
# Create Agent
# ---------------------------------------------------------------------------
"""
Example showing how to use the Cal.com Tools with Agno.
Requirements:
- Cal.com API key (get from cal.com/settings/developer/api-keys)
- Event Type ID from Cal.com
- uv pip install requests pytz
Usage:
- Set the following environment variables:
export CALCOM_API_KEY="your_api_key"
export CALCOM_EVENT_TYPE_ID="your_event_type_id"
- Or provide them when creating the CalComTools instance
"""
INSTRUCTONS = 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.
"""
# Example 1: Include specific Cal.com functions for booking management
booking_agent = Agent(
name="Booking Assistant",
instructions=[INSTRUCTONS],
model=OpenAIChat(id="gpt-4"),
tools=[
CalComTools(
user_timezone="America/New_York",
)
],
markdown=True,
)
# Example 2: Exclude cancellation functions for safety
safe_calendar_agent = Agent(
name="Safe Calendar Assistant",
instructions=[INSTRUCTONS],
model=OpenAIChat(id="gpt-4"),
tools=[
CalComTools(
user_timezone="America/New_York",
)
],
markdown=True,
)
# Example 3: Full Cal.com functionality (default)
agent = Agent(
name="Full Calendar Assistant",
instructions=[INSTRUCTONS],
model=OpenAIChat(id="gpt-4"),
tools=[CalComTools(user_timezone="America/New_York")],
markdown=True,
)
# Example usage
# ---------------------------------------------------------------------------
# Run Agent
# ---------------------------------------------------------------------------
if __name__ == "__main__":
agent.print_response("What are my bookings for tomorrow?")Restrict the scheduling tools
The three configurations currently enable the same five operations. To match Example 2's no-cancellation label, add enable_cancel_booking=False to its CalComTools call. Instructions asking for confirmation do not enforce a pause; use requires_confirmation_tools=["create_booking", "reschedule_booking", "cancel_booking"] with Agno's confirmation flow when you need an application approval step.
Set CALCOM_EVENT_TYPE_ID to the numeric ID of an existing event type. Replace America/New_York with your calendar's intended timezone. The final prompt only asks to list bookings, but the default agent also has tools that can change them.
Run the Example
Set up your virtual environment
uv venv --python 3.12
source .venv/bin/activateInstall dependencies
uv pip install -U agno openai pytz requestsExport environment variables
export CALCOM_API_KEY="your_calcom_api_key_here"
export CALCOM_EVENT_TYPE_ID="your_calcom_event_type_id_here"
export OPENAI_API_KEY="your_openai_api_key_here"Run the example
Save the code above as calcom_tools.py, then run:
python calcom_tools.pyFull source: cookbook/91_tools/calcom_tools.py