AI scheduling agent identity architecture
AI Scheduling Agent Identity Resolution: Stop Booking the Wrong Participant
Priya has a work address, a personal address, a Microsoft calendar, and an assistant replying from a shared mailbox. The agent sees four strings and calls them four people. Now Priya is counted twice, the required role appears satisfied, and the invitation lands on the calendar she never checks. The overlap math was correct. The identity model was not.
Build participant identity resolution in eight steps
Use one group meeting with an organizer, three required people, one optional observer, Google and Microsoft calendars, a shared executive-assistant mailbox, one person with two email aliases, and one unconnected participant replying through a private link. Duplicate two provider events and correct one identity after proposals exist.
- 1
Write a meeting-intent schema with participant entities
Persist authenticated organizer, purpose, duration, bounded date range, deadline, IANA zones, required and optional roles, approved substitutes, outreach policy, approval mode, organizer calendar, and terminal proof. Give each intended human a participant ID that is independent from email, provider subject, calendar ID, or display name.- Required attendance is attached to a participant entity and role.
- Aliases can change without changing the human’s meeting identity.
- A transcript is provenance, not the canonical participant table.
- 2
Store identity claims with source, authority, and freshness
Represent work email, personal email, provider subject, tenant, calendar, phone, reply token, delegate relationship, display name, locale, and IANA zone as claims. Record who asserted each claim, how it was verified, what actions it permits, when it expires, and whether it conflicts with another claim.- A matching display name is never sufficient proof.
- A calendar connection proves access to a subject, not every business role.
- Revoked or stale aliases stop authorizing reads, outreach, or writes.
- 3
Separate the human, account, calendar, and delegate
Keep four different objects: the intended person, an addressable account, an authorized calendar subject, and an actor allowed to respond or approve for that person. A shared mailbox may carry a message without becoming the attendee. An executive assistant may coordinate under delegate rules without being the executive’s calendar identity.- One account cannot silently stand in for two people.
- Delegate authority has scope, action, source, and expiry.
- The invitation target and the conversation actor remain independently auditable.
- 4
Resolve connected free/busy inside the consent boundary
Map each authorized Google or Microsoft calendar subject to one participant claim, then read private free/busy for the approved interval. Keep provider errors, missing access, and ambiguous account ownership as unknown. Do not merge calendars across people merely because addresses forward or names match.- Calendar detail stays private while availability retains source and retrieval time.
- A person with two calendars can contribute one combined availability result under explicit rules.
- Required and optional roles are evaluated after identity resolution, not before.
- 5
Bind conversational outreach and replies to opaque meeting context
For an unconnected person, send one bounded request through an approved channel with purpose, local time, deadline, reminder cap, correction, and opt-out. Bind the response path to meeting ID, revision, participant ID, channel message ID, and nonce or equivalent opaque context. Treat reply text as availability data, never as authority to rename people or add attendees.- Forwarded links and replies trigger identity review rather than silent reassignment.
- A duplicate delivery maps to one participant evidence record.
- Calendar connection remains optional and helpful.
- 6
Normalize time zones, aliases, and corrections as revisions
Convert bounded windows into instants while preserving original wording and IANA zone. When a person corrects an address, zone, or delegate, create a new identity revision, identify proposals that used the old claim, and refresh only affected evidence. Never rewrite history in place.- A daylight-saving boundary cannot make two aliases look like conflicting people.
- Old reply and event identities stay available for reconciliation.
- A correction cannot expand consent or required attendance by itself.
- 7
Make proposals and booking idempotent over participant IDs
Intersect current required participant evidence, rank optional people and preferences afterward, and bind approval to participant IDs, roles, chosen aliases, exact slot, evidence versions, organizer calendar, and disclosure. Use one booking operation key. If provider writes duplicate or time out, reconcile attendee identities before retry.- Two aliases for one person do not count as two required attendees.
- The wrong account cannot satisfy a required role because it shares a name.
- Repeated approval returns one canonical event and invitation set.
- 8
Verify intended humans, not only attendee strings
Read back organizer, time, zone, provider event identities, every required attendee address, optional decision, and invitation state. Join those addresses to the approved participant revision and flag ambiguity. Trace identity claims, resolutions, delegate acts, outreach, corrections, proposals, writes, retries, and terminal proof with private values redacted where possible.- Every required participant entity maps to one verified invitation target.
- Duplicate or orphan attendee strings become repair work, not success.
- Operators can explain why the system believed each account represented each person.
Email is an address, not a person
Calendar systems often expose attendees through addresses because addresses are useful provider identifiers. Scheduling intent is about humans and roles. The agent needs both layers and an explicit mapping between them.
This distinction prevents a common false positive: all required attendee strings are present, yet the intended decision-maker never received the invitation. Completion must join provider facts back to the authorized participant contract.
Identity uncertainty should stop side effects, not the whole product
One ambiguous alias does not require restarting every participant. Preserve valid free/busy, conversational windows, approvals, and outreach for unaffected people. Open one bounded exception that asks the organizer or delegate to resolve the conflicting identity claim.
Once resolved, issue a new meeting revision and recompute only dependencies touched by the change. That is cheaper and safer than letting a model guess or forcing everyone back into reply-all archaeology.
Links, polls, calendar sync, and drafted outreach inherit identity risk
A booking link knows the account that clicked. A poll knows the label someone entered. A calendar-sync utility knows provider subjects. A drafting assistant knows message recipients. None automatically proves those objects match the meeting’s intended humans, roles, delegates, and consent boundaries.
Scheduling execution keeps identity as durable meeting state. WonderCal’s direction is to join connected calendars and conversational replies, resolve the intended group, and return one verified booking or one precise identity exception.
Run the duplicate-Priya acceptance test
Give one required person two email aliases and one connected calendar. Let a delegate reply from a shared mailbox, duplicate two worker deliveries, correct the person’s IANA zone, change one calendar after proposal, and hide the first event-write response.
Pass when aliases collapse under one participant entity, delegate authority stays scoped, forwarded context cannot add a person, stale proposals revoke, duplicate writes reconcile, and every required human maps to one verified invitation. Fail when the attendee count is correct only because Priya was counted twice.
Compare identity handling by what the system can prove
The winning architecture maps people, roles, accounts, calendars, delegates, and replies without making an email string carry every meaning.
| Decision vector | Direct calendar API integration | Custom participant identity service | WonderCal execution direction |
|---|---|---|---|
| Execution completion | Writes attendee addresses; proof that they represent the intended humans remains application work. | Can own participant resolution when joined to scheduling state, proposals, writes, and verification. | Target path carries resolved participant entities to one verified invitation set or a bounded exception. |
| Cross-company reach | Covers provider accounts and calendars available to the integration. | Can join aliases and tenants, with external reply channels still to build. | Designed for Google, Microsoft, delegates, and bounded replies from unconnected external people. |
| Optional-sync fallback | Does not identify a conversational participant outside provider accounts. | Custom reply tokens and consent policy can map external evidence to a person. | Target model joins optional calendar connection and participant replies under one governed identity. |
| Recovery and observability | Provider IDs and errors are visible; alias history, delegate scope, and correction impact need more state. | Full control, with claim provenance, revisions, redaction, and audits to maintain. | Target release should expose identity source, authority, revisions, side effects, and final proof. |
| Time to ship | Fast when one email equals one person; risk grows with delegates, aliases, tenants, and shared mailboxes. | Rational when participant identity is core infrastructure the team wants to own. | Worth adopting when the live contract removes identity repair without hiding resolution rules. |
Execution completion
Direct calendar API integration
Writes attendee addresses; proof that they represent the intended humans remains application work.
Custom participant identity service
Can own participant resolution when joined to scheduling state, proposals, writes, and verification.
WonderCal execution direction
Target path carries resolved participant entities to one verified invitation set or a bounded exception.
Cross-company reach
Direct calendar API integration
Covers provider accounts and calendars available to the integration.
Custom participant identity service
Can join aliases and tenants, with external reply channels still to build.
WonderCal execution direction
Designed for Google, Microsoft, delegates, and bounded replies from unconnected external people.
Optional-sync fallback
Direct calendar API integration
Does not identify a conversational participant outside provider accounts.
Custom participant identity service
Custom reply tokens and consent policy can map external evidence to a person.
WonderCal execution direction
Target model joins optional calendar connection and participant replies under one governed identity.
Recovery and observability
Direct calendar API integration
Provider IDs and errors are visible; alias history, delegate scope, and correction impact need more state.
Custom participant identity service
Full control, with claim provenance, revisions, redaction, and audits to maintain.
WonderCal execution direction
Target release should expose identity source, authority, revisions, side effects, and final proof.
Time to ship
Direct calendar API integration
Fast when one email equals one person; risk grows with delegates, aliases, tenants, and shared mailboxes.
Custom participant identity service
Rational when participant identity is core infrastructure the team wants to own.
WonderCal execution direction
Worth adopting when the live contract removes identity repair without hiding resolution rules.
Frequently asked questions
How should an AI scheduling agent identify meeting participants?
Can an email address be the participant ID?
How should delegated scheduling replies be handled?
What happens when participant identity is ambiguous?
Where can developers review WonderCal’s agent scheduling direction?
Primary sources
- NIST SP 800-63A: Identity proofing and enrollment — official identity-proofing concepts, evidence, resolution, validation, and verification
- Google Calendar API: Freebusy query — official Google calendar identifiers, availability responses, time-zone fields, and errors
- Google Calendar API: Events get — official Google event resource retrieval for organizer and attendee reconciliation
- Microsoft Graph: calendar getSchedule — official Microsoft availability operation, schedule identities, permissions, and time-zone behavior
- Microsoft Graph: Get event — official Microsoft event read operation for attendee and provider-state checks
- Model Context Protocol: Tools — official MCP tool schemas, user confirmation, errors, timeouts, and security guidance
Test the person behind every attendee string
Add aliases, a shared mailbox, a delegate, a corrected zone, duplicate deliveries, and one hidden write response. Require one invitation for every intended human.
Review WonderCal for AI agents