> ## Documentation Index
> Fetch the complete documentation index at: https://phidatainc-agui.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Cal.com

> Use Calcom scheduling with Agno Agents.

Enable Agno agents to use [Calcom](https://github.com/calcom/cal.com) tool for calendaring and scheduling functions.

## Prerequisites

1. Get [Cal.com API key](https://cal.com/settings/developer/api-keys)
2. Get the event Type ID from Cal.com
3. Set up the following:
   * `uv pip install requests pytz`
   * Export these environment variables:
     ```bash theme={null}
     export CALCOM_API_KEY="your_api_key"
     export CALCOM_EVENT_TYPE_ID="your_event_type_id"
     ```
   * Alternatively, provide these environment variables when creating the CalComTools instance

```python theme={null}
from datetime import datetime

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

# ---------------------------------------------------------------------------
# Create Agent
# ---------------------------------------------------------------------------

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)
    - 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=[INSTRUCTIONS],
    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=[INSTRUCTIONS],
    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=[INSTRUCTIONS],
    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?")
```

## Run the Example

```bash theme={null}
# Clone and setup repo
git clone https://github.com/agno-agi/agno.git
cd agno/cookbook/91_tools

# Create and activate virtual environment
./scripts/demo_setup.sh
source .venvs/demo/bin/activate

python calcom_tools.py
```

For details, see [Cal.com cookbook](https://github.com/agno-agi/agno/blob/main/cookbook/91_tools/calcom_tools.py).
