Skip to main content

Update Event

Update an existing Google Calendar event. Supports partial updates, full replacement, recurring events, attendee management, and all event properties.

Overview

The Update Event tool allows you to modify existing events in your Google Calendar. It supports:

  • Partial updates - Update only specific fields while keeping others unchanged
  • Full replacement - Completely replace an event's properties
  • Recurring event updates - Update single instances, future instances, or entire series
  • Attendee management - Replace all attendees, or incrementally add/remove specific ones
  • Time changes - Reschedule events or change their duration
  • Format conversion - Convert between timed and all-day events

This tool works with any calendar you have write access to and must be used by the event organizer.

Prerequisites

  • A connected Google Account with OAuth authentication
  • Google Calendar API enabled in your Google Cloud project
  • Setup Guide
  • Event organizer permissions (only organizers can update events)

Usage

Update Event Title

Change the summary/title of an event:

{
"tool": "google_calendar_Update_Event",
"arguments": {
"event_id": "abc123xyz",
"summary": "Updated Team Meeting"
}
}

Reschedule Event (Change Time)

Move an event to a different time:

{
"tool": "google_calendar_Update_Event",
"arguments": {
"event_id": "abc123xyz",
"start_time": "2024-01-20T15:00:00",
"end_time": "2024-01-20T16:00:00",
"timezone": "America/Los_Angeles",
"send_notifications": true
}
}

Change Only Start Time (Preserve Duration)

If you only specify start_time without end_time, the tool preserves the original event duration:

{
"tool": "google_calendar_Update_Event",
"arguments": {
"event_id": "abc123xyz",
"start_time": "2024-01-20T10:00:00"
}
}

Update Location

Change where an event takes place:

{
"tool": "google_calendar_Update_Event",
"arguments": {
"event_id": "abc123xyz",
"location": "Building C, Room 305"
}
}

Update Description

Add or change event notes:

{
"tool": "google_calendar_Update_Event",
"arguments": {
"event_id": "abc123xyz",
"description": "Updated agenda:\n1. Q4 Review\n2. Budget Discussion\n3. Next Steps"
}
}

Replace All Attendees

Replace the entire attendee list:

{
"tool": "google_calendar_Update_Event",
"arguments": {
"event_id": "abc123xyz",
"attendees": ["alice@example.com", "bob@example.com", "charlie@example.com"],
"send_notifications": true
}
}

Add Attendees (Keep Existing)

Add new attendees without removing existing ones:

{
"tool": "google_calendar_Update_Event",
"arguments": {
"event_id": "abc123xyz",
"add_attendees": ["diane@example.com", "eve@example.com"],
"send_notifications": true
}
}

Remove Attendees (Keep Remaining)

Remove specific attendees while keeping others:

{
"tool": "google_calendar_Update_Event",
"arguments": {
"event_id": "abc123xyz",
"remove_attendees": ["bob@example.com"],
"send_notifications": true
}
}

Convert Timed Event to All-Day

Change a timed event to an all-day event:

{
"tool": "google_calendar_Update_Event",
"arguments": {
"event_id": "abc123xyz",
"all_day_date": "2024-01-20"
}
}

Convert All-Day Event to Timed

Change an all-day event to a specific time:

{
"tool": "google_calendar_Update_Event",
"arguments": {
"event_id": "abc123xyz",
"start_time": "2024-01-20T14:00:00",
"end_time": "2024-01-20T15:30:00",
"timezone": "America/New_York"
}
}

Add Recurrence to Existing Event

Make a single event recurring:

{
"tool": "google_calendar_Update_Event",
"arguments": {
"event_id": "abc123xyz",
"recurrence_type": "weekly",
"recurrence_count": 10
}
}

Update Recurrence Pattern

Change how an event repeats:

{
"tool": "google_calendar_Update_Event",
"arguments": {
"event_id": "abc123xyz",
"recurrence_type": "weekly",
"recurrence_days": ["Monday", "Wednesday", "Friday"],
"recurrence_end_date": "2024-12-31"
}
}

Remove Recurrence from Event

Convert a recurring event to a single event:

{
"tool": "google_calendar_Update_Event",
"arguments": {
"event_id": "abc123xyz",
"clear_recurrence": true
}
}

Update Single Instance of Recurring Event

Update just one occurrence:

{
"tool": "google_calendar_Update_Event",
"arguments": {
"event_id": "abc123xyz_20240120T100000Z",
"start_time": "2024-01-20T11:00:00",
"recurring_event_update_scope": "this_instance"
}
}

Update All Instances of Recurring Event

Update the entire series:

{
"tool": "google_calendar_Update_Event",
"arguments": {
"event_id": "abc123xyz_20240120T100000Z",
"location": "New Building",
"recurring_event_update_scope": "all_instances"
}
}

Change Event Visibility

Make an event private:

{
"tool": "google_calendar_Update_Event",
"arguments": {
"event_id": "abc123xyz",
"visibility": "private"
}
}

Mark Event as Free (Non-blocking)

Change event to not block calendar time:

{
"tool": "google_calendar_Update_Event",
"arguments": {
"event_id": "abc123xyz",
"transparency": "transparent"
}
}

Multiple Updates at Once

Update several properties in one call:

{
"tool": "google_calendar_Update_Event",
"arguments": {
"event_id": "abc123xyz",
"summary": "Rescheduled Team Meeting",
"start_time": "2024-01-22T10:00:00",
"end_time": "2024-01-22T11:30:00",
"location": "Virtual - Zoom",
"add_attendees": ["newmember@example.com"],
"send_notifications": true
}
}

Input Parameters

ParameterTypeRequiredDefaultDescription
event_idstringYes-Event identifier. Get from Get Events tool.
calendar_idstringNo"primary"Target calendar ID
Update Mode
update_modestringNo"partial""partial" (update only specified fields) or "full" (replace entire event)
Event Details
summarystringNo-Event title/name
descriptionstringNo-Event description/notes
locationstringNo-Event location
Timing (Timed Events)
start_timestringNo-Start datetime (ISO 8601)
end_timestringNo-End datetime (ISO 8601)
timezonestringNo-IANA timezone (e.g., "America/Los_Angeles")
Timing (All-Day Events)
all_day_datestringNo-Start date (YYYY-MM-DD)
all_day_end_datestringNo-End date (YYYY-MM-DD, inclusive)
Attendees (Replace)
attendeesarrayNo-Replace all attendees with this list
Attendees (Incremental)
add_attendeesarrayNo-Add these attendees (keep existing)
remove_attendeesarrayNo-Remove these attendees (keep remaining)
send_notificationsbooleanNotrueSend update emails to attendees
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 date (YYYY-MM-DD)
clear_recurrencebooleanNofalseRemove recurrence rules
Recurring Event Scope
recurring_event_update_scopestringNo-"this_instance", "this_and_future", or "all_instances"
Visibility & Status
visibilitystringNo-"default", "public", "private", "confidential"
transparencystringNo-"opaque" (busy) or "transparent" (free)

Parameter Constraints

  • Cannot use both start_time and all_day_date in same request
  • Cannot use both attendees and add_attendees/remove_attendees
  • Cannot use both recurrence_type and clear_recurrence
  • Cannot use both recurrence_count and recurrence_end_date
  • recurring_event_update_scope only applies to recurring events

Response Format

Success Response

{
"success": true,
"message": "Event updated successfully",
"event_id": "abc123xyz",
"html_link": "https://www.google.com/calendar/event?eid=abc123xyz",
"updated_fields": ["summary", "start", "end", "location"],
"previous_values": {
"summary": "Old Team Meeting",
"start_time": "2024-01-15T10:00:00-08:00",
"location": "Conference Room A"
},
"is_recurring": false,
"update_scope": null,
"event": {
"id": "abc123xyz",
"calendar_id": "primary",
"status": "confirmed",
"summary": "Updated Team Meeting",
"description": "Weekly sync",
"location": "Conference Room B",
"start": "2024-01-20T15:00:00-08:00",
"end": "2024-01-20T16:00:00-08:00",
"start_datetime": "2024-01-20T15:00:00-08:00",
"end_datetime": "2024-01-20T16:00:00-08:00",
"start_timezone": "America/Los_Angeles",
"end_timezone": "America/Los_Angeles",
"all_day": false,
"attendees": [
{
"email": "alice@example.com",
"response_status": "accepted"
}
],
"attendees_count": 1,
"html_link": "https://www.google.com/calendar/event?eid=abc123xyz",
"visibility": "default",
"transparency": "opaque"
}
}

Response Fields

FieldTypeDescription
successbooleanWhether update succeeded
messagestringSuccess message
event_idstringUpdated event ID
html_linkstringLink to view event in Google Calendar
updated_fieldsarrayList of fields that were modified
previous_valuesobjectOriginal values of changed fields
is_recurringbooleanWhether event is part of recurring series
update_scopestringScope of update for recurring events
recurring_event_idstringMaster event ID (if instance)
eventobjectComplete updated event details

Error Handling

Event Not Found

Error:

{
"error": "Event not found with ID 'abc123xyz' in calendar 'primary'..."
}

Solution:

  • Verify event_id using Get Events tool
  • Check that event hasn't been deleted
  • Ensure you're using the correct calendar_id

No Fields to Update

Error:

{
"error": "No fields to update. Specify at least one field to update..."
}

Solution: Provide at least one field to modify (summary, start_time, location, etc.)

Permission Denied

Error:

{
"error": "Insufficient permissions to update this event..."
}

Solution:

  • Only event organizers can update events
  • Ensure you have write access to the calendar
  • Cannot update events in read-only calendars

Cannot Mix Attendee Parameters

Error:

{
"error": "Cannot use 'attendees' with 'add_attendees' or 'remove_attendees'..."
}

Solution: Use either:

  • attendees to replace all attendees, OR
  • add_attendees/remove_attendees for incremental changes

Cannot Mix Timed and All-Day

Error:

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

Solution: Update with either timed fields (start_time) OR all-day fields (all_day_date), not both.

Invalid Recurring Scope

Error:

{
"error": "Cannot specify recurring_event_update_scope for non-recurring events..."
}

Solution: Only use recurring_event_update_scope when updating recurring events.

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.

Update Modes

Partial Update (Default)

Only updates fields you specify. All other fields remain unchanged.

{
"update_mode": "partial",
"summary": "New Title"
}

Best for: Making targeted changes without affecting other properties.

Full Update

Replaces the entire event. Requires summary and timing information.

{
"update_mode": "full",
"summary": "Complete Replacement",
"start_time": "2024-01-20T10:00:00",
"end_time": "2024-01-20T11:00:00"
}

Best for: Complete event replacement or when you want to ensure no unexpected fields remain.

Recurring Event Updates

Update Scope Options

ScopeDescriptionUse Case
this_instanceUpdate only this occurrenceChange time for one meeting
this_and_futureUpdate this and all future occurrencesChange location starting now
all_instancesUpdate entire seriesChange title of all meetings

Recurring Event Examples

Update title for all instances:

{
"event_id": "recurring_master_id",
"summary": "New Series Title",
"recurring_event_update_scope": "all_instances"
}

Reschedule one instance:

{
"event_id": "instance_id_20240120T100000Z",
"start_time": "2024-01-20T15:00:00",
"recurring_event_update_scope": "this_instance"
}

Change location for remaining meetings:

{
"event_id": "instance_id_20240120T100000Z",
"location": "New Room",
"recurring_event_update_scope": "this_and_future"
}

Limitations

  1. Organizer Only - Only the event organizer can update events. Attendees cannot make changes.

  2. No Partial Attendee Updates - When using attendees parameter, you replace the entire list. Use add_attendees/remove_attendees for incremental changes.

  3. Recurring Complexity - "this_and_future" updates can be complex. The tool may fall back to updating only the instance.

  4. No Custom Reminders - Cannot update reminder settings through this tool.

  5. No Attachment Management - Cannot add/remove file attachments.

  6. No Color Selection - Cannot change event color.

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

  8. Read Calendar ID - Cannot move events between calendars by updating calendar_id.

Tips

  1. Get Event ID First - Use Get Events tool to find the correct event_id before updating.

  2. Partial Updates - Default update_mode: "partial" is safer. Only changes fields you specify.

  3. Attendee Management - Use add_attendees/remove_attendees to avoid accidentally removing attendees.

  4. Preserve Duration - If you only specify start_time, the tool keeps the original event duration.

  5. Notifications Default - send_notifications defaults to true. Set to false for silent updates.

  6. Previous Values - Response includes previous_values to see what changed.

  7. Recurring Events - Always specify recurring_event_update_scope when updating recurring events to be explicit about what you're changing.

  8. Timezone Handling - When updating times without timezone info, they're interpreted in the calendar's timezone. Include timezone offset or use timezone parameter for clarity.

  9. Multiple Changes - You can update multiple fields in one call for efficiency.

  10. Test with Non-Important Events - When learning recurring event updates, test on non-critical events first.

Billing

Cost: 1 credit per execution

Fixed cost regardless of whether updating single instance or entire recurring series.