#+TITLE: Edit Calendar Event Workflow #+AUTHOR: Craig Jennings & Claude #+DATE: 2026-02-01 * Overview Workflow for editing existing calendar events. Uses the Google Calendar MCP server (preferred) or gcalcli (fallback, personal account only). The MCP server supports direct event updates via =update-event= — no delete-and-recreate needed. gcalcli fallback still uses delete-and-recreate since gcalcli's edit command is interactive. * Triggers - "edit the meeting" - "change my appointment" - "reschedule" - "update the event" - "move my appointment" * Prerequisites - Google Calendar MCP server configured and authenticated (=@cocal/google-calendar-mcp=) - Two accounts available: =personal= (Craig Google) and =work= (Craig Deepsat) - Fallback: gcalcli installed (personal account only) - Event must exist on calendar * CRITICAL: Check All Calendars Before Rescheduling When rescheduling an event, ALWAYS check for conflicts at the new time across ALL calendars: 1. *MCP server* — check both personal and work accounts via =list-events= or =get-freebusy= 2. *Emacs org files* — for Proton calendar (not accessible via MCP or gcalcli): #+begin_src bash grep "TARGET_DATE" ~/.emacs.d/data/pcal.org # Proton calendar #+end_src Verify the new time is free across all calendars before rescheduling. * Workflow Steps ** 1. Parse User Request Extract: - Which event (title, partial match, or date hint) - What to change (if mentioned) Examples: - "Edit the dentist appointment" → search for "dentist" - "Reschedule tomorrow's meeting" → search tomorrow's events - "Change the 3pm call to 4pm" → search by time ** 2. Search for Event *** MCP (preferred) Use =search-events= or =list-events= MCP tool with appropriate =account_id= ("personal" or "work"). *** gcalcli (fallback, personal only) #+begin_src bash gcalcli --calendar "Calendar Name" search "event title" gcalcli --calendar "Calendar Name" agenda "date" "date 11:59pm" #+end_src ** 3. Handle Multiple Matches If search returns multiple events: #+begin_example Found 3 events matching "meeting": 1. Team Meeting - Feb 3, 2026 at 9:00 AM 2. Project Meeting - Feb 4, 2026 at 2:00 PM 3. Client Meeting - Feb 5, 2026 at 10:00 AM Which event do you want to edit? (1-3) #+end_example ** 4. Display Full Event Details Show the current event state: #+begin_example Event: Team Meeting When: Monday, Feb 3, 2026 at 9:00 AM Duration: 1 hour Location: Conference Room A Description: Weekly sync Reminders: 5 min, 0 min Calendar: Craig #+end_example ** 5. Ask What to Change Options: - Title - Date/Time - Duration - Location - Description - Reminders Can change one or multiple fields. ** 6. Show Updated Summary Before applying changes: #+begin_example Updated Event: Event: Team Standup (was: Team Meeting) When: Monday, Feb 3, 2026 at 9:30 AM (was: 9:00 AM) Duration: 30 minutes (was: 1 hour) Location: Conference Room A Description: Weekly sync Reminders: 5 min, 0 min Calendar: Craig Apply these changes? (yes/no) #+end_example ** 7. Explicit Confirmation *Do NOT apply changes until user confirms.* ** 8. Execute Edit *** MCP (preferred — direct update) Use the =update-event= MCP tool: - =account_id=: "personal" or "work" - =calendar_id=: calendar name or ID - =event_id=: event ID (from search/list results) - Only pass the fields that changed (summary, start, end, location, description, etc.) *** gcalcli (fallback, personal only — delete + recreate) Since gcalcli edit is interactive, use delete + add: #+begin_src bash # Delete original gcalcli --calendar "Calendar Name" delete "Event Title" --iamaexpert # Recreate with updated fields gcalcli --calendar "Calendar Name" add \ --title "Updated Title" \ --when "new date/time" \ --duration NEW_MINUTES \ --where "Location" \ --description "Description" \ --reminder 5 \ --reminder 0 \ --noprompt #+end_src *Warning:* The gcalcli delete+recreate approach deletes ALL instances of a recurring event. The MCP =update-event= tool handles this more gracefully. ** 9. Verify *** MCP Use =search-events= or =get-event= to verify the update. *** gcalcli (fallback) #+begin_src bash gcalcli --calendar "Calendar Name" search "Updated Title" #+end_src Report success or failure. * Error Handling ** Event Not Found - Verify spelling - Try partial match - Check date range ** Multiple Matches - Show all matches - Ask user to select one - Use more specific search terms ** MCP Authentication Error Use =manage-accounts= MCP tool with =action: "add"= to re-authenticate. * Related - [[file:add-calendar-event.org][Add Calendar Event]] - create events - [[file:read-calendar-events.org][Read Calendar Events]] - view events - [[file:delete-calendar-event.org][Delete Calendar Event]] - remove events