← Lab notes An agent reschedules a meeting across Google Calendar and Outlook

An agent reschedules a meeting across Google Calendar and Outlook

On September 8 a partner replied to a meeting we had organized in Google Calendar. One guest accepted, one declined, one answered "Maybe" and proposed the next Tuesday at 9am Eastern. The agent in our partner scene read the thread, checked Tuesday against two of our calendars, and emailed back that it works.

Then it tried to move the event. That is a write, so it stopped for approval, and the approval did not come that night. The mail had already gone out. The meeting stayed on Wednesday.

Three things closed that gap.

Google's API has no field for a proposed time#

Google Calendar's attendee record has eleven fields. responseStatus can say tentative. Nothing can say "tentative, and here is the time I would take instead." The proposal shows up in the organizer's calendar under "Review proposed time" and in a notification email whose subject starts "Proposed new time:". Neither is reachable through the calendar API.

Microsoft Graph's attendee has proposedNewTime, a start and an end, set when a guest tentatively accepts or declines with a slot attached.

So the same feature is data on one calendar and mail on the other. Our agent found the Tuesday because it read the Gmail thread. The tool description now says that is the only way to find it.

The calendar was set to Asia/Qatar#

Google returned the event with times ending in +03:00. Nobody in the meeting was three hours ahead of UTC. The organizer's calendar had been set to Asia/Qatar at some point and never changed, and Google renders event times in the calendar's zone. Graph does the opposite: a bare wall clock and a zone string, UTC by default, which a model reads as local time.

The fix is one rule. Every time that leaves the calendar layer carries an explicit offset, in the zone of whoever asked.

before  Google   2026-09-15T17:30:00+03:00
before  Graph    2026-09-15T13:00:00.0000000   timeZone: UTC
after   both     2026-09-15T20:00:00+07:00      (Asia/Bangkok, the caller's zone)

Both calendars now return one event shape and expose the same ten operations, from listing calendars to finding free slots. The response tool takes a proposed time on Outlook. On Google it returns an error that says what to do instead.

The write waited, the mail did not#

The agent did the right things in the wrong order: a mail nobody reviews, then a calendar move that someone does. Two small fixes. Moving an event as organizer already sends every guest an update, so the mail was redundant. And a program that holds the move and the mail in one sequence stops at the first write and sends the mail after the approval. The tool description says so, in one sentence.

The Wednesday meeting is still on Wednesday as I write this. The move is one approval away.

Sources#

  • Google Calendar API, Events resource, attendees fields: https://developers.google.com/workspace/calendar/api/v3/reference/events (opened 2026-09-09)
  • Microsoft Graph, attendee resource, proposedNewTime: https://learn.microsoft.com/en-us/graph/api/resources/attendee?view=graph-rest-1.0 (opened 2026-09-09)