Group scheduling API completion architecture
Group Scheduling API: Verify Every Invitation Before Reporting Booked
The calendar API returned 201. Your agent announced that everyone was booked. One required attendee was omitted, the Microsoft write created a different zone than the approved proposal, and the conference link never landed in the event participants received. The write succeeded. The meeting did not.
Build invitation verification into the booking path in eight steps
Use one hard meeting with four required people, two optional people, Google and Microsoft calendars, one unconnected participant who supplied a bounded window, one conference link, duplicate booking delivery, and a hidden response after the provider write.
- 1
Define completion in the meeting-intent schema
Persist authenticated organizer, purpose, duration, bounded date range, chosen IANA zone, required and optional participant entities, approved substitutes, organizer calendar, location or conferencing policy, disclosure, approval mode, and terminal proof. State which facts must be verified before the API may return confirmed.- Every required human has one participant identity independent from an attendee string.
- Optional inclusion or exclusion is explicit in the approved revision.
- A proposal, hold, poll winner, or provider request is never terminal success.
- 2
Build the proposal from current connected and conversational evidence
Read approved Google and Microsoft free/busy, then collect bounded availability from anyone who does not connect a calendar. Normalize identity, source, IANA zone, retrieval or reply time, consent, freshness, expiry, and provider errors. Intersect every required person before ranking optional attendance and preferences.- Calendar connection remains optional and helpful.
- Missing access, silence, and stale evidence remain unknown rather than free.
- The proposal records the exact evidence versions that produced it.
- 3
Bind approval to one immutable booking command
Capture meeting ID, revision, proposal ID, exact start and end, IANA zone, organizer calendar, required participant IDs, selected attendee addresses, optional decisions, conferencing policy, disclosure, and approver authority. Derive one booking operation identity from that approved tuple and reject stale approvals.- A participant or calendar change invalidates the old command.
- Repeated client and worker delivery resolve to one logical booking.
- Booking, rescheduling, and cancellation use separate authorized commands.
- 4
Re-check required availability immediately before the write
Refresh every required connected calendar and confirm conversational evidence is still current. Re-run hard constraints, time-zone conversion, buffers, consent, and approval expiry. If the approved slot changed materially, return proposal-stale rather than writing first and apologizing later.- Optional attendance cannot rescue a collision for a required person.
- The chosen local times still match the approved IANA zones across daylight-saving boundaries.
- Provider read errors pause the affected write instead of being treated as free time.
- 5
Write one canonical event and persist provider identities
Create the event on the approved organizer calendar with the exact time, zone, required attendee addresses, approved optional attendees, and conferencing or location data. Persist provider, calendar, event, recurring-series or occurrence identity, operation key, response, notification policy, and side-effect state outside the model loop.- Notification behavior is explicit rather than an unchecked SDK default.
- The organizer event is distinguishable from attendee copies.
- A timeout enters unknown-write-state and does not trigger a blind second create.
- 6
Reconcile uncertain responses before retrying
When the create response is missing or ambiguous, query the exact organizer calendar using stored operation and provider identities. Classify event-present, event-absent, duplicate, moved, permission-lost, attendee-mismatch, or unknown. Retry only the same authorized command after evidence says no equivalent event exists.- A timeout is not assumed to mean failure.
- Duplicate events become repair work before any success response.
- Retries cannot expand participants, disclosure, time, or calendar scope.
- 7
Read back a completion manifest from provider truth
Fetch the canonical event and verify organizer, calendar, start, end, IANA zone, duration, event status, every required attendee address, approved optional decision, conferencing or location, and invitation-notification policy where the provider exposes it. Map addresses back to participant entities and preserve provider-specific limits as explicit unknowns.- One missing required attendee keeps the meeting out of confirmed state.
- A correct attendee count cannot hide the wrong intended human.
- The API distinguishes verified provider fields from inferred delivery claims.
- 8
Repair mismatches and return one honest terminal result
For a safe deterministic mismatch, issue a versioned repair under the original authority and verify again. Route identity, permission, disclosure, organizer, time, or participant-scope conflicts to a named human owner. Return confirmed with the completion manifest only after proof; otherwise return a bounded state with evidence, next action, and retry policy.- The result identifies verified, unknown, and failed completion fields separately.
- All participant outreach, reminders, proposals, writes, repairs, and read-backs share one trace.
- Terminal proof survives model, worker, and provider restarts.
A provider write response is not a meeting receipt
A successful create response proves that a provider accepted and returned a resource under its contract. It does not by itself prove that the resource still matches the approved meeting, that every intended human is represented, or that an uncertain retry did not create another event.
Read-back moves the completion boundary to observable calendar state. The system can then say exactly what it verified and what remains provider-dependent or unknown.
Verification needs participant entities, not only addresses
Calendar providers identify attendees with addresses. Meeting intent identifies humans and roles. The completion manifest must join those layers so two aliases for one person do not satisfy two required roles and a shared mailbox does not replace the intended executive.
That identity join also makes repair safer. A corrected address can create a new revision without losing why the original command targeted another account.
Links, polls, sync utilities, and drafted messages end before proof
A booking link can record a selection. A poll can name a winning option. A sync utility can copy an event. A drafting assistant can announce the time. None automatically proves that the approved hard meeting exists once, on the right organizer calendar, with the right required people and final event details.
Scheduling execution finishes at verified invitation state or a precise exception. WonderCal’s direction is to give agents that wider boundary without making each developer rebuild calendar reconciliation and participant repair.
Run the missing-attendee acceptance test
Approve one mixed-provider meeting, omit one required attendee from the first write, alter the returned zone, duplicate the worker command, and hide the first provider response. Add one optional participant after approval and one attendee alias that resembles a required person.
Pass when stale expansion is rejected, duplicate delivery collapses, uncertain state reconciles, read-back finds the missing human and wrong zone, repair stays inside authority, and confirmed appears only after one correct event is verified. Fail when 201 becomes a victory lap.
Compare booking systems by what they can prove
The production boundary is not event-created. It is one authorized meeting whose final provider state agrees with the approved participant contract.
| Decision vector | Direct calendar create call | Custom booking and verification layer | WonderCal execution direction |
|---|---|---|---|
| Execution completion | Creates a provider resource; meeting-wide intent and participant proof remain application work. | Can verify full completion when participant identity, provider read-back, and repair are built around the write. | Target path returns a verified meeting manifest or one bounded repair state. |
| Cross-company reach | Writes addresses accepted by one organizer provider and credential scope. | The team must join mixed providers, tenants, identities, and external participant channels. | Designed for required and optional people across Google, Microsoft, companies, and unconnected calendars. |
| Optional-sync fallback | Has no evidence path for a participant represented only by a bounded conversation. | Custom logic can connect conversational evidence to the final attendee contract. | Target model carries connected and unconnected participant evidence into the same verified result. |
| Recovery and observability | Returns provider status; duplicates, uncertain writes, identity mismatch, and read-back repair need more state. | Full control, with operation keys, reconciliation, manifests, traces, and operator tools to maintain. | Target release should expose approval, provider identities, writes, retries, mismatches, repairs, and proof. |
| Time to ship | Fast for a basic event; completion assurance remains on the agent team. | Rational when invitation integrity is infrastructure the team intends to own. | Worth adopting when the live contract removes verification work without hiding provider truth. |
Execution completion
Direct calendar create call
Creates a provider resource; meeting-wide intent and participant proof remain application work.
Custom booking and verification layer
Can verify full completion when participant identity, provider read-back, and repair are built around the write.
WonderCal execution direction
Target path returns a verified meeting manifest or one bounded repair state.
Cross-company reach
Direct calendar create call
Writes addresses accepted by one organizer provider and credential scope.
Custom booking and verification layer
The team must join mixed providers, tenants, identities, and external participant channels.
WonderCal execution direction
Designed for required and optional people across Google, Microsoft, companies, and unconnected calendars.
Optional-sync fallback
Direct calendar create call
Has no evidence path for a participant represented only by a bounded conversation.
Custom booking and verification layer
Custom logic can connect conversational evidence to the final attendee contract.
WonderCal execution direction
Target model carries connected and unconnected participant evidence into the same verified result.
Recovery and observability
Direct calendar create call
Returns provider status; duplicates, uncertain writes, identity mismatch, and read-back repair need more state.
Custom booking and verification layer
Full control, with operation keys, reconciliation, manifests, traces, and operator tools to maintain.
WonderCal execution direction
Target release should expose approval, provider identities, writes, retries, mismatches, repairs, and proof.
Time to ship
Direct calendar create call
Fast for a basic event; completion assurance remains on the agent team.
Custom booking and verification layer
Rational when invitation integrity is infrastructure the team intends to own.
WonderCal execution direction
Worth adopting when the live contract removes verification work without hiding provider truth.
Frequently asked questions
What should a group scheduling API verify after booking?
Is an HTTP 201 response enough to mark a meeting confirmed?
How should an API handle a missing required attendee after event creation?
Can invitation delivery be fully verified from a calendar API?
Where can developers review WonderCal’s completion direction?
Primary sources
- Google Calendar API: Events insert — official Google event-creation method, notification parameters, scopes, and response
- Google Calendar API: Events get — official Google event read operation for canonical-state verification
- Microsoft Graph: Create event — official Microsoft event-creation operation, permissions, attendees, and transaction identity
- Microsoft Graph: Get event — official Microsoft event read operation for provider-state checks
- Model Context Protocol: Tools — official MCP tool schemas, calls, results, errors, and security guidance
Make confirmed a proof-bearing state
Omit an attendee, change a zone, duplicate the command, and hide the provider response. Keep the meeting unconfirmed until one correct event survives read-back.
Review WonderCal for AI agents