Skip to main content

Check Availability

Check if you are free during a specific time period. Quickly determine if a time slot is available before scheduling.

Overview

The Check Availability tool verifies if a specific time slot is free in your calendar. It:

  • Checks for conflicting events during the requested time
  • Returns availability status (free or busy)
  • Lists all conflicting events if busy
  • Respects event transparency (transparent events don't block)
  • Works with any calendar you have access to

Prerequisites

  • A connected Google Account with OAuth authentication
  • Google Calendar API enabled in your Google Cloud project
  • Setup Guide

Usage

Basic Check

Check if a time slot is available:

{
"tool": "google_calendar_Check_Availability",
"arguments": {
"start_time": "2024-01-15T14:00:00",
"end_time": "2024-01-15T15:00:00"
}
}

Check with Timezone

Specify times with timezone information:

{
"tool": "google_calendar_Check_Availability",
"arguments": {
"start_time": "2024-01-15T14:00:00-08:00",
"end_time": "2024-01-15T15:00:00-08:00",
"calendar_id": "primary"
}
}

Check Specific Calendar

Check availability on a work calendar:

{
"tool": "google_calendar_Check_Availability",
"arguments": {
"start_time": "2024-01-15T10:00:00",
"end_time": "2024-01-15T11:30:00",
"calendar_id": "work@company.com"
}
}

Check Lunch Time

Verify lunch slot is free:

{
"tool": "google_calendar_Check_Availability",
"arguments": {
"start_time": "2024-01-15T12:00:00",
"end_time": "2024-01-15T13:00:00"
}
}

Check Short Meeting Slot

Verify a 30-minute slot:

{
"tool": "google_calendar_Check_Availability",
"arguments": {
"start_time": "2024-01-15T09:30:00",
"end_time": "2024-01-15T10:00:00"
}
}

Input Parameters

ParameterTypeRequiredDefaultDescription
start_timestringYes-Start datetime in ISO 8601 format (e.g., "2024-01-15T10:00:00" or "2024-01-15T10:00:00-08:00")
end_timestringYes-End datetime in ISO 8601 format. Must be after start_time.
calendar_idstringNo"primary"Calendar identifier. Use "primary" for main calendar.

Date/Time Format

With timezone:

  • "2024-01-15T14:00:00-08:00" - Pacific time
  • "2024-01-15T22:00:00Z" - UTC time

Without timezone:

  • "2024-01-15T14:00:00" - Interpreted in calendar's timezone

Response Format

Available (No Conflicts)

{
"success": true,
"is_available": true,
"requested_time": {
"start": "2024-01-15T16:00:00-08:00",
"end": "2024-01-15T17:00:00-08:00",
"duration_minutes": 60
},
"conflicting_events": [],
"conflict_count": 0,
"calendar_id": "primary",
"calendar_timezone": "America/Los_Angeles"
}

Busy (Has Conflicts)

{
"success": true,
"is_available": false,
"requested_time": {
"start": "2024-01-15T14:00:00-08:00",
"end": "2024-01-15T15:00:00-08:00",
"duration_minutes": 60
},
"conflicting_events": [
{
"id": "abc123xyz",
"calendar_id": "primary",
"status": "confirmed",
"summary": "Team Meeting",
"description": "Weekly sync",
"location": "Conference Room A",
"start": "2024-01-15T14:00:00-08:00",
"end": "2024-01-15T15:00:00-08:00",
"start_datetime": "2024-01-15T14:00:00-08:00",
"end_datetime": "2024-01-15T15:00:00-08:00",
"start_timezone": "America/Los_Angeles",
"end_timezone": "America/Los_Angeles",
"all_day": false,
"attendees_count": 3,
"organizer": {
"email": "you@gmail.com",
"self": true
},
"html_link": "https://www.google.com/calendar/event?eid=abc123xyz",
"visibility": "default",
"transparency": "opaque"
}
],
"conflict_count": 1,
"calendar_id": "primary",
"calendar_timezone": "America/Los_Angeles"
}

Multiple Conflicts

{
"success": true,
"is_available": false,
"requested_time": {
"start": "2024-01-15T09:00:00-08:00",
"end": "2024-01-15T17:00:00-08:00",
"duration_minutes": 480
},
"conflicting_events": [
{
"id": "event1",
"summary": "Morning Standup",
"start": "2024-01-15T09:00:00-08:00",
"end": "2024-01-15T09:30:00-08:00"
},
{
"id": "event2",
"summary": "Team Meeting",
"start": "2024-01-15T14:00:00-08:00",
"end": "2024-01-15T15:00:00-08:00"
}
],
"conflict_count": 2,
"calendar_id": "primary",
"calendar_timezone": "America/Los_Angeles"
}

Response Fields

FieldTypeDescription
is_availablebooleantrue if time slot is free, false if busy
Requested Time
requested_time.startstringStart time that was checked (ISO 8601)
requested_time.endstringEnd time that was checked (ISO 8601)
requested_time.duration_minutesintegerDuration of the requested slot
Conflicts
conflicting_eventsarrayList of events that overlap (empty if available)
conflict_countintegerNumber of conflicting events
Calendar Info
calendar_idstringWhich calendar was checked
calendar_timezonestringCalendar's timezone

Use Cases

1. Pre-Schedule Validation

Check if a time is available before creating an event:

{
"tool": "google_calendar_Check_Availability",
"arguments": {
"start_time": "2024-01-16T10:00:00",
"end_time": "2024-01-16T11:00:00"
}
}

If is_available is true, proceed with Create Event.

2. Find Alternative Times

If busy, check nearby times:

{
"tool": "google_calendar_Check_Availability",
"arguments": {
"start_time": "2024-01-16T11:00:00",
"end_time": "2024-01-16T12:00:00"
}
}

3. Multi-Calendar Check

Check availability across work and personal calendars:

First check work:

{
"tool": "google_calendar_Check_Availability",
"arguments": {
"start_time": "2024-01-16T14:00:00",
"end_time": "2024-01-16T15:00:00",
"calendar_id": "work@company.com"
}
}

Then check personal:

{
"tool": "google_calendar_Check_Availability",
"arguments": {
"start_time": "2024-01-16T14:00:00",
"end_time": "2024-01-16T15:00:00",
"calendar_id": "primary"
}
}

Only schedule if both return is_available: true.

4. Conflict Details

When busy, examine conflicts to decide if time can be rescheduled:

Look at conflicting_events[].summary and attendees_count to assess meeting importance.

5. Quick Time Verification

Before proposing a meeting time to others:

{
"tool": "google_calendar_Check_Availability",
"arguments": {
"start_time": "2024-01-17T15:00:00",
"end_time": "2024-01-17T16:00:00"
}
}

Error Handling

Missing Required Parameters

Error:

{
"error": "start_time is required"
}

Solution: Provide both start_time and end_time.

Invalid Time Range

Error:

{
"error": "end_time must be after start_time"
}

Solution: Ensure end time is chronologically after start time.

Invalid Date Format

Error:

{
"error": "Invalid datetime format. Use ISO 8601 format: ..."
}

Solution: Use ISO 8601 format like "2024-01-15T10:00:00" or "2024-01-15T10:00:00-08:00".

Calendar Not Found

Error:

{
"error": "Resource not found: Calendar not found"
}

Solution: Use List Calendars to find valid calendar IDs.

Tips

  1. Transparent Events Don't Block - Events marked as "transparent" (free) are ignored. These show on your calendar but don't block scheduling.

  2. All-Day Events Block - All-day events are treated as blocking the entire day if the requested time falls on that date.

  3. Cancelled Events Ignored - Cancelled events don't count as conflicts.

  4. Partial Overlaps Count - Even if the conflict is only 1 minute of overlap, is_available will be false.

  5. Check Before Create - Always check availability before calling Create Event to avoid double-booking.

  6. Multiple Calendars - Check each calendar separately. If any calendar shows busy, the time is not fully available.

  7. Past Times Allowed - You can check past times. Useful for verifying if you were busy at a specific time.

  8. Timezone Handling - If you provide times without timezone info, they're interpreted in the calendar's default timezone.

  9. Use with Find Slot - For finding available times, use Find Next Available Slot instead. This tool is for checking a specific time.

  10. Conflict Details - When busy, examine conflicting_events to understand what's blocking the time.

Limitations

  1. Single Calendar - Checks one calendar at a time. Call multiple times for multiple calendars.

  2. Authenticated User Only - Cannot check other people's availability. Only checks your own calendars.

  3. No Suggestions - Only returns yes/no. Use Find Next Available Slot to get alternative time suggestions.

  4. OAuth Only - Requires Google Account with OAuth (App Passwords don't support Calendar API).

  5. No Freebusy API - Does not use Google's Freebusy API (which can check multiple calendars at once). For that level of functionality, use Find Next Available Slot.

Billing

Cost: 1 credit per execution

Fixed cost regardless of whether slot is available or how many conflicts exist.