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
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
summary | string | Yes | - | Event title/name |
| Timed Events | ||||
start_time | string | Conditional* | - | Start datetime in ISO 8601 format |
end_time | string | No | start + 1h | End datetime in ISO 8601 format |
timezone | string | No | calendar tz | IANA timezone (e.g., "America/Los_Angeles") |
| All-Day Events | ||||
all_day_date | string | Conditional* | - | Start date in YYYY-MM-DD format |
all_day_end_date | string | No | same as start | End date in YYYY-MM-DD (inclusive) |
| Common Options | ||||
description | string | No | - | Event description/notes |
location | string | No | - | Event location |
calendar_id | string | No | "primary" | Target calendar ID |
visibility | string | No | "default" | Event visibility |
transparency | string | No | "opaque" | Free/busy status |
| Attendees | ||||
attendees | array | No | - | List of email addresses |
send_notifications | boolean | No | true | Send invite emails |
| Recurrence | ||||
recurrence_type | string | No | - | "daily", "weekly", "monthly", "yearly" |
recurrence_interval | integer | No | 1 | Every N periods |
recurrence_days | array | No | - | Days for weekly (e.g., ["Monday", "Friday"]) |
recurrence_count | integer | No | - | Number of occurrences |
recurrence_end_date | string | No | - | 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 specifiedtimezoneparameter)"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:
- The
timezoneparameter if you provide it - The calendar's default timezone if
timezoneis not specified
This means "17:00:00" becomes 5:00 PM in your calendar's timezone, NOT UTC.
Visibility Options
| Value | Description |
|---|---|
default | Uses calendar's default visibility |
public | Event is visible to everyone |
private | Event details hidden from others (shows as "Busy") |
confidential | Same as private in most clients |
Transparency Options
| Value | Description |
|---|---|
opaque | Event blocks time (shows as "Busy") - default |
transparent | Event 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
| Field | Description |
|---|---|
event_id | Unique identifier for the created event |
html_link | Direct link to view/edit event in Google Calendar |
event | Full event object with all details |
event.recurrence | RRULE string if recurring event |
event.attendees[].response_status | Will 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
-
No Natural Language Dates - Dates must be in ISO 8601 or YYYY-MM-DD format. "tomorrow at 2pm" is not supported.
-
No Google Meet Auto-Creation - This tool does not automatically create Google Meet links. Use Google Calendar UI for that.
-
No Custom Reminders - Events use calendar's default reminder settings. Custom reminders require a separate update.
-
No Attachments - Cannot attach files to events through this tool.
-
No Color Selection - Events use default calendar color.
-
OAuth Only - Requires Google Account with OAuth (App Passwords don't support Calendar API).
-
Write Access Required - Must have write access to the target calendar.
Tips
-
Default Duration - If you don't specify
end_time, events default to 1 hour. -
Timezone Handling - When providing
start_timewithout 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
timezoneparameter:"timezone": "America/Denver"
- Include timezone in the datetime:
- Times WITH timezone info (like
"17:00:00Z"or"17:00:00-08:00") are interpreted exactly as specified
-
Recurring Events - The first occurrence starts at the specified
start_time. Subsequent occurrences follow the recurrence rule. -
Multi-Day All-Day Events - The
all_day_end_dateis inclusive (the event includes that day). -
Attendee Notifications - Set
send_notifications: falsewhen adding events that attendees already know about. -
Private Events - Use
visibility: "private"for personal events on shared calendars. -
Non-Blocking Events - Use
transparency: "transparent"for optional events that shouldn't block your availability. -
Duplicate Attendees - The tool automatically deduplicates attendee emails.
Related Tools
- 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.