AI agents and developer operations
AI Scheduling Agent Observability: Trace a Hard Meeting End to End
A scheduling agent can return a cheerful success message while the required Microsoft attendee never received an invitation. It can also look stuck while it is correctly waiting for an unconnected participant in another time zone. Request logs cannot tell those two stories apart. Meeting-level observability can.
Build meeting-level observability in eight steps
Use one fixture throughout: four required participants, one optional observer, two companies, Google and Microsoft calendars, and one person without calendar access. The trace must explain the meeting from instruction to confirmed invitations, even when that journey spans two days and several workers.
- 1
Create one durable meeting identity
Assign ameeting_request_idbefore calendar reads, participant outreach, or model planning. Store the original instruction plus a typed brief: organizer, purpose, duration, date window, deadline, IANA time zone, required people, optional people, approval policy, and allowed contact channels. Increment a revision whenever a field that can change the result is edited.- Propagate the meeting ID through model, worker, provider, messaging, approval, and booking records.
- Do not use a model run ID, HTTP request ID, or provider event ID as the meeting identity.
- Bind every proposal and approval to the revision that produced it.
- 2
Model participant state as first-class telemetry
Give every person a role, required flag, time zone, availability source, consent state, outreach state, response freshness, and blocking reason. Use explicit states such asconnected,awaiting_response,needs_clarification,declined,available, andprovider_error. A meeting trace should answer who is blocking progress and why without reading an email thread.- Silence from a required person is a wait state, not consent or availability.
- An optional decline changes attendance scoring, not required quorum.
- Keep private event titles and participant message bodies out of routine trace attributes.
- 3
Version every piece of availability evidence
Normalize connected Google and Microsoft free/busy plus conversational responses into intervals with participant ID, source, retrieved or received time, time zone, source version, and error state. Record query bounds and provider status. Never turn a missing calendar response into open time. Mark proposals stale when required evidence changes.- Record whether evidence came from Google, Microsoft, or a participant response.
- Distinguish denied access, expired access, throttling, partial response, and provider outage.
- Expose evidence age without exposing event metadata.
- 4
Emit domain events instead of prose logs
Record events such asbrief_validated,availability_requested,participant_replied,proposal_generated,approval_requested,booking_started,booking_reconciled, andmeeting_confirmed. Each event carries meeting ID, revision, actor class, attempt, outcome, reason code, and safe timing fields. Free-form logs can add detail, but the event vocabulary powers reliable queries.- Separate a business state such as required decline from an infrastructure error.
- Do not record secrets, access tokens, calendar descriptions, or full participant messages.
- Keep reason codes stable across REST, MCP, worker, and provider wrappers.
- 5
Trace retries at the side-effect boundary
Give calendar reads, participant messages, reminders, approvals, and event writes their own spans or activities. Record attempt number, retry policy, provider request ID where safe, and final classification. A failed Google read can retry without resending outreach. A booking timeout must reconcile the organizer calendar before another write.- Use idempotency keys for meeting creation, outreach, and booking commands.
- Mark retryable, terminal, and human-decision outcomes separately.
- Alert when the same side effect succeeds more than once for one idempotency key.
- 6
Measure waits without calling people errors
Track active processing separately from time waiting on a required participant, organizer approval, provider recovery, or the next permitted reminder. Set deadlines and wake timers on the meeting record. A healthy two-day coordination job should not page an operator for being two days old if it is inside policy and has a known next action.- Every waiting state has an owner, deadline, and next wake condition.
- Alert on expired deadlines, exhausted reminders, missing timers, and state with no allowed transition.
- Report participant wait, provider wait, and internal processing as different measures.
- 7
Instrument the single booking commit
Before writing, record the approved proposal, attendee set, organizer calendar, fresh evidence version, and booking key. After the provider call, persist the returned event identifier and fetch or reconcile the event. Completion proof includes start, end, time zone, required attendees, optional attendees, organizer calendar, and invitation dispatch state.- An HTTP success without verified event shape is not meeting completion.
- An uncertain response enters reconciliation rather than blind retry.
- Partial invitation or attendee mismatch becomes a recoverable exception with evidence.
- 8
Build dashboards around meeting outcomes
Start with meeting counts by state, confirmation rate, bounded-exception rate, time in each wait class, stale-evidence rebuilds, provider failures, clarification loops, approval expiry, duplicate attempts, and reconciliation outcomes. Sample traces by reason code. Let an operator move from a chart to one redacted meeting timeline and one safe action.- A dashboard distinguishes booked, declined, cancelled, expired, and needs-review outcomes.
- Metrics can be segmented by provider and workflow version without exposing participant identity.
- Runbooks name when to retry, reconnect, request a decision, reclaim, or stop.
A model trace is not a meeting trace
Model telemetry can show prompts, tool calls, latency, token use, and output. That matters. It still ends at the model boundary. A hard meeting keeps moving after the turn finishes: a participant replies later, a calendar changes, an approval expires, or a provider acknowledges a write after the worker times out.
The meeting trace is the parent story. Model runs, MCP calls, REST requests, calendar reads, participant messages, timers, approvals, and booking attempts attach to it. This structure lets a new worker or operator recover the job without asking the model to reconstruct truth from old prose.
Observability must preserve calendar privacy
Google documents a free/busy-only sharing level that hides event names and details. Microsoft Graph documents a least-privileged permission for its availability operation. Your telemetry should preserve the same boundary. Store busy intervals, evidence freshness, permission class, and failure reason—not the title of a board meeting or a candidate interview.
Apply redaction before data reaches logs. Hash or tokenize participant identifiers when aggregate analysis does not require identity. Restrict access to detailed timelines. Set retention by operational need rather than keeping every message forever because storage is cheap.
Scheduling execution has a terminal proof
A poll can report responses. A booking link can report a selection. A calendar-sync utility can report copied events. An AI assistant can report that outreach was drafted. Those are valid component outcomes, but none proves that the required group is booked.
Scheduling execution begins with the instruction and ends with one verified event or one bounded exception. The trace covers required and optional participants, connected free/busy, optional-sync fallback, time zones, consent, overlap, approval, retries, booking, invitations, and recovery. That outcome boundary is what makes observability useful to product teams rather than merely interesting to infrastructure teams.
Run the broken-success acceptance test
Force six cases: an optional participant declines, a required participant replies without a time zone, Microsoft returns partial availability, the organizer edits the date window, the booking response times out after the event is created, and one required invitation is missing. Restart the worker between collection and booking.
Pass only when the trace shows the current brief, every participant state, source freshness, each retry, the approved proposal, reconciliation, and either one corrected canonical event or a bounded operator decision. Fail when the top-level span says success while the required attendee set is wrong.
Compare observability by the scheduling work it can explain
Provider logs and agent traces are useful inputs. The question is whether an operator can explain and recover one cross-company meeting from instruction to invitation.
| Decision vector | Calendar-provider and HTTP logs | Generic AI-agent tracing | WonderCal execution direction |
|---|---|---|---|
| Execution completion | Shows reads and writes against one provider, but not the full participant, approval, and invitation outcome. | Shows model and tool activity, but may end before people reply or calendar state settles. | Target trace closes only on verified invitations or a bounded exception with current evidence. |
| Cross-company reach | Separate Google, Microsoft, tenant, and application records must be joined by your team. | Can correlate tools if the meeting identity survives clients, workers, and elapsed time. | Designed to follow required and optional people across providers, companies, and unconnected calendars. |
| Optional-sync fallback | No participant-message or reply state unless your application builds and instruments it. | Can show a messaging tool call, but not necessarily consent, reminder policy, parsed availability, or freshness. | Target model keeps connected and conversational evidence in one participant timeline. |
| Recovery and observability | Detailed provider evidence with no meeting-level reason codes or next action by default. | Strong reasoning visibility; durable retries, reconciliation, and human repair still need domain state. | Target release should expose meeting states, reason codes, safe replay, reconciliation, and operator runbooks. |
| Consent and privacy | Provider permissions are visible, while application outreach authority and telemetry retention remain elsewhere. | Tool calls can reveal sensitive inputs unless schemas, confirmation, and redaction are designed carefully. | Target trace separates calendar reads, participant contact, approval, booking, and redacted evidence. |
| Time to ship | Fast for debugging one integration; joining the hard-meeting story becomes application work. | Fast for model and tool debugging; meeting-level semantics and recovery remain product work. | Worth adopting when the live execution layer includes the meeting telemetry and repair path your team would otherwise own. |
Execution completion
Calendar-provider and HTTP logs
Shows reads and writes against one provider, but not the full participant, approval, and invitation outcome.
Generic AI-agent tracing
Shows model and tool activity, but may end before people reply or calendar state settles.
WonderCal execution direction
Target trace closes only on verified invitations or a bounded exception with current evidence.
Cross-company reach
Calendar-provider and HTTP logs
Separate Google, Microsoft, tenant, and application records must be joined by your team.
Generic AI-agent tracing
Can correlate tools if the meeting identity survives clients, workers, and elapsed time.
WonderCal execution direction
Designed to follow required and optional people across providers, companies, and unconnected calendars.
Optional-sync fallback
Calendar-provider and HTTP logs
No participant-message or reply state unless your application builds and instruments it.
Generic AI-agent tracing
Can show a messaging tool call, but not necessarily consent, reminder policy, parsed availability, or freshness.
WonderCal execution direction
Target model keeps connected and conversational evidence in one participant timeline.
Recovery and observability
Calendar-provider and HTTP logs
Detailed provider evidence with no meeting-level reason codes or next action by default.
Generic AI-agent tracing
Strong reasoning visibility; durable retries, reconciliation, and human repair still need domain state.
WonderCal execution direction
Target release should expose meeting states, reason codes, safe replay, reconciliation, and operator runbooks.
Consent and privacy
Calendar-provider and HTTP logs
Provider permissions are visible, while application outreach authority and telemetry retention remain elsewhere.
Generic AI-agent tracing
Tool calls can reveal sensitive inputs unless schemas, confirmation, and redaction are designed carefully.
WonderCal execution direction
Target trace separates calendar reads, participant contact, approval, booking, and redacted evidence.
Time to ship
Calendar-provider and HTTP logs
Fast for debugging one integration; joining the hard-meeting story becomes application work.
Generic AI-agent tracing
Fast for model and tool debugging; meeting-level semantics and recovery remain product work.
WonderCal execution direction
Worth adopting when the live execution layer includes the meeting telemetry and repair path your team would otherwise own.
Frequently asked questions
What is AI scheduling agent observability?
Which ID should connect scheduling traces?
How do you monitor a scheduling job that waits for people?
Should calendar event details appear in logs?
Where can developers evaluate WonderCal?
Primary sources
- OpenTelemetry: Traces — official trace, span, parent-child, event, link, status, and attribute concepts
- Google Calendar API: Freebusy query — official Google free/busy bounds, response shape, time zone, and error fields
- Microsoft Graph: calendar getSchedule — official Microsoft availability operation and least-privileged permission guidance
- RFC 9110: Idempotent methods — HTTP retry semantics used as a base for safe command design
- Model Context Protocol: Tools — official tool schemas, human confirmation, output validation, timeouts, and security guidance
Make every hard meeting explainable
Evaluate the live WonderCal release against one end-to-end trace: durable intent, participant state, private evidence, optional-sync fallback, safe retries, reconciliation, and verified invitations.
Review WonderCal for AI agents