AI agents and post-booking scheduling architecture

    Meeting Rescheduling API for AI Agents: Repair a Booked Group Without Ghost Events

    By Tevye Krynski16 min read

    Booking is not the end of a hard meeting. The customer moves the deadline. One required engineer declines. The organizer asks to keep the day but change the hour. The agent sees an event ID and, like the fools we are, treats update and recreate as equivalent. Now two invitations survive, one participant answers the old thread, and nobody can prove which meeting is real.

    Build a post-booking repair path in eight steps

    Use one sixty-minute implementation review with three required people, one optional observer, mixed Google and Microsoft calendars, and one unconnected customer. The event is already booked. A required participant becomes unavailable, one old invitation reply arrives during repair, and the first update response times out.

    1. 1

      Parse change intent before touching the event

      Accept a typed command with authenticated actor, meeting ID, expected revision, requested action, reason class, allowed date range, duration, attendee change, location change, notification policy, approval mode, and idempotency key. Separate move, change_duration, replace_participant, cancel, and cancel_and_rebook. Natural-language wording can propose the command; policy code must authorize its scope.
      • Calendar edit permission does not prove business authority to move or cancel the meeting.
      • A request to change one field cannot silently rewrite participants, duration, or disclosure.
      • Ambiguous scope returns one clarification instead of an event write.
    2. 2

      Load the canonical meeting and its people contract

      Read the durable scheduling record, current provider event, organizer, purpose, duration, IANA zones, required and optional participants, substitutes, outreach consent, connected free/busy sources, conversational windows, approvals, invitation state, and prior operations. Treat the provider event as a side effect linked to the record, not the only source of truth.
      • The agent can distinguish the canonical event from stale duplicates or copied holds.
      • Required and optional roles survive the mutation unless the authorized command changes them.
      • Private event titles and unrelated calendar details stay outside the matching record.
    3. 3

      Open one repair revision and pause competing writers

      Create a repair revision with owner, cause, dependency set, expiry, and terminal states. Invalidate proposals derived from the old event time. Pause reminder, webhook, and booking workers that could act on the prior revision. Late participant replies remain evidence only if identity, meeting, scope, time zone, consent, and freshness still fit the repair.
      • Two workers cannot open competing repairs for the same canonical meeting.
      • An old approval cannot authorize a new slot or participant set.
      • A late reply cannot restore a proposal that the organizer withdrew.
    4. 4

      Refresh only the availability the change made stale

      Read current approved Google and Microsoft free/busy for every required person affected by the new window. Ask the unconnected customer for bounded replacement windows through the approved channel when existing evidence no longer covers the range. Normalize source, retrieval or reply time, IANA zone, consent, expiry, and provider error. Silence and missing access remain unknown.
      • Valid participant windows outside the changed scope are preserved rather than requested again.
      • Optional attendance is ranked only after every required person passes.
      • Calendar connection remains helpful and optional, not a prerequisite for participation.
    5. 5

      Choose the smallest repair that satisfies intent

      Intersect required availability, then apply working hours, buffers, deadline, location, notice, and approved substitute rules. Compare move-in-place, duration reduction, participant substitution, and cancel-and-rebook under explicit policy. Return one accountable proposal with local times, participant roles, evidence versions, expiry, provider action, and the human decision still required.
      • The agent does not replace a required person because a smaller optional set is easier to book.
      • A duration or substitute exception names the authority that can approve it.
      • No-overlap returns a bounded date, duration, attendee, or cancellation decision.
    6. 6

      Bind approval and commit one provider mutation

      Bind approval to repair revision, exact slot, duration, required people, optional decision, organizer calendar, disclosure, and provider action. Re-check current required evidence. Use a stable operation key and provider precondition where supported. Prefer updating the canonical event when identity should remain; use cancel-and-rebook only when policy and provider behavior require a new event.
      • Repeated approval or queue delivery returns the existing operation result.
      • The old event is not deleted before the replacement path has an authorized recovery plan.
      • Notification scope is explicit for changed, removed, and added participants.
    7. 7

      Reconcile timeouts and partial provider state

      When an update or delete response is lost, mark the operation uncertain. Read provider state by stored event and correlation identifiers before retry. If a replacement was created but old cancellation failed, quarantine both IDs, stop reminders, and return one recovery action. Never report a clean reschedule from a successful HTTP response alone.
      • Retry follows reconciliation, not panic.
      • Every side effect records attempted payload, provider result, revision, and safe next action.
      • A partial repair stays visible until one canonical event is proven.
    8. 8

      Verify invitations and close the old path

      Read back the final event and verify time, zone, organizer, location, every required participant, optional decision, cancellation state of any superseded event, and invitation delivery or response state available from the provider. Close old proposals and reminders, publish one completion result, and preserve a redacted audit trail for later recovery.
      • One canonical event remains active for the meeting intent.
      • Every participant receives the current invitation or a precise exception is assigned.
      • Completion is the verified repaired meeting, not the update request.

    Event CRUD and meeting repair are different contracts

    A calendar API can update an event resource or delete it. That is necessary plumbing. The scheduling layer must decide whether the actor may make the change, which people are still required, which availability became stale, whether fresh consent or approval is needed, and what to do when the old and new invitation paths overlap.

    A booking link can offer another slot. A poll can collect new votes. A calendar-sync utility can copy the changed block. An AI assistant can draft the apology. Scheduling execution owns the joined state until one current invitation set is verified.

    Preserve meeting identity unless policy says otherwise

    Participants reason about one meeting, even when providers expose several resources and message threads. Keep a stable internal meeting ID across revisions. Map provider event IDs, replacement IDs, cancellation records, participant messages, approvals, and retries back to that identity.

    This makes late replies and webhooks classifiable. The system can reject a response to the superseded slot without discarding the participant’s valid identity or consent record. It can also explain why one provider event was replaced while the business meeting stayed the same.

    Cancellation needs the same authority discipline as booking

    A model may infer that ‘this no longer works’ means cancel. A participant may decline only for themselves. An assistant may be allowed to move the meeting but not remove an executive. Store cancellation authority by actor and scope, then require an explicit command for cancel-one, cancel-for-everyone, cancel-and-rebook, or abandon-repair.

    The terminal result must name what happened: event updated, event replaced and prior event canceled, meeting canceled, or repair waiting on one authorized decision. Anything else sends the human back into reply-all archaeology.

    Run the ghost-event acceptance test

    Book one mixed-provider group meeting. Change a required calendar, submit the same reschedule twice, deliver one reply to the old proposal, add an approved substitute, and hide the first provider update response after it may have succeeded.

    Pass when the old reply cannot revive stale state, valid windows survive, the substitute remains scope-bound, duplicate commands collapse, uncertain state is reconciled, superseded reminders stop, and one current event with every required invitation is read back. Fail when two plausible invitations remain alive.

    Compare post-booking change paths by what they finish

    The useful API does more than mutate an event. It repairs the people contract and proves which invitation is current.

    Execution completion

    Direct calendar event CRUD

    Updates or deletes provider resources; participant re-coordination remains application work.

    Link, poll, or custom repair worker

    Can gather a replacement choice, with canonical-event and invitation cleanup owned by the operator.

    WonderCal execution direction

    Target path carries one authorized repair to a verified current event or a bounded exception.

    Cross-company reach

    Direct calendar event CRUD

    Covers calendars and events available through authenticated provider access.

    Link, poll, or custom repair worker

    Shared surfaces can reach external people, while mixed replies and provider state still need joining.

    WonderCal execution direction

    Designed to combine Google and Microsoft free/busy with bounded windows from unconnected people.

    Optional-sync fallback

    Direct calendar event CRUD

    An event mutation endpoint does not collect replacement windows from an unconnected participant.

    Link, poll, or custom repair worker

    Forms and messages can collect new input, with identity, expiry, and correction handling to build.

    WonderCal execution direction

    Target model keeps connected and conversational evidence inside the same repair revision.

    Recovery and observability

    Direct calendar event CRUD

    Provider errors and IDs exist; meeting-level revisions, uncertain writes, and ghost cleanup remain client work.

    Link, poll, or custom repair worker

    Full control, with locks, idempotency, reconciliation, and terminal proof to maintain.

    WonderCal execution direction

    Target release should expose repair state, evidence, approvals, side effects, retries, and final proof.

    Time to ship

    Direct calendar event CRUD

    Fast for a narrow event edit and incomplete for cross-company participant repair.

    Link, poll, or custom repair worker

    Rational when post-booking coordination is core product behavior the team wants to own.

    WonderCal execution direction

    Worth adopting when the live contract removes repair logic without hiding approval or failure state.

    Frequently asked questions

    What should a meeting rescheduling API return?

    Return meeting ID, repair revision, current event ID, superseded event state, exact slot and zone, required and optional participant results, approval evidence, invitation verification, side-effect status, and any bounded exception. A generic ‘updated’ response is not enough.

    Should an AI agent update an event or cancel and recreate it?

    Choose under explicit policy and provider behavior. Update when meeting identity and invitation continuity should remain. Cancel and rebook when the change cannot be represented safely, but preserve one internal meeting ID, authorize both actions, reconcile each side effect, and prove the old event is closed.

    How do idempotency keys prevent ghost meetings?

    Bind one stable key to the meeting, repair revision, and authorized operation. Repeated workers should return the original operation. If a provider response times out, reconcile the stored event before another write instead of assuming failure.

    Does every participant need a connected calendar to reschedule?

    No. Connected free/busy can reduce work. An unconnected participant can provide bounded replacement windows through an approved response path, with identity, consent, source, IANA time zone, freshness, correction, and expiry recorded.

    Where can developers review WonderCal’s API direction?

    Start with WonderCal for AI agents. Confirm the live meeting-mutation, participant, approval, provider, recovery, and invitation contract before making it a production dependency.

    Primary sources

    Related WonderCal reading

    Make the repair as reliable as the booking

    Test one booked group meeting against stale replies, a changed required calendar, duplicate commands, an uncertain provider update, and one verified current invitation.

    Review WonderCal for AI agents