Skip to main content

Create Event

Create a new Google Calendar event with support for timed events, all-day events, recurring events, and optional attendees.

Overview

The Create Event tool allows you to add new events to your Google Calendar. It supports:

  • Timed events with specific start and end times
  • All-day events for full-day entries (single or multi-day)
  • Recurring events with flexible scheduling (daily, weekly, monthly, yearly)
  • Attendee invitations with email notifications

This tool works with any calendar you have write access to (use List Calendars to find calendar IDs).

Prerequisites

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

Usage

Basic Timed Event

Create a simple 1-hour meeting:

{
"tool": "google_calendar_Create_Event",
"arguments": {
"summary": "Team Standup",
"start_time": "2024-01-15T09:00:00",
"timezone": "America/Los_Angeles"
}
}

Note: If end_time is not specified, it defaults to 1 hour after start_time.

Timed Event with End Time

Create an event with specific duration:

{
"tool": "google_calendar_Create_Event",
"arguments": {
"summary": "Project Review",
"start_time": "2024-01-15T14:00:00",
"end_time": "2024-01-15T15:30:00",
"description": "Quarterly project status review",
"location": "Conference Room B",
"timezone": "America/New_York"
}
}

All-Day Event (Single Day)

Create an all-day event like a holiday or reminder:

{
"tool": "google_calendar_Create_Event",
"arguments": {
"summary": "Company Holiday",
"all_day_date": "2024-07-04",
"description": "Independence Day - Office Closed"
}
}

All-Day Event (Multiple Days)

Create a multi-day all-day event like a vacation:

{
"tool": "google_calendar_Create_Event",
"arguments": {
"summary": "Team Offsite",
"all_day_date": "2024-02-12",
"all_day_end_date": "2024-02-14",
"location": "Lake Tahoe Resort",
"description": "Annual team building retreat"
}
}

Note: all_day_end_date is inclusive (the event includes Feb 14).

Event with Attendees

Invite people to your event:

{
"tool": "google_calendar_Create_Event",
"arguments": {
"summary": "Design Review",
"start_time": "2024-01-16T10:00:00",
"end_time": "2024-01-16T11:00:00",
"timezone": "America/Los_Angeles",
"attendees": ["alice@example.com", "bob@example.com"],
"send_notifications": true,
"description": "Review new homepage mockups"
}
}

Event Without Attendee Notifications

Add attendees without sending email invites:

{
"tool": "google_calendar_Create_Event",
"arguments": {
"summary": "Internal Sync",
"start_time": "2024-01-17T15:00:00",
"attendees": ["team@example.com"],
"send_notifications": false
}
}

Daily Recurring Event

Create an event that repeats every day:

{
"tool": "google_calendar_Create_Event",
"arguments": {
"summary": "Morning Standup",
"start_time": "2024-01-15T09:00:00",
"end_time": "2024-01-15T09:15:00",
"timezone": "America/Los_Angeles",
"recurrence_type": "daily",
"recurrence_count": 30
}
}

Weekly Recurring Event (Specific Days)

Create a meeting that repeats on certain days of the week:

{
"tool": "google_calendar_Create_Event",
"arguments": {
"summary": "Gym Session",
"start_time": "2024-01-15T07:00:00",
"end_time": "2024-01-15T08:00:00",
"recurrence_type": "weekly",
"recurrence_days": ["Monday", "Wednesday", "Friday"],
"recurrence_end_date": "2024-06-30"
}
}

Bi-Weekly Recurring Event

Create an event that repeats every 2 weeks:

{
"tool": "google_calendar_Create_Event",
"arguments": {
"summary": "1:1 with Manager",
"start_time": "2024-01-15T14:00:00",
"end_time": "2024-01-15T14:30:00",
"recurrence_type": "weekly",
"recurrence_interval": 2,
"recurrence_count": 26
}
}

Monthly Recurring Event

Create an event that repeats monthly:

{
"tool": "google_calendar_Create_Event",
"arguments": {
"summary": "Monthly Report Due",
"all_day_date": "2024-01-31",
"recurrence_type": "monthly",
"recurrence_count": 12
}
}

Private Event

Create an event that only you can see details of:

{
"tool": "google_calendar_Create_Event",
"arguments": {
"summary": "Doctor Appointment",
"start_time": "2024-01-18T11:00:00",
"end_time": "2024-01-18T12:00:00",
"location": "123 Medical Center Dr",
"visibility": "private"
}
}

Event Marked as Free (Non-blocking)

Create an event that doesn't block your calendar:

{
"tool": "google_calendar_Create_Event",
"arguments": {
"summary": "Optional Team Lunch",
"start_time": "2024-01-19T12:00:00",
"end_time": "2024-01-19T13:00:00",
"transparency": "transparent"
}
}

Specific Calendar

Create an event in a non-primary calendar:

{
"tool": "google_calendar_Create_Event",
"arguments": {
"summary": "Work Project Deadline",
"all_day_date": "2024-02-15",
"calendar_id": "work@group.calendar.google.com"
}
}

Input Parameters

ParameterTypeRequiredDefaultDescription
summarystringYes-Event title/name
Timed Events
start_timestringConditional*-Start datetime in ISO 8601 format
end_timestringNostart + 1hEnd datetime in ISO 8601 format
timezonestringNocalendar tzIANA timezone (e.g., "America/Los_Angeles")
All-Day Events
all_day_datestringConditional*-Start date in YYYY-MM-DD format
all_day_end_datestringNosame as startEnd date in YYYY-MM-DD (inclusive)
Common Options
descriptionstringNo-Event description/notes
locationstringNo-Event location
calendar_idstringNo"primary"Target calendar ID
visibilitystringNo"default"Event visibility
transparencystringNo"opaque"Free/busy status
Attendees
attendeesarrayNo-List of email addresses
send_notificationsbooleanNotrueSend invite emails
Recurrence
recurrence_typestringNo-"daily", "weekly", "monthly", "yearly"
recurrence_intervalintegerNo1Every N periods
recurrence_daysarrayNo-Days for weekly (e.g., ["Monday", "Friday"])
recurrence_countintegerNo-Number of occurrences
recurrence_end_datestringNo-End recurrence on date (YYYY-MM-DD)

*One of start_time or all_day_date is required (but not both).

Date/Time Format

Timed events use ISO 8601 datetime format:

  • "2024-01-15T10:00:00" - Time without timezone (interpreted in calendar's timezone or specified timezone parameter)
  • "2024-01-15T10:00:00-08:00" - Time with timezone offset (uses this specific timezone)
  • "2024-01-15T18:00:00Z" - UTC time

All-day events use simple date format:

  • "2024-01-15" - YYYY-MM-DD only

Important: If you provide start_time without a timezone (like "2024-01-15T17:00:00"), it will be interpreted in:

  1. The timezone parameter if you provide it
  2. The calendar's default timezone if timezone is not specified

This means "17:00:00" becomes 5:00 PM in your calendar's timezone, NOT UTC.

Visibility Options

ValueDescription
defaultUses calendar's default visibility
publicEvent is visible to everyone
privateEvent details hidden from others (shows as "Busy")
confidentialSame as private in most clients

Transparency Options

ValueDescription
opaqueEvent blocks time (shows as "Busy") - default
transparentEvent doesn't block time (shows as "Free")

Recurrence Guide

Daily Recurrence

{
"recurrence_type": "daily",
"recurrence_interval": 1, // Every day (default)
"recurrence_count": 30 // For 30 occurrences
}

Every 2 days:

{
"recurrence_type": "daily",
"recurrence_interval": 2,
"recurrence_end_date": "2024-12-31"
}

Weekly Recurrence

Every week on the same day as the event:

{
"recurrence_type": "weekly",
"recurrence_count": 10
}

Specific days of the week:

{
"recurrence_type": "weekly",
"recurrence_days": ["Monday", "Wednesday", "Friday"],
"recurrence_count": 52
}

Every 2 weeks:

{
"recurrence_type": "weekly",
"recurrence_interval": 2,
"recurrence_end_date": "2024-06-30"
}

Monthly Recurrence

Every month on the same date:

{
"recurrence_type": "monthly",
"recurrence_count": 12
}

Every 3 months (quarterly):

{
"recurrence_type": "monthly",
"recurrence_interval": 3,
"recurrence_end_date": "2025-12-31"
}

Yearly Recurrence

Every year on the same date:

{
"recurrence_type": "yearly",
"recurrence_count": 5
}

Response Format

Success Response

{
"success": true,
"message": "Event created successfully",
"event_id": "abc123xyz",
"html_link": "https://www.google.com/calendar/event?eid=abc123xyz",
"event": {
"id": "abc123xyz",
"calendar_id": "primary",
"status": "confirmed",
"summary": "Team Meeting",
"description": "Weekly team sync",
"location": "Conference Room A",

"start": "2024-01-15T10:00:00-08:00",
"end": "2024-01-15T11:00:00-08:00",
"start_datetime": "2024-01-15T10:00:00-08:00",
"end_datetime": "2024-01-15T11:00:00-08:00",
"start_timezone": "America/Los_Angeles",
"end_timezone": "America/Los_Angeles",
"all_day": false,

"attendees": [
{
"email": "alice@example.com",
"response_status": "needsAction",
"optional": false
}
],
"attendees_count": 1,

"organizer": {
"email": "you@gmail.com",
"self": true
},

"recurrence": ["RRULE:FREQ=WEEKLY;COUNT=10"],

"html_link": "https://www.google.com/calendar/event?eid=abc123xyz",
"visibility": "default",
"transparency": "opaque",

"created": "2024-01-10T08:00:00Z",
"updated": "2024-01-10T08:00:00Z"
}
}

Key Response Fields

FieldDescription
event_idUnique identifier for the created event
html_linkDirect link to view/edit event in Google Calendar
eventFull event object with all details
event.recurrenceRRULE string if recurring event
event.attendees[].response_statusWill be "needsAction" for new invites

Error Handling

Missing Required Fields

Error:

{
"error": "Event summary (title) is required."
}

Solution: Provide a summary parameter.

No Date/Time Provided

Error:

{
"error": "Either 'start_time' (for timed events) or 'all_day_date' (for all-day events) is required."
}

Solution: Provide either start_time or all_day_date.

Both Timed and All-Day

Error:

{
"error": "Cannot specify both 'start_time' and 'all_day_date'..."
}

Solution: Use only one: start_time for timed events OR all_day_date for all-day events.

End Before Start

Error:

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

Solution: Ensure end datetime is chronologically after start datetime.

Invalid Recurrence Type

Error:

{
"error": "Invalid recurrence_type 'biweekly'. Must be one of: daily, weekly, monthly, yearly"
}

Solution: Use one of the valid recurrence types. For bi-weekly, use "weekly" with "recurrence_interval": 2.

Invalid Day Name

Error:

{
"error": "Invalid day name 'Mon'. Must be one of: Monday, Tuesday, ..."
}

Solution: Use full day names: "Monday", "Tuesday", "Wednesday", etc.

Days with Non-Weekly Recurrence

Error:

{
"error": "recurrence_days can only be used with recurrence_type='weekly'."
}

Solution: recurrence_days only works with weekly recurrence.

Both Count and End Date

Error:

{
"error": "Cannot specify both 'recurrence_count' and 'recurrence_end_date'..."
}

Solution: Use either recurrence_count OR recurrence_end_date, not both.

Invalid Email Address

Error:

{
"error": "Invalid email address: 'not-an-email'"
}

Solution: Provide valid email addresses for attendees.

Calendar Not Found

Error:

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

Solution: Use List Calendars to find valid calendar IDs.

Calendar API Not Enabled

Error:

{
"error": "Google Calendar API is not enabled in your Google Cloud project..."
}

Solution: Follow Setup Guide to enable the API.

Limitations

  1. No Natural Language Dates - Dates must be in ISO 8601 or YYYY-MM-DD format. "tomorrow at 2pm" is not supported.

  2. No Google Meet Auto-Creation - This tool does not automatically create Google Meet links. Use Google Calendar UI for that.

  3. No Custom Reminders - Events use calendar's default reminder settings. Custom reminders require a separate update.

  4. No Attachments - Cannot attach files to events through this tool.

  5. No Color Selection - Events use default calendar color.

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

  7. Write Access Required - Must have write access to the target calendar.

Tips

  1. Default Duration - If you don't specify end_time, events default to 1 hour.

  2. Timezone Handling - When providing start_time without a timezone:

    • "2024-01-15T17:00:00" is interpreted as 5:00 PM in your calendar's timezone
    • To ensure correct time, either:
      • Include timezone in the datetime: "2024-01-15T17:00:00-07:00"
      • Or specify the timezone parameter: "timezone": "America/Denver"
    • Times WITH timezone info (like "17:00:00Z" or "17:00:00-08:00") are interpreted exactly as specified
  3. Recurring Events - The first occurrence starts at the specified start_time. Subsequent occurrences follow the recurrence rule.

  4. Multi-Day All-Day Events - The all_day_end_date is inclusive (the event includes that day).

  5. Attendee Notifications - Set send_notifications: false when adding events that attendees already know about.

  6. Private Events - Use visibility: "private" for personal events on shared calendars.

  7. Non-Blocking Events - Use transparency: "transparent" for optional events that shouldn't block your availability.

  8. Duplicate Attendees - The tool automatically deduplicates attendee emails.

  • List Calendars - Get calendar IDs
  • Get Events - Search and list events
  • Update Event (coming soon)
  • Delete Event (coming soon)

Billing

Cost: 1 credit per execution

Fixed cost regardless of whether attendees are invited or recurrence is set.